¿Cómo encontrar el algoritmo hash utilizado para hash contraseñas?


11

Tengo la contraseña de trabajo y puedo ver el hash (/ etc / passwd). ¿Cómo encuentro el algoritmo de hash utilizado para cambiar la contraseña, sin probar manualmente diferentes algoritmos hasta encontrar una coincidencia?


1
¿Qué variante de Unix estás usando?
— Kusalananda

3
Estoy muy sorprendido de que puedas ver un hash adentro /etc/passwd. Pensé que todas las variantes de Unix / Linux se habían movido a una división con /etc/shadowaños atrás. (Sé que tales sistemas todavía apoyan en los hashes passwd, pero no conozco ningún utilidades que los ponen allí más Un sistema embebido, tal vez.?
— roaima

Es OpenWrt Backfire 10.03. Los hashes todavía se almacenan /etc/passwdaquí. Sin embargo, esto no cambia el asunto de la pregunta. ¿Lo hace?
— Dorin Botan

1
Solo para que conste: los BSD tienen dos archivos Berkeley DB, roaima. Todavía está dividido, pero no lo es /etc/shadowy no tienen ningún archivo con ese nombre.
— JdeBP

Respuestas:


27

Esto está documentado en crypt(3)la página del manual , que puede encontrar en shadow(5)la página del manual o passwd(5)en la . Esos enlaces son apropiados para los sistemas modernos basados ​​en Linux; la descripción hay:

Si salt es una cadena de caracteres que comienza con los caracteres "$ id $" seguidos de una cadena opcionalmente terminada por "$", el resultado tiene la forma:

$id$salt$encrypted

id identifica el método de encriptación utilizado en lugar de DES y esto determina cómo se interpreta el resto de la cadena de contraseña. Se admiten los siguientes valores de id:

ID  | Method
─────────────────────────────────────────────────────────
1   | MD5
2a  | Blowfish (not in mainline glibc; added in some
    | Linux distributions)
5   | SHA-256 (since glibc 2.7)
6   | SHA-512 (since glibc 2.7)

Pez globo, también conocido como bcrypt, también se identifica por medio de prefijos 2, 2b, 2x, y 2y(véase la documentación del PassLib ).

Por lo tanto, si una contraseña cifrada se almacena en el formato anterior, puede encontrar el algoritmo utilizado mirando la identificación ; de lo contrario, es el cryptalgoritmo DES predeterminado (con un hash de 13 caracteres), o cryptel DES "grande" (extendido para admitir contraseñas de 128 caracteres, con hashes de hasta 178 caracteres de longitud), o DES extendido BSDI (con un _prefijo seguido de un hash de 19 caracteres).

Algunas distribuciones usan libxcrypt, que admite y documenta bastantes métodos más:

  • y: yescrypt
  • gy: gost-yescrypt
  • 7: scrypt
  • sha1: sha1crypt
  • md5: SunMD5

Otras plataformas admiten otros algoritmos, así que revise la página de cryptmanual allí. Por ejemplo, OpenBSDcrypt(3) solo es compatible con Blowfish, que se identifica con la identificación "2b".


2
Las contraseñas basadas en DES son, por cierto, siempre de 13 caracteres y consisten en caracteres alfanuméricos, así como .y /. Los primeros 2 caracteres son la sal y los otros 11 son un valor hash (más o menos). Y es el único de los algoritmos admitidos por el cryptcual es tan débil que no puede compensarlo eligiendo una contraseña más segura.
— Kasperd
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.