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.
authentication
md5
imaibou
la source
la source
Réponses:
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.
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 ceuxmkpasswd
qui font la même chose: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
md5sum
le hachage est imprimé en hexadécimal (4 bits par octet), de sorte que la différence de longueur de sortie soit prise en compte. .la source