
Tengo la cadena que se usó en una aplicación web con hash md5 para generar un hash. También tengo el hachís. Pero el md5 de la cadena no coincide con el hash, así que supongo que hay sal involucrada. ¿Existe algún software que pueda ayudarme a determinar la sal?
Respuesta1
En funciones hash estándar (por ejemplo, contraseñas UNIX en /etc/shadow), la sal se almacena como parte del hash.
Pase el valor hash almacenado como sal y debería obtener el resultado correcto.
El valor de la contraseña con hash en /etc/shadow es en realidad un registro delimitado por $. Por ejemplo, tenemos este hash de la contraseña 'blarg':
$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0
Hay tres campos separados por $ que son
- La función hash (en este caso '1', que representa MD5)
- La sal (que es 'KfcI/JTQ')
- El valor hash (que es 'b5VTf4i9Mnf6QFgLuVZNM0')
Si usa mkpasswd varias veces, el hash cambiará.
$ mkpasswd -m md5 blarg
$1$Gst52IWk$8ARVeSlpkcZOlyKV10Slu/
$ mkpasswd -m md5 blarg
$1$JeqRviA/$GnH/AvGnZEG9wLfJjiaAt1
Sin embargo, al pasar el salt (es decir, el segundo campo) del valor hash anterior, podemos compararlo con el hash original:
$ mkpasswd -m md5 -S KfcI/JTQ blarg
$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0
También puede pasar el hash completo de la contraseña (aunque omitiendo la función hash).
$ mkpasswd -m md5 -S KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0 blarg
$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0
En Linux, el tipo de hash se puede controlar en /etc/login.defs. Tenga mucho cuidado al cambiar esto, puede quedar completamente fuera del sistema. Sugiero leer atentamente la página del manual, específicamente mirando los encabezados MD5_CRYPT_ENAB y ENCRYPT_METHOD.