Tengo la contraseña de trabajo y puedo ver el hash (/etc/passwd). ¿Cómo encuentro el algoritmo hash utilizado para codificar la contraseña, sin probar manualmente diferentes algoritmos hasta que encuentre una coincidencia?
Respuesta aceptada:
Esto está documentado en crypt(3)
La página de manual de , que puede encontrar a través de shadow(5)
la página de manual, o passwd(5)
's. Esos enlaces son apropiados para los sistemas modernos basados en Linux; la descripción que hay es:
Si sal es una cadena de caracteres que comienza con los caracteres “$id $”
seguido de una cadena terminada opcionalmente en “$”, entonces el resultado
tiene la forma:
$id$salt$encrypted
identificación identifica el método de cifrado 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)
Blowfish, también conocido como bcrypt
, también se identifica con los prefijos 2
, 2b
, 2x
y 2y
(consulte la documentación de PassLib).
Entonces, si una contraseña cifrada se almacena en el formato anterior, puede encontrar el algoritmo utilizado mirando el id; de lo contrario, es crypt
el algoritmo DES predeterminado de (con un hash de 13 caracteres) o crypt
"grande" DES (ampliado para admitir contraseñas de 128 caracteres, con hash de hasta 178 caracteres de longitud) o DES ampliado de 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
:sicryptgy
:gost-yescrypt7
:cifradosha1
:sha1cryptmd5
:SunMD5
Otras plataformas admiten otros algoritmos, así que comprueba la crypt
página de manual allí. Por ejemplo, crypt(3)
de OpenBSD solo es compatible con Blowfish, que identifica mediante el id “2b”.