Vad ' är skillnaden mellan dessa MD5-haschar?

Vad är skillnaden mellan det här formatet:

Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0 

och följande:

5f4dcc3b5aa765d61d8327deb882cf99 

Och också,

Hur förvandlar man det första hashformatet till det andra?

Tack i avancera.

Kommentarer

  • Jag tvivlar på att det första exemplet bara är en hash. Det verkar som att det innehåller användarnamnet i tydlig och eventuellt annan information . Var fick du det? Det är inte riktigt möjligt att tvätta om utan att veta klartextvärdet.
  • Att ' är vad jag ' undrar jag också. Men jag fick det efter att ha kört routersploit på min router med Kali Linux och utdata säger exakt att > > Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0. Jag hittade också ett liknande fall här länk

Svar

Det första exemplet ser ut som en skuggfil form at: ID (admin) Algoritm (1 = MD5) Salt (none) Hash (oLN1UCc1Y3T30QkMcKMSx0), med hash i vad som verkar vara Base64-format.

Den andra (5f4dcc3b5aa765d61d8327deb882cf99) verkar vara en hexsträng på 128 bitar som överensstämmer med att vara en MD5-hash som väl.

Omvandla båda till binär & och sedan tillbaka till deras motsatta format matchar de två hasharna inte:

  • Base64 för det binära värdet som representeras av hexsträngen (5f4dcc3b5aa765d61d8327deb882cf99) är X03MO1qnZdYdgyfeuILPmQ.

  • Omvänt är hex-strängen i base64-hash (oLN1UCc1Y3T30QkMcKMSx0) a0b3755027356374f7d1090c70a312c7.

     ------- Edit ----- 

Som user1686 påpekade: oLN1UCc1Y3T30QkMcKMSx0 är MD5crypt, vilket är tusen MD5-omgångar med extra i varje omgång. Om båda dessa hashfiler är faktiskt från samma lösenord, bör det vara möjligt att konvertera den raka MD5-hash till motsvarande inget salt MD5Crypt genom att kringgå den första MD5-beräkningen i MD5Crypt och mata den till hash istället för lösenordet.

Svar

Delen efter den sista $ är base64-kodad, vilket är ett ganska kompakt (fyra tecken blir tre byte) sätt att representera binär data som vanliga, utskrivbara tecken (inte ASCII-kontrollkoder eller något som kräver hög bit). Den andra hash är helt enkelt hex-kodad, vilket är mindre effektivt (fyra tecken blir två byte) men lättare att läsa, särskilt för programmerare (som använder hex hela tiden).

EDIT: Dessutom är den första algoritmen är nästan säkert md5 crypt , vilket är en itererad MD5 med ytterligare några saker gjort. Således kommer det inte att producera samma utdata som bas MD5 för en given ingång. Och vi ser verkligen att det inte gör det: om du konverterar delen efter den sista $ till hex kommer ut a0b3755027356374f7d1090c70a312c7. Det kan också (vid åtminstone delvis) beror på att jag tror att md5crypt använder en anpassad base64, som har samma tecken som normal base64 i en annan ordning.

Den första hash är ett exempel på / etc / shadow-lösenordsformatet. $1 betyder MD5crypt, och bristen på någonting mellan de kommande två $ -tecknen betyder att den är osaltad. Vi har ingen sådan information för andra gången; det kan vara saltat eller eventuellt ett annat lösenord, en annan hashalgoritm eller båda. Det är dock troligare att vara ren MD5 än md5crypt.

Redigerad för att återspegla skillnaden mellan MD5 och md5crypt

Kommentarer

  • Även om den ' är osaltad, är $ 1 $ fortfarande inte bara ren MD5 – den ' s md5crypt , vilket innebär 1000 omgångar MD5 med några andra kryddor tillagda.
  • Den andra hash är bara md5 (' lösenord '). echo -n 'password' | md5sum producerar 5f4dcc3b5aa765d61d8327deb882cf99

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *