Hvad er forskellen mellem dette format:
Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0
og følgende:
5f4dcc3b5aa765d61d8327deb882cf99
Og også
Hvordan omdanner man det første hash-format til det andet?
Tak i forhånd.
Kommentarer
Svar
Det første eksempel ligner en skyggefil form at: ID (admin
) Algoritme (1
= MD5) Salt (none) Hash (oLN1UCc1Y3T30QkMcKMSx0
), med hash i det, der ser ud til at være Base64-format.
Den anden (5f4dcc3b5aa765d61d8327deb882cf99
) ser ud til at være en hex-streng på 128 bits, der er i overensstemmelse med at være en MD5-hash som godt.
Imidlertid konverterer begge til binær & og derefter tilbage til deres modsatte formater, de to hasher stemmer ikke overens:
-
Base64 for den binære værdi repræsenteret af hexstrengen (
5f4dcc3b5aa765d61d8327deb882cf99
) erX03MO1qnZdYdgyfeuILPmQ
. -
Omvendt er den hex-streng i base64-hash (
oLN1UCc1Y3T30QkMcKMSx0
)a0b3755027356374f7d1090c70a312c7
.------- Edit -----
Som user1686 påpegede: oLN1UCc1Y3T30QkMcKMSx0 er MD5crypt, hvilket er tusind runder MD5 med ekstra i hver runde. Hvis begge disse hashes faktisk er fra samme adgangskode, skal det være muligt at konvertere den lige MD5-hash til den ækvivalente no-salt MD5Crypt ved at omgå den første MD5-beregning i MD5Crypt og fodre den hash i stedet for adgangskoden.
Svar
Delen efter den sidste $ er base64-kodet, hvilket er en forholdsvis kompakt måde (fire tegn bliver tre byte) til at repræsentere binære data som almindelige tegn, der kan udskrives (ikke ASCII-kontrolkoder eller noget, der kræver den høje bit). Den anden hash er simpelthen hex-kodet, hvilket er mindre effektivt (fire tegn bliver to byte), men lettere at læse, især for programmører (der bruger hex hele tiden).
EDIT: Derudover er den første algoritme er næsten helt sikkert md5 crypt , som er en itereret MD5 med nogle ekstra ting udført. Således vil det ikke producere den samme output som base MD5 for en given input. Og vi ser faktisk, at det ikke gør det: hvis du konverterer delen efter den sidste $ til hex, kommer a0b3755027356374f7d1090c70a312c7 ud. Det kan også (ved mindst delvist) skyldes, at jeg tror, md5crypt bruger en brugerdefineret base64, som har de samme tegn som normal base64 i en anden rækkefølge.
Den første hash er et eksempel på / etc / shadow-adgangskodeformatet. $1
betyder MD5crypt, og manglen på noget mellem de næste to $ tegn betyder, at det er usaltet. Vi har ingen sådan info til det andet; det kunne være saltet eller muligvis en anden adgangskode, en anden hash-algoritme eller begge dele. Det er dog mest sandsynligt, at du er bar MD5 end md5crypt.
Redigeret for at afspejle forskellen mellem MD5 og md5crypt
Kommentarer
- Selvom det ' er usaltet, er $ 1 $ stadig ikke bare bar MD5 – det ' s md5crypt , som involverer 1000 runder MD5 med nogle andre krydderier tilføjet.
- Den anden hash er bare md5 (' adgangskode ').
echo -n 'password' | md5sum
producerer5f4dcc3b5aa765d61d8327deb882cf99
Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0
. Jeg fandt også en lignende sag her link