Come trovare l'algoritmo di hashing utilizzato per le password di hash?


11

Ho la password di lavoro e posso vedere l'hash (/ etc / passwd). Come trovo l'algoritmo di hashing utilizzato per l'hash della password, senza provare manualmente algoritmi diversi fino a quando non trovo una corrispondenza?


1
Quale variante Unix stai usando?
Kusalananda

3
Sono molto sorpreso che tu riesca a vedere un hash /etc/passwd. Pensavo che tutte le varianti Unix / Linux si fossero spostate in una divisione con /etc/shadowanni fa. (So ​​che tali sistemi supportano ancora gli hash passwdma non conosco più utilità che li mettono più lì. Un sistema incorporato, forse?
roaima

È OpenWrt Backfire 10.03. Gli hash sono ancora memorizzati /etc/passwdqui. Ciò tuttavia non cambia la questione della domanda. Vero?
Dorin Botan

1
Solo per la cronaca: i BSD hanno due file Berkeley DB, roaima. È ancora diviso, ma non lo è /etc/shadowe non hanno file con quel nome.
JdeBP,

Risposte:


27

Questo è documentato in crypt(3)'s pagina man , che potete trovare tramite shadow(5)‘s pagina di manuale , o di passwd(5)'s . Tali collegamenti sono appropriati per i moderni sistemi basati su Linux; la descrizione c'è:

Se salt è una stringa di caratteri che inizia con i caratteri "$ id $" seguita da una stringa facoltativamente terminata da "$", il risultato ha la forma:

$id$salt$encrypted

id identifica il metodo di crittografia utilizzato al posto di DES e ciò determina quindi come viene interpretato il resto della stringa della password. Sono supportati i seguenti valori di id:

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, noto anche come bcrypt, è anche identificato da prefissi 2, 2b, 2x, e 2y(si veda la documentazione del PassLib ).

Quindi se una password con hash è memorizzata nel formato sopra, puoi trovare l'algoritmo usato guardando l' id ; altrimenti è l' cryptalgoritmo DES predefinito (con un hash di 13 caratteri) o cryptil DES "grande" (esteso per supportare password di 128 caratteri, con hash lunghi fino a 178 caratteri), o DES esteso BSDI (con un _prefisso seguito da un hash di 19 caratteri).

Alcune distribuzioni usano libxcrypt che supporta e documenta alcuni altri metodi:

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

Altre piattaforme supportano altri algoritmi, quindi controlla la cryptmanpage lì. Ad esempio, OpenBSDcrypt(3) supporta solo Blowfish, che identifica usando l' id "2b".


2
Le password basate su DES sono lunghe BTW sempre di 13 caratteri e sono costituite da caratteri alfanumerici e da .e /. I primi 2 caratteri sono il sale e gli altri 11 sono un valore hash (una specie di). Ed è l'unico degli algoritmi supportati da cryptcui è così debole che non puoi compensarlo scegliendo una password più forte.
Kasperd,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.