Schritt für Schritt Beispiel

der kryptische Kram sind die Passworte als SHA1 Hash dann ein Doppelpunkt und dann die Häufigkeit.

Die ersten drei Zeilen aus der Datei:
Show Plain Text
  1. 7C4A8D09CA3762AF61E59520943DC26494F8941B:20760336            
  2. F7C3BC1D808E04732ADF679965CCC34CA7AE3441:7016669            
  3. B1B3773A05C0ED0176787A4F1574FF0075F7521E:3599486

usw. usw. usw.

Ein konkretes Beispiel:
Die erste Zeile der Datei lautet
7C4A8D09CA3762AF61E59520943DC26494F8941B:20760336
Hash: 7C4A8D09CA3762AF61E59520943DC26494F8941B
Doppelpunkt:
Anzahl:20760336 (20 Millionen!)

Wenn Du jetzt das Passwort "123456" prüfen wolltest, mußt Du davon zuerst den SHA1 Wert ermitteln.

Im Terminal /bin/echo -n "123456" | openssl sha1
Show Plain Text
  1. /bin/echo -n "123456" | openssl sha1
  2. 7c4a8d09ca3762af61e59520943dc26494f8941b


Das ist der gleiche Hashwert, wie in der ersten Zeile, nur mit Klein- statt Großbuchstaben, die kann man durch tr [a-f] [A-F] umwandeln, also lautet die komplette Zeile

Show Plain Text
  1. /bin/echo -n "123456" | openssl sha1 | tr [a-f] [A-F]
  2. 7C4A8D09CA3762AF61E59520943DC26494F8941B


und die ist identisch mit der ersten Zeile, somit sollte man "123456" tunlichst nicht als Passwort verwenden.


Wie auf der Webseite erklärt wird, sind die Passworte in der Datei deshalb verhasht, weil manche User in ihren Passworten sensible Informationen verwenden.

Du könntest ja auf die schlechte Idee verfallen, als Passwort Deine eMailadresse o.ä. zu nehmen.
Why Hashes?
Sometimes passwords are personally identifiable. Either they contain personal info (such as kids' names and birthdays) or they can even be email addresses. One of the most common password hints in the Adobe data breach (remember, they leaked hints in clear text), was "email" so you see the challenge here.
Further to that, if I did provide all the passwords in clear text fashion then it opens up the risk of them being used as a source to potentially brute force accounts.


Da der normale User hoffentlich mehr als nur ein Passwort hat, empfiehlt es sich das Ganze mit einem kleinem Skript drumrum aufzurufen, das aus den eigenen Passworten die Hashwerte ermittelt und die dann nacheinander auf Vorhandensein in der Datei zu überprüfen.

Wenn man das häufiger macht, sollte man eine Version der Datei nehmen, bei der die Hashes alphabetisch sortiert sind, denn sonst dauert das Suchen in der Datei viel zu lange.

Ich habe mal vier Passworte getestet,wobei die ersten beiden Trivialpassworte waren, damit ich sehen konnte ob das Skript funktioniert und die anderen beiden einfach nur Buchstabensalat.

Vorne steht der zu testende Hashwert, dann !!! für gefunden bzw. OK für nicht gefunden, ganz hinten die Suchzeit in Sekunden!
Wegen der falschen Sortierung (nach Häufigkeit statt nach Hashwert) dauert das ewig

Gesucht wurde mit grep -F -m1 -c "7C4A8D09CA3762AF61E59520943DC26494F8941B" $HOME/Downloads/pwned-passwords-2.0.txt was wahnsinnig ineffizient ist.

Show Plain Text
  1. Teste #1 CE0B2B771F7D468C0141918DAEA704E0E5AD45DB | !!! 0
  2. Teste #2 7C4A8D09CA3762AF61E59520943DC26494F8941B | !!! 0
  3. Teste #3 4EAA2ED976A017D3E3E5EB45AC9FA14FCFA519C1 | OK  691
  4. Teste #4 DA39A3EE5E6B4B0D3255BFEF95601890AFD80709 | OK  673