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

11

J'ai le mot de passe de travail et je peux voir le hachage (/ etc / passwd). Comment puis-je trouver l'algorithme de hachage utilisé pour hacher le mot de passe, sans essayer manuellement différents algorithmes jusqu'à ce que je trouve une correspondance?

Dorin Botan
la source
1
Quelle variante Unix utilisez-vous?
Kusalananda
3
Je suis très surpris que vous puissiez voir un hachage /etc/passwd. Je pensais que toutes les variantes Unix / Linux avaient déménagé /etc/shadowil y a des années. (Je sais que de tels systèmes prennent toujours en charge les hachages passwdmais je ne connais aucun utilitaire qui les y place plus. Un système embarqué, peut-être?
roaima
C'est OpenWrt Backfire 10.03. Les hachages sont toujours stockés /etc/passwdici. Cela ne change cependant pas la question. C'est ça?
Dorin Botan
1
Juste pour mémoire: Les BSD ont deux fichiers Berkeley DB, roaima. Il est toujours divisé, mais ce n'est pas le cas /etc/shadowet ils n'ont aucun fichier de ce nom.
JdeBP

Réponses:

27

Ceci est documenté dans crypt(3)« la page de manuel de , que vous trouverez via shadow(5)l » manpage ou passwd(5)l » . Ces liens conviennent aux systèmes Linux modernes; la description il y a:

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

$id$salt$encrypted

id identifie la méthode de cryptage utilisée à la place de DES et cela détermine ensuite comment le reste de la chaîne de mot de passe est interprété. Les valeurs suivantes d'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 bcrypt, est également identifié par préfixes 2, 2b, 2xet 2y(voir la documentation de PassLib ).

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 l' cryptalgorithme DES par défaut (avec un hachage de 13 caractères), ou cryptle DES "grand" (étendu pour prendre en charge les mots de passe de 128 caractères, avec des hachages jusqu'à 178 caractères), ou le DESDI étendu BSDI (avec un _préfixe suivi d'un hachage de 19 caractères).

Certaines distributions utilisent libxcrypt qui prend en charge et documente plusieurs autres méthodes:

  • y: yescrypt
  • gy: gost-yescrypt
  • 7: scrypt
  • sha1: sha1crypt
  • md5: SunMD5

D'autres plates-formes prennent en charge d'autres algorithmes, alors consultez la cryptpage de manuel ici. Par exemple, OpenBSDcrypt(3) ne prend en charge que Blowfish, qu'il identifie à l'aide de l' ID «2b».

Stephen Kitt
la source
2
Les mots de passe basés sur DES sont BTW toujours 13 caractères de long et se composent de caractères alphanumériques ainsi que .et /. Les 2 premiers caractères sont le sel et les 11 autres sont une valeur de hachage (en quelque sorte). Et c'est le seul des algorithmes pris en charge cryptqui est si faible que vous ne pouvez pas le compenser en choisissant un mot de passe plus fort.
kasperd