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”.