Was ist der Unterschied zwischen diesem Format:
Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0
und den folgenden:
5f4dcc3b5aa765d61d8327deb882cf99
Und auch
Wie wird das erste Hash-Format in das zweite umgewandelt?
Vielen Dank Voraus.
Kommentare
- Ich bezweifle, dass das erste Beispiel nur ein Hash ist. Es sieht so aus, als ob es den Benutzernamen in den klaren und möglicherweise anderen Informationen enthält Woher haben Sie es? Es ist nicht wirklich möglich, ohne Kenntnis des Klartextwerts erneut aufzuwärmen.
- Das ' ist das, was ich wundere mich auch. Aber ich habe das bekommen, nachdem ich routersploit auf meinem Router unter Kali Linux ausgeführt habe und die Ausgabe genau sagt, dass > >
Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0
. Ich habe auch hier einen ähnlichen Fall gefunden. link
Antwort
Das erste Beispiel sieht aus wie eine Schattendatei at: ID (admin
) Algorithmus (1
= MD5) Salt (keine) Hash (oLN1UCc1Y3T30QkMcKMSx0
), mit dem Hash im scheinbar Base64-Format.
Der zweite (5f4dcc3b5aa765d61d8327deb882cf99
) scheint eine Hex-Zeichenfolge von 128 Bit zu sein, die mit einem MD5-Hash als übereinstimmt gut.
Wenn Sie jedoch beide in binäre & und dann zurück in ihre entgegengesetzten Formate konvertieren, stimmen die beiden Hashes nicht überein:
-
Base64 des durch die Hex-Zeichenfolge dargestellten Binärwerts (
5f4dcc3b5aa765d61d8327deb882cf99
) istX03MO1qnZdYdgyfeuILPmQ
. -
Umgekehrt ist die hexadezimale Zeichenfolge des base64-Hashs (
oLN1UCc1Y3T30QkMcKMSx0
)a0b3755027356374f7d1090c70a312c7
.------- Edit -----
As user1686 wies darauf hin: oLN1UCc1Y3T30QkMcKMSx0 ist MD5crypt, dh tausend Runden MD5 mit Extras in jeder Runde. Wenn beide Hashes tatsächlich vom selben Kennwort stammen, sollte es möglich sein, den geraden MD5-Hash in sein Äquivalent zu konvertieren MD5Crypt ohne Salz, indem die erste MD5-Berechnung in MD5Crypt umgangen und der Hash anstelle des Kennworts eingegeben wird.
Antwort
Der Teil nach dem letzten $ ist base64-codiert. Dies ist eine relativ kompakte Methode (vier Zeichen werden zu drei Bytes), um Binärdaten als allgemeine, druckbare Zeichen darzustellen (keine ASCII-Steuercodes oder alles, was das hohe Bit erfordert). Der zweite Hash ist einfach hexadezimal codiert, was weniger effizient ist (vier Zeichen werden zu zwei Bytes), aber leichter zu lesen ist, insbesondere für Programmierer (die ständig Hex verwenden).
EDIT: Zusätzlich der erste Der Algorithmus ist mit ziemlicher Sicherheit md5 crypt , ein iteriertes MD5 mit einigen zusätzlichen Aufgaben. Daher wird es für eine bestimmte Eingabe nicht die gleiche Ausgabe wie die Basis-MD5 erzeugen. Und tatsächlich sehen wir, dass dies nicht der Fall ist: Wenn Sie das Teil nach dem letzten $ in hex umwandeln, wird a0b3755027356374f7d1090c70a312c7 ausgegeben. Das könnte auch (at zumindest teilweise), weil ich denke, dass md5crypt ein benutzerdefiniertes base64 verwendet, das die gleichen Zeichen wie normales base64 in einer anderen Reihenfolge hat.
Der erste Hash ist ein Beispiel für das Kennwortformat / etc / shadow $1
bedeutet MD5crypt, und das Fehlen von irgendetwas zwischen den nächsten zwei $ -Zeichen bedeutet, dass es ungesalzen ist. Wir haben keine solchen Informationen für die Sekunde; Es könnte gesalzen sein oder möglicherweise ein anderes Passwort, ein anderer Hash-Algorithmus oder beides. Es ist jedoch wahrscheinlicher, dass MD5 nackt ist als md5crypt.
Bearbeitet, um den Unterschied zwischen MD5 und md5crypt widerzuspiegeln.
Kommentare
- Auch wenn ' ungesalzen ist, ist $ 1 $ nicht nur MD5 – es ist ' s md5crypt , bei dem 1000 Runden MD5 mit einigen anderen Gewürzen hinzugefügt werden.
- Der zweite Hash ist nur md5 (' Passwort ').
echo -n 'password' | md5sum
erzeugt5f4dcc3b5aa765d61d8327deb882cf99