Seite 1 von 3

X360´s Passwort Checker / Brutforce / Rainbow Tables

Verfasst: 07.03.2009 20:42
von X360 Andy
Ein kleines Tool was ich über den Tag hinweg gebastelt habe.
Ich hatte es zwar nicht vor es zu veröffentlichen, aber da mich eine Frage dazu quält mach ich es doch.

Features von dem Tool
- Generieren von MD5/SHA/HEX in Echtzeit
- Generieren von Passwörtern
- Direktes Analyzieren des eigenen Passwörter oder des erstellten Passworts
- Brutforce (ca. 2000-5000 Passwörter in der Sekunde )

Download - X360´s Passwort Checker
Bild
Weitere Bilder hier


Soweit zum Program , nun meine Frage

Ich habe mir überlegt was ich einbaue
Brutforce oder Rainbow Tables

Bei Brutforce hab ich ca. 4-5000 Passwörter bei den Rainbow Tables muss ich vorher eine riesen Datei erstellen, die dann zwar schneller gelesen wird aber was ist schneller bzw "besser"?

Ich hab mal ein "Rainbow Table" Tool zusammen gebastelt
- Zuerst Datenbank anlegen
- Werte Eintragen
- Ein paar Sekunden bzw Minuten laufen lassen.
- Programm neustarten ( einfach Beenden )
- Md5 Hash in das untere String Gadget eingeben und warten. (ich würde keinen wert über 5-6 Zeichen eingeben )

Was sind die Vorteile bzw Nachteile von Brutforce und von Rainbow Tables ?
Mich intressiert die [Un]Sicherheit von sölchen(Passwörtern/Verschlüsselungen) sachen sehr, deswegen spiel ich auch viel mit dem Thema rum.

Mir ist klar das keins von beiden warscheinlich zum Ziel führt (<-Sein eigenes Passwort was man vergessen hat herauszufinden ;D )
Da man ja bei z.b bei [neueren] Foren mehrfache Verschlüsselungen oder auch den Salt verwendet.

Naja würde mich über Kommentare freuen.


Die unzähligen unsäglichen Deppenapostrophen entfernt - Kaeru fecit
in Zukunft bitte mehr Mühe geben - es ist doch unnötig dass der pure Anblick eines Postings in den Augen schmerzt.

Verfasst: 07.03.2009 20:53
von cxAlex
Nicht schlecht :allright: .

Leider nutz dein BruteForcer nur 25% meines CPU aus, bei 10200PW/sek. Schon mal gedacht das ganze multithreated zu machen? http://www.purebasic.fr/german/viewtopic.php?t=19188.Da ist ein Beispiel dabei wo MD5's Multithreated 3.5x schneller berechnet werden als seriell (QuadCore). Als Parameter ne Structur mit Referenzwert und Plaintext, evtuell blockweise immer 10-100 Kombis/Job probieren und wenn das Pw gefunden wird ne glob. var setzen die dann die Ausführung stoppt... . Ist sicher was möglich :D .

Verfasst: 07.03.2009 20:54
von TomS
Wenn du mit Rainbowtables jedes Passwort knacken willst, ist die Datei riesig. Außerdem hast du ne ganze Menge/Zeitverlust, wenn du RTs erstellen willst. Am günstigsten wäre eine Mischung, zu erst wird in RTs gesucht, wenn nicht gefunden wird Bruteforce angewandt und das Passwort anschließend in die RTs gespeichert.
Kannst ja RTs mit ner Wordlist, wie Auto, Baum und son Quatsch mitliefern. Komplexere Sachen wie aBc34X würd ich da aber noch nicht reinschreiben. Das dauert ja ewig

Verfasst: 07.03.2009 20:57
von cxAlex
Gibt im Internet aber schon fertige Rainbowtables mit allen möglichen Kombism müsstes du einfach nur mitliefern. Hab hier auf der Platte ne 24 GB - MD5 Table liegen, mal sehen ob ich den DL Link wieder finde (Der ist nur 5 GB groß, ZIP ist einfach genial :mrgreen: )

//Edit: Hab den Link zu meiner Table nicht gefunden aber hier gibts Tables bis zu 1/2 TB zum DL (optinal kanst du sie dir auch mit ner HD bestellen): http://www.freerainbowtables.com/de/tables/md5/

Auf der Seite kann man sich übrigens auch anmelden und per BOINC Rechenkraft für MD5 Rainbowtableberechnung bereitstellen. Desto mehr du rechnest desto mehr Credits bekommst du. Für ein paar Credits kann du dann dort im BOINC Netzwerk für dich MD5s cracken lassen. Derzeit hat das Projekt ~ 1000 GFLOPS Rechenkraft.

Verfasst: 07.03.2009 21:06
von X360 Andy
cxAlex hat geschrieben:Nicht schlecht :allright: .

Leider nutz dein BruteForcer nur 25% meines CPU aus, bei 10200PW/sek. Schon mal gedacht das ganze multithreadet zu machen? http://www.purebasic.fr/german/viewtopic.php?t=19188.Da ist ein Beispiel dabei wo MD5's Multithreated 3.5x schneller berechnet werden als seriell (QuadCore). Als Parameter ne Structur mit Referenzwert und Plaintext, evtuell blockweise immer 10-100 Kombis/Job probieren und wenn das Pw gefunden wird ne glob. var setzen die dann die Ausführung stoppt... . Ist sicher was möglich :D .
Jo hab deine Codes/Threads zu multitheard´s oder zu deiner Easy Cluster DLL schon gesehen nur sehen die Codes so kompliziert aus :? :mrgreen:
Naja muss ich mir mal noch genauer anschauen...

Aber so eine Idee hatte ich auch das ich jenach CPU´s Threads erstelle.
Und die Threads dann miteinander vernetze ..
Dann rechnen ein Thread nur jeden vierten Wert (Bei Quad Core)
Bsp
Thread 1 = a,e,i...
Thread 2 = b,f,j...
Thread 3 = c,g,k...
Thread 4 = d,h,l...
Sowas meinst du doch auch oder ?

cxAlex hat geschrieben:Gibt im Internet aber schon fertige Rainbowtables mit allen möglichen Kombism müsstes du einfach nur mitliefern. Hab hier auf der Platte ne 24 GB - MD5 Table liegen, mal sehen ob ich den DL Link wieder finde (Der ist nur 5 GB groß, ZIP ist einfach genial :mrgreen: )
Naja 24Gb dürften 5 Stellen sein :lol:
Wiki sagt hat geschrieben: Sinnvoll wäre es nun, die bereits berechneten Hashes in einer Datenbank zu speichern und bei erneuten Suchläufen nur noch vergleichen zu müssen, ob der gesuchte Hash schon bekannt ist. Bei einer Suche über 64 mögliche Zeichen [A-Za-z0-9./], die jede Stelle des Eingangstextes haben könnte, ergeben sich bei 6 Stellen 646 Variationen. Werden nun Hash und Wert (KEY-VALUE Pairs) in einer Datenbank gespeichert, so werden pro Datenbankreihe mindestens 32 Bytes für den Hash und 6 Bytes für den Plaintext benötigt und somit für die kompletten Daten etwa 2,4 Terabyte.

Verfasst: 07.03.2009 21:43
von HeX0R
MD5 bruteforcen Multithreded gibts doch schon längst.

Verfasst: 07.03.2009 21:53
von cxAlex
@Hexor:

Wie verteilst du die Aufgaben an die Threads? Teilst du die Berechnung exakt durch 4 und sagst jedem Thread z.B. "du rechnest von a-h, i - s, ...." oder teilst du die berechnung in kleinere Portionen auf, und immer wenn ein Thread fertig wird bekommt er eine neue? Also, z.B. immer 100-1000 MD5s pro Packet? Sowas würde sich auch dann auch relativ einfach mit ECluster Netzwerkfähig machen lassen.

Verfasst: 07.03.2009 21:57
von Kaeru Gaman
@X360

in deinem ersten Posting hab ich mal aufgeräumt, um die anderen kannst du dich mal bitte selber kümmern.
den sächsischen Genitiv für dein Namenskürzel kann man durchgehen lassen,
aber den Plural schreibe doch bitte korrekt, das grenzt ja an Körperverletzung!

Verfasst: 07.03.2009 22:30
von HeX0R
cxAlex hat geschrieben:@Hexor:

Wie verteilst du die Aufgaben an die Threads? Teilst du die Berechnung exakt durch 4 und sagst jedem Thread z.B. "du rechnest von a-h, i - s, ...." oder teilst du die berechnung in kleinere Portionen auf, und immer wenn ein Thread fertig wird bekommt er eine neue? Also, z.B. immer 100-1000 MD5s pro Packet? Sowas würde sich auch dann auch relativ einfach mit ECluster Netzwerkfähig machen lassen.
Ich habe es damals so gemacht, dass der erste Core einen, der zweite zwei, der dritte drei und der vierte vier-buchstabige Passwörter checkt. Sobald der erste fertig ist, versucht er sich an 5stellige Passwörter.

Die Frage ist, wie willst du einen Thread a-h, den zweiten i-s, usw. suchen lassen? Welcher von beiden würde denn dann das Passwort aihs finden?
Das lässt sich so einfach nicht aufteilen.
Jedenfalls ist mir damals kein einfacher Weg eingefallen.

Deine zweite Idee, wäre wohl umsetzbar gewesen.

Verfasst: 07.03.2009 22:32
von cxAlex
Ich hab da so ne Idee, werd mal in den nächsten Tagen was dazu posten.