Ho la password di lavoro e posso vedere l'hash (/etc/passwd). Come faccio a trovare l'algoritmo di hashing utilizzato per eseguire l'hashing della password, senza provare manualmente algoritmi diversi finché non trovo una corrispondenza?
Risposta accettata:
Questo è documentato in crypt(3)
manpage di , che puoi trovare tramite shadow(5)
manpage o passwd(5)
'S. Questi collegamenti sono appropriati per i moderni sistemi basati su Linux; la descrizione c'è:
Se sale è una stringa di caratteri che inizia con i caratteri “$id $”
seguito da una stringa eventualmente terminata da “$”, quindi il risultato
ha la forma:
$id$salt$encrypted
id identifica il metodo di crittografia utilizzato al posto di DES e questo quindi
determina 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 dai prefissi 2
, 2b
, 2x
e 2y
(vedi documentazione di PassLib).
Quindi, se una password con hash è memorizzata nel formato sopra, puoi trovare l'algoritmo utilizzato guardando l'id; altrimenti è crypt
algoritmo DES predefinito (con un hash di 13 caratteri) o "big" crypt
DES (esteso per supportare password di 128 caratteri, con hash fino a 178 caratteri di lunghezza) o DES esteso BSDI (con un _
prefisso seguito da un hash di 19 caratteri).
Alcune distribuzioni usano libxcrypt che supporta e documenta molti altri metodi:
y
:yescryptgy
:gost-yescrypt7
:criptasha1
:sha1cryptmd5
:SunMD5
Altre piattaforme supportano altri algoritmi, quindi controlla crypt
manpage lì. Ad esempio, crypt(3)
di OpenBSD supporta solo Blowfish, che identifica utilizzando l'id “2b”.