Mi a különbség a formátum között:
Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0
és a következők:
5f4dcc3b5aa765d61d8327deb882cf99
És
Hogyan lehet az első hash formátumot a második formátumba változtatni?
Köszönet előre.
Megjegyzések
Válasz
Az első példa úgy néz ki, mint egy árnyékfájl űrlap itt: ID (admin
) Algoritmus (1
= MD5) Só (nincs) Hash (oLN1UCc1Y3T30QkMcKMSx0
), a hash-szal, ami úgy tűnik, hogy Base64 formátumú.
A második (5f4dcc3b5aa765d61d8327deb882cf99
) 128 bites hex sztringnek tűnik, amely megfelel az MD5 hash-nak, mint jól.
Ha azonban mindkettőt bináris & -re konvertáljuk, majd visszaállítjuk ellentétes formátumukba, a két hash nem egyezik:
-
A hex sztring által képviselt bináris érték (
5f4dcc3b5aa765d61d8327deb882cf99
) alapjaX03MO1qnZdYdgyfeuILPmQ
. -
Ezzel szemben az base64 hash (
oLN1UCc1Y3T30QkMcKMSx0
) hexadecimálisaa0b3755027356374f7d1090c70a312c7
.------- Edit -----
Mint user1686 rámutatott: oLN1UCc1Y3T30QkMcKMSx0 az MD5crypt, amely ezer MD5 kör, extrákkal minden körben. Ha mindkét kivonat valójában ugyanabból a jelszóból származik, akkor lehetővé kell tenni, hogy az egyenes MD5 kivonatot ekvivalensévé alakítsa no-salt MD5Crypt úgy, hogy megkerüli az MD5Crypt első MD5 számítását, és a jelszó helyett hash-t ad neki.
Válasz
Az utolsó $ utáni rész base64-kódolású, ami meglehetősen kompakt (négy karakterből három bájt lesz) módja annak, hogy a bináris adatokat általános, nyomtatható karakterként jelenítsük meg (nem ASCII vezérlő kódok vagy bármi, ami nagy bitet igényel). A második hash egyszerűen hexakódolású, ami kevésbé hatékony (négy karakterből két bájt válik), de könnyebben olvasható, különösen a programozók számára (akik állandóan hexát használnak).
SZERKESZTÉS: Ezenkívül az első az algoritmus szinte biztos, hogy az md5 crypt , amely egy iterált MD5, néhány további cuccal. Így nem fogja ugyanazt a kimenetet produkálni, mint egy MD5 alap egy adott bemenetnél. És valóban látjuk, hogy nem: ha az utolsó $ utáni alkatrészt hexává alakítja, akkor a0b3755027356374f7d1090c70a312c7 jön ki. Ez is ( legkevésbé részben azért, mert szerintem az md5crypt egy egyéni base64-et használ, amelynek ugyanazok a karakterei vannak, mint a normál base64-nek, más sorrendben.
Az első hash egy példa az / etc / shadow jelszó formátumra. Az $1
azt jelenti, hogy MD5crypt, és ha a következő két $ karakter között nincs semmi, azt sótlanítjuk. A másodikra nincs ilyen információnk; lehet sózva, esetleg más jelszó, más hash algoritmus vagy mindkettő. Bár valószínűbb, hogy csupasz MD5, mint az md5crypt.
Szerkesztve, hogy tükrözze az MD5 és az md5crypt közötti különbséget
Megjegyzések
- Még ha ' sózatlan is, az $ 1 $ még mindig nem pusztán MD5 – ez ' s md5crypt , amely 1000 MD5 kört tartalmaz, hozzáadva néhány más fűszert.
- A második kivonat csak md5 (' jelszó ').
echo -n 'password' | md5sum
5f4dcc3b5aa765d61d8327deb882cf99
Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0
. Itt is találtam hasonló esetet link