md5 ohne Brutforce

Original von derbeste
Habe bei LC5 gute englische Wörterbuchfiles dabei gehabt. Kennt wer einen Link zu einem umfangreichen deutschsprachigen?

http://www.openwall.com/wordlists/

hab den thread mal ueberflogen. wenn ichs nicht uebersehen hab wurde bis jetzt noch nicht erwaehnt, dass es vor nicht allzu langer zeit ein paar neue forschungsergebnisse zu hash-algorithmen gab.

http://www.cryptolabs.org/hash/WeisCccDsHash05.html
http://www.stachliu.com.nyud.net:8090/collisions.html
 
Also, ich weiss ja net, aber habt ihr schonmal was von Prefixtrees und Pointern gehört?

Als Präfixbaum würde die komplette md5-Tabelle (nur Hashes) grade mal *überschlag* ich schätze mal nicht mehr als 1 Gigabyte benötigen. Natürlich komplett auf Pointern basierend! Dann noch für jeden Eintrag ein paar Pointer (eine 250GB Matrize kann man allein durch Pointer z.b. auf 2,5mb runterrechnen).

Wenn man für die Texte zu den Hashes wieder einen Prefixbaum erstellt kommt man auf in etwa nochmal soviel Speicherplatz, also nur, weil das hier keiner effizient implementieren kann (was im Grunde gar nicht so schlecht ist) ist das trotzdem zu schaffen. Wenn man das Ursprungsalphabet auch noch geschickt wählt kommt man auf nochmal einiges weniger.

Also ist das echt zu schaffen.

GreeTz

Steve
 
Also, ich weiss ja net, aber habt ihr schonmal was von Prefixtrees und Pointern gehört?

Als Präfixbaum würde die komplette md5-Tabelle (nur Hashes) grade mal *überschlag* ich schätze mal nicht mehr als 1 Gigabyte benötigen. Natürlich komplett auf Pointern basierend! Dann noch für jeden Eintrag ein paar Pointer (eine 250GB Matrize kann man allein durch Pointer z.b. auf 2,5mb runterrechnen).

Wenn man für die Texte zu den Hashes wieder einen Prefixbaum erstellt kommt man auf in etwa nochmal soviel Speicherplatz, also nur, weil das hier keiner effizient implementieren kann (was im Grunde gar nicht so schlecht ist) ist das trotzdem zu schaffen. Wenn man das Ursprungsalphabet auch noch geschickt wählt kommt man auf nochmal einiges weniger.

Also ist das echt zu schaffen.

Also, ich weiss ja nicht ganz, was du dir unter einem prefixtree vorstellst, aber ich nehme mal an, du meinst eine huffman codierung. du kannst eine derartige kompression nur dann sinnvoll verwenden, wenn es ein extremes ungleichgewicht in der verteilung von zeichen innerhalb eines textes gibt, aber gerade das soll eine gute hashfunktion ja verhindern.

und zu deinen asuführungen über die Pointer fällt mir fast nichts mehr ein. ein pointer speichert keine daten. es mag sein, dass du 250GB daten mit 2,5MB zeigern handhaben kannst (wenn jeder datensatz, so ca. 100 000 mal so groß wie ein pointer ist) aber die Daten selber müssen trotzdem irgendwo liegen.
 
Hallo,
also ein Wörterbuch durchzulaufen ist nicht so das Problem.

Bei 5 Mio Keys/Sec und einer Größe von 1 Mio Wörtern (schon ne gute größe), würde das 0,2 Sekunden dauern.

Sonst die Größe für 1 Mio Wörter:
1 Mio * 16 Byte = 15,3 MB für die Hashs + Speicher für Trennzeichen, Index etc.

Und mehr als die Hashwerte muss man für ein Online-System nicht speichern. Denn wenn ein Hashwert in der Table auftaucht, dann ist es unsicher. Demnach ist es auch egal, welches Passwort der User verwendet hat
 
Original von blueflash
Also, ich weiss ja nicht ganz, was du dir unter einem prefixtree vorstellst, aber ich nehme mal an, du meinst eine huffman codierung. du kannst eine derartige kompression nur dann sinnvoll verwenden, wenn es ein extremes ungleichgewicht in der verteilung von zeichen innerhalb eines textes gibt, aber gerade das soll eine gute hashfunktion ja verhindern.

und zu deinen asuführungen über die Pointer fällt mir fast nichts mehr ein. ein pointer speichert keine daten. es mag sein, dass du 250GB daten mit 2,5MB zeigern handhaben kannst (wenn jeder datensatz, so ca. 100 000 mal so groß wie ein pointer ist) aber die Daten selber müssen trotzdem irgendwo liegen.

Bei Huffman wird ein Präfixbaum erstellt, das ist richtig, ich meine jedoch solch eine Variante, die bei Spracherkennung und für Wörterbücher (z.B. bei jedem guten T9 auf Handys) verwendet wird. Diese hat den Vorteil, dass man einen kompletten Baum sämtlicher Wörter, in diesem Falle halt aller Hashes aufstellt, sodass man nicht wie bei einer Matrix an erster Stelle mehrere tausend Einträge hat, sondern halt nur für jeden Buchstaben genau einen. Jeder Buchstabe hat dann wieder jeden möglichen Buchstaben als Kindknoten.

Zu Pointern siehe beispielsweise Bzip2, da wird eine 500Kb*500Kb Matrix (was 250gb entspricht) durch Pointer realisiert (nur noch 2,xmb gross), ist ziemlich selbsterklärend, hab auch keine Lust da weiter drauf einzugehen, den Code gibts unter GPL.


Zum Thema Rechenzeit:
Ich kenne den MD5 Algo nicht genau, er ist aber darauf ausgelegt immer nur einen Hash zu erzeugen. Mit dynamischer Programmierung ausgelegt auf die Erstellung aller Hashes sollte man auf eine durchaus aktzeptable Rechenzeit kommen. Wahrscheinlich sogar wenige Tage um den ganzen Baum zu füllen.

GreeTz

Steve
 
wenn man zugriff zu einem account des pcs hat, und evtl. inet, dann kann man das passwort ganz leicht herausfinden:

1.man nehme das programm 'saminside' (einfach unter google saminside download eingeben)

2.ins dos-fenster gehen und dort den pfad für das programm plus den befahl eingeben
beispiel:
c:\dokumente und einstellungen\*****>c:/saminside/gethashes.exe $local

3. dann makierst du den hashwert, aber nur den den lm und nt wert.
beispiel: ef684d00cbc0182e8e603eeae602d4da:4aef5002af8f76be67c02eb2e5d2212f

4. auf diese seite gehen und den wert unten eingeben
 
Original von pro.digy
wenn man zugriff zu einem account des pcs hat, und evtl. inet, dann kann man das passwort ganz leicht herausfinden:

1.man nehme das programm 'saminside' (einfach unter google saminside download eingeben)

2.ins dos-fenster gehen und dort den pfad für das programm plus den befahl eingeben
beispiel:
c:\dokumente und einstellungen\*****>c:/saminside/gethashes.exe $local

3. dann makierst du den hashwert, aber nur den den lm und nt wert.
beispiel: ef684d00cbc0182e8e603eeae602d4da:4aef5002af8f76be67c02eb2e5d2212f

4. auf diese seite gehen und den wert unten eingeben

Ein gutes Beispiel für eine Anleitung für die liebe Scriptkiddiefraktion, in der der werte Anwender überhaupt nicht weis, was er überhaupt tut. Es mag meine Meinung sein, aber muss wirklich jeder Anfänger solche HowTo's zugänglich gelassen bekommen?
Das erlangen von Wissen und erlernen eines Systems ist eine gute Barriere gegen destruktive Gedanken von Leuten, die kein Interesse an der Materie haben und nur Schaden anrichten wollen. Es mag natürlich Fälle geben indem sich der legitime Besitzer aus seinem System ausgesperrt haben sollte, aber da würde ein Extrahieren der Hashes bei laufendem Os sowieso nicht möglich sein :P und eine Bootdisk vorzuziehen.

Damit ihr mich nicht falsch versteht:
Der Thread ist informativ und interessant, die Theorie ist meinem Statement nach schliesslich nicht verwerflich.
 
Zurück
Oben