web-dev-qa-db-fra.com

Comment trouver l'algorithme de hachage utilisé pour les mots de passe hachaux?

J'ai le mot de passe de travail et peut voir le hasch (/ etc/passwd). Comment trouver l'algorithme de hachage utilisé pour hachaîner le mot de passe, sans essayer manuellement différents algorithmes jusqu'à ce que je trouve un match?

11
Dorin Botan

Ceci est documenté dans crypt(3) 's Manpage , que vous pouvez trouver via shadow(5)' s Manpage , ou passwd(5) 's . Ces liens sont appropriés pour les systèmes modernes à base de Linux; La description il y a:

Si sel est une chaîne de caractères commençant par les caractères "$ ID $" suivi d'une chaîne éventuellement terminée par "$", alors le résultat a la forme:

$id$salt$encrypted

ID identifie la méthode de cryptage utilisée à la place de DES et détermine alors comment le reste de la chaîne de mot de passe est interprété. Les valeurs suivantes de l'ID sont prises en charge:

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, également connu sous le nom de bcrypt, est également identifié par les préfixes 2, 2b, 2x et 2y (voir Passlib's Documentation ).

Donc, si un mot de passe haché est stocké dans le format ci-dessus, vous pouvez trouver l'algorithme utilisé en regardant l'ID ; sinon c'est crypt s défaut DES algorithme (avec un hachage de 13 caractères), ou "gros" crypt 's DES (étendu à Supporte 128 mots de passe de caractères, avec hachage jusqu'à 178 caractères), ou BSDI étendu DES (avec un préfixe _ suivi d'un hachage de 19 caractères).

Certaines distributions utilisent libxcrypt qui prend en charge et Documents Pas de plus de plusieurs méthodes:

  • y: Yescrypt
  • gy: gost-yescrypt
  • 7: SCRYPT
  • sha1: sha1crypt
  • md5: sunmd5

D'autres plates-formes prennent en charge les autres algorithmes, alors vérifiez le manuel crypt là-bas. Par exemple, OpenBSD's crypt(3) ne prend en charge que Blowfish, qu'il identifie à l'aide de l'ID "2b".

27
Stephen Kitt