Reproduire les mots de passe / etc / shadow

0

J'essaie de reproduire manuellement un hachage de mot de passe / etc / shadow à partir du mot de passe en texte clair et du sel. Prenons comme exemple l'entrée shadow suivante:

user:$1$/M$5GK8.h6z8o0WQLEOWC.YI/:16764:0:99999:7:::

le mot de passe en texte clair ici est "toor". J'ai essayé d'ajouter (et d'ajouter) du sel au mot de passe et de le hacher à l'aide de MD5, mais je n'obtiens pas le même résultat que dans le fichier de mots de passe. Existe-t-il d'autres transformations que le système effectue sur le texte en clair pour en déduire le hachage? la commande que j'ai utilisée pour générer le hachage:

echo -n "/Mtoor"| md5sum

Autre chose que j'ai remarquée, le hachage enregistré dans le fichier correspond à 176 bits, alors que le md5 traditionnel correspond à 128 bits.

imaibou
la source
1
Ce n'est pas haché avec MD5, mais MD5Crypt .
Otus

Réponses:

0

Comme @otus l'a noté, les hachages ne sont pas bruts. MD5 - crypt () utilise MD5Crypt , ce qui implique quelques douzaines d'itérations MD5 (le montant exact diffère réellement en fonction du hachage lui-même), du décalage de bits et de la poussière de lutin.

/* Then just as many characters of the MD5(pw,salt,pw) */

/* On a 60 Mhz Pentium this takes 34 msec */

/* Then something really weird... */

En bref, ce n'est pas quelque chose que vous pouvez reproduire en utilisant basic md5sum, mais en appelant la fonction libc crypt (3) , ou en utilisant des outils tels que ceux mkpasswdqui font la même chose:

# echo -n toor | openssl passwd -stdin -1 -salt /M
$1$/M$5GK8.h6z8o0WQLEOWC.YI/

De plus, le sel et le hachage dans la sortie crypt () sont codés à l'aide d'une Base64 légèrement modifiée (6 bits par octet), tandis que md5sumle hachage est imprimé en hexadécimal (4 bits par octet), de sorte que la différence de longueur de sortie soit prise en compte. .

Grawity
la source