Care este diferența dintre acest format:
Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0
și următoarele:
5f4dcc3b5aa765d61d8327deb882cf99
Și, de asemenea,
Cum să transformați primul format hash în al doilea?
Vă mulțumim avans.
Comentarii
Răspuns
Primul exemplu arată ca un formular fișier umbră la: ID (admin
) Algoritm (1
= MD5) Sare (none) Hash (oLN1UCc1Y3T30QkMcKMSx0
), cu hash-ul în ceea ce pare a fi formatul Base64.
Al doilea (5f4dcc3b5aa765d61d8327deb882cf99
) pare a fi un șir hexagonal de 128 de biți în concordanță cu a fi un hash MD5 ca bine.
Cu toate acestea, convertindu-le pe ambele în binar & apoi înapoi la formatele opuse, cele două hash-uri nu se potrivesc:
-
Base64 a valorii binare reprezentate de șirul hexagonal (
5f4dcc3b5aa765d61d8327deb882cf99
) esteX03MO1qnZdYdgyfeuILPmQ
. -
În schimb, șirul hexagonal al hashului base64 (
oLN1UCc1Y3T30QkMcKMSx0
) estea0b3755027356374f7d1090c70a312c7
.------- Edit -----
Ca user1686 a subliniat: oLN1UCc1Y3T30QkMcKMSx0 este MD5crypt, adică o mie de runde de MD5 cu extras la fiecare rundă. Dacă ambele hașe sunt de fapt din aceeași parolă, ar trebui să fie posibilă conversia hashului MD5 drept în echivalentul său MD5Crypt fără sare ocolind primul calcul MD5 în MD5Crypt și alimentându-l cu hash în loc de parolă.
Răspuns
Partea după ultimul $ este codificată în bază64, care este o modalitate rezonabilă de compactă (patru caractere devin trei octeți) pentru a reprezenta datele binare ca caractere comune, tipăribile (nu coduri de control ASCII sau orice altceva care necesită bitul înalt). Al doilea hash este pur și simplu codificat hexagonal, care este mai puțin eficient (patru caractere devin două octeți), dar mai ușor de citit, mai ales pentru programatori (care folosesc hex hex tot timpul).
EDIT: În plus, primul algoritmul este aproape sigur md5 criptă , care este un MD5 iterat cu câteva lucruri suplimentare făcute. Astfel, nu va produce aceeași ieșire ca baza MD5 pentru o intrare dată. Și, într-adevăr, vedem că nu: dacă convertiți partea după ultimul $ în hex, iese a0b3755027356374f7d1090c70a312c7. cel puțin parțial), deoarece cred că md5crypt folosește o bază64 personalizată, care are aceleași caractere ca și baza normală 64 într-o ordine diferită.
Primul hash este un exemplu de format de parolă / etc / shadow. $1
înseamnă MD5crypt, iar lipsa a ceva între următoarele două $ caractere înseamnă că este nesărat. Nu avem astfel de informații pentru a doua; ar putea fi sărată sau, eventual, o altă parolă, un alt algoritm hash sau ambele. Totuși, este mai probabil să fie MD5 pur decât md5crypt.
Editat pentru a reflecta diferența dintre MD5 și md5crypt
Comentarii
- Chiar dacă ' este nesărat, $ 1 $ încă nu este doar MD5 gol – este ' s md5crypt , care implică 1000 de runde de MD5 cu alte condimente adăugate.
- Al doilea hash este doar md5 (' parolă ').
echo -n 'password' | md5sum
produce5f4dcc3b5aa765d61d8327deb882cf99
Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0
. De asemenea, am găsit un caz similar aici link