【Asqueroso】 Un gestor de contraseñas que se puede hacer solo con .bashrc

5 min

language: ja bn en es hi pt ru zh-cn zh-tw

Hola, soy un inútil.
Presento un asqueroso gestor de contraseñas.

.bashrc

He escrito lo siguiente en mi .bashrc.
Por cierto, como está codificado con base91, es obligatorio instalar base91.

pp2091g() {
  local dir="$HOME/.$FUNCNAME"
  if [[ -z "$1" || -z "$2" ]]; then
    echo "Usage: $FUNCNAME <string> <filename>"
    return 1
  fi

  if [[ ! -d $dir ]]; then
    mkdir -p $dir
  fi

  if [[ -f $dir/$2 ]]; then
    cat $dir/$2 | base91 | cut -c -20 | tr -d "\n" ; echo
    return 0
  fi

  echo -n "$1" | sha384sum | awk '{print $1}' | xxd -r -p > $dir/$2
  echo "Generated and saved to $dir/$2"
}

En otras palabras, para la parte de generación, consulte lo siguiente:
Quiero una contraseña segura con base91. - SOULMINIGRIG
Es un gestor de contraseñas realmente simple.
Sin embargo, si hay muchos destinos SSH, es difícil incluir caracteres especiales de esta manera tan simple, por eso lo he hecho así.

¿No te pasa que puedes recordar contraseñas cortas para sitios web, pero las largas son imposibles?
Por lo tanto, al usar esto, se pueden generar contraseñas relativamente fuertes con cadenas cortas, y como se codifica un archivo que ha sido completamente binario a partir de hexadecimal, la contraseña en sí no se guarda en texto plano.

Así es como se ve

Así es como se ve.

$ pp2091g string file
Generated and saved to /home/haturatu/.pp2091g/file
$ pp2091g string file
_+f2t2X9JyLf?S(GplK~

Cuando los caracteres especiales no son compatibles

Si los caracteres especiales no son compatibles con la codificación base91, se utiliza una cadena larga codificada en base64.
Es necesario porque muchos sitios japoneses no admiten todos los caracteres especiales.

pp6464g() {
  local dir="$HOME/.$FUNCNAME"
  if [[ -z "$1" || -z "$2" ]]; then
    echo "Usage: $FUNCNAME <string> <filename>"
    return 1
  fi

  if [[ ! -d $dir ]]; then
    mkdir -p $dir
  fi

  if [[ -f $dir/$2 ]]; then
    cat $dir/$2 | base64 | tr -d "\n" ; echo
    return 0
  fi

  echo -n "$1" | sha384sum | awk '{print $1}' | xxd -r -p > $dir/$2
  echo "Generated and saved to $dir/$2"
}

Inconvenientes

Un archivo guardado una vez puede ser visualizado por cualquier strings.

$ pp2091g string file
_+f2t2X9JyLf?S(GplK~
$ pp2091g stringa file
_+f2t2X9JyLf?S(GplK~

Porque

  if [[ -f $dir/$2 ]]; then
    cat $dir/$2 | base64 | tr -d "\n" ; echo
    return 0
  fi

Es porque aquí simplemente se hace un cat del binario y se codifica tal cual.
Además, si se usa la misma strings, se obtendrá la misma contraseña.

Ventajas

Es fácil de gestionar. Como está basado en archivos, se puede usar directamente en otro servidor si es necesario.
También es fácil de generar. Incluso si se pierde el archivo, se puede recuperar si se recuerda el nombre del archivo y la strings.
El único propósito de este gestor de contraseñas es la sensación de querer ser lo más independiente posible de factores externos y tener contraseñas relativamente seguras, aunque solo se puedan recordar contraseñas cortas.
Puede ser resistente a los ataques de fuerza bruta, pero si el shell es comprometido, es vulnerable. Sin embargo, si solo se obtiene la contraseña sin saber la dirección de correo electrónico/número de teléfono y dónde se usa, no tiene mucho sentido.
Además, al ser un script de shell simple, es fácil de personalizar y modificar. Quizás sha256sum sea mejor que sha384sum, y también es fácil cambiar la codificación de caracteres y la longitud de la cadena a tu gusto.

Hasta la próxima. Saludos.

Related Posts