Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Cryptography & Encryption Ver- und Entschlüsselung, Algorithmen, Kryptoanalyse ? Kryptographie in der Praxis. Blowfish, Triple-DES, XOR u.a.

Mein eigenes Bruteforce-Tool

Diskussion: Mein eigenes Bruteforce-Tool im Forum Cryptography & Encryption, in der Kategorie Security Area; Anzeige Hi @all! Ich habe dieses Wochenende mein eigenes Programm zum Knacken von Hashes programmiert. Das Ganze habe ich mit ...

Antwort
Alt 15.01.06, 21:44   #1 (permalink)
 
Registriert seit: 13.03.05
BattleMaker Leistung: Facit NTK
Likes: 0
Standard Mein eigenes Bruteforce-Tool

Anzeige

Hi @all!


Ich habe dieses Wochenende mein eigenes Programm zum Knacken von Hashes programmiert. Das Ganze habe ich mit Visual Basic .NET (für alle Noobs: .NET-Paket wird benötigt) realisiert. :)
Klar ist das nicht so schnell und der Code ist auch noch nicht optimiert (es gibt da noch andere generierende Funktionen die mit Array-Permutationen arbeiten^^) aber ich wollte so was einfach mal selbst programmieren. Einfach schon weil ich Erfahrung sammeln will, mich das Thema interessiert und ich etwas experimentieren will.


Das Tool gibt es im Moment noch hier:
http://files.robertnitsch.de/Hashsuite.exe
Falls der Link tot ist gibt es das Tool wahrscheinlich hier:
*mittlerweile ungültigen Link am 09.07.2007 entfernt*
(weil ich in ein paar Tagen das Programm offiziell auf meiner Homepage veröffentlichen will!)

Besonders stolz bin ich auf die Wildcars-Funktion. Das heisst man kann alle Kombinationen nach dem Schema '***istblöd' durchprobieren (lassen *g*).


Wenn jemand besonders schnelle Funktionen zum Generieren etlicher Kombinationen kennt, soll er es mich bitte wissen lassen.

Wer den Code haben will kann mich anschreiben.


Mit der schrillen Farbgebung will ich übrigens jedem meine Lieblingsfarbe (=grün) aufzwängen. :D :)




MfG, BattleMaker

BattleMaker ist offline   Mit Zitat antworten
Alt 15.01.06, 22:14   #2 (permalink)
 
Registriert seit: 20.06.05
brain21 Leistung: Facit NTK
Likes: 0
Standard RE: Mein eigenes Bruteforce-Tool

Zuerst: Echt nicht schlechte Idee, jetzt will ich das auch mal versuchen zu programmieren...

Zitat:
Original von BattleMaker
Mit der schrillen Farbgebung will ich übrigens jedem meine Lieblingsfarbe (=grün) aufzwängen.
Also, ich finde die Farbe garnicht so schlecht

Zitat:
Original von BattleMaker
Wenn jemand besonders schnelle Funktionen zum Generieren etlicher Kombinationen kennt, soll er es mich bitte wissen lassen.
Da kann ich dir leider nicht weiterhelfen, aber ich habe eine Frage:

Wie überkam dich die Idee Visual Basic .NET zu verwenden?

Wie gesagt, zunächst braucht man das Paket, zusätzlich frisst es Arbeitsspeicher als hättest du es in Java programmiert.
brain21 ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 15.01.06, 22:20   #3 (permalink)
Themenstarter
 
Registriert seit: 13.03.05
BattleMaker Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Zuerst: Echt nicht schlechte Idee, jetzt will ich das auch mal versuchen zu programmieren...
Die Idee kam mir auch erst, als mir jemand anders sein eigenes Bruteforce-Tool gezeigt hat... dann war ich so gereizt es nachzumachen, dass ich dieses WE viel Zeit investiert habe.

Zitat:
Wie überkam dich die Idee Visual Basic .NET zu verwenden?

Wie gesagt, zunächst braucht man das Paket, zusätzlich frisst es Arbeitsspeicher als hättest du es in Java programmiert.
Weil ich mich in dieser Programmiersprache mit Abstand am besten auskenne. Ich will mich bei einem so komplexen 'Problem' - bei dem es durchaus um Konzepte geht (Permutation hin und her... blabla) - nicht mit dem ewigen Suchen nach Befehlen quälen.

In einer anderen Programmiersprache wäre das Programm ohne Frage schneller. Aber was für mich viel mehr zählt, das ist die gesammelte Erfahrung bei der Umsetzung einer solchen Anwendung.



MfG, BattleMaker
BattleMaker ist offline   Mit Zitat antworten
Alt 16.01.06, 16:20   #4 (permalink)
 
Registriert seit: 20.06.05
brain21 Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Original von BattleMaker
Aber was für mich viel mehr zählt, das ist die gesammelte Erfahrung bei der Umsetzung einer solchen Anwendung.
Das, finde ich, ist eine sehr gute Einstellung.

Zitat:
Original von BattleMaker
Wenn jemand besonders schnelle Funktionen zum Generieren etlicher Kombinationen kennt, soll er es mich bitte wissen lassen.
Welche Methode benutzt du denn?

Ich selber würde die ASCII-Zeichen einfach (als Zahl darstellt) nach oben zählen, wodurch das Alphabet durchgegangen wird. Ein Char mit Array und einfach die Werte in diesem Array nach oben Zählen, jeh nach Benutzereinstellung. Das wäre wohl die schnellste Methode die mir einfallen würde.
brain21 ist offline   Mit Zitat antworten
Alt 16.01.06, 22:39   #5 (permalink)
Themenstarter
 
Registriert seit: 13.03.05
BattleMaker Leistung: Facit NTK
Likes: 0
Standard

Ich arbeite tatsächlich mit einem Array.

Eine Funktion getWord() in der Klasse WordGenerator kriegt dann bei jedem Durchlauf alle benötigten Parameter übergeben, unter anderem das zuletzt generierte Wort. Davon wird die letzte Stelle um eins erhöht und, sofern es das letzte Zeichen der möglichen CHAR's "übersteigt" wird die nächste Stelle erhöht usw... Damit sich das bis zum ersten Zeichen fortsetzt habe ich eine FOR-Schleife verwendet.

Man muss aber auch wahnsinnig auf die Zwischenspeicherung von Variablen achten.
Bestimmte Aktionen sollten außerdem nur alle X Durchläufe ausgeführt werden.
Das ist in etwa mit
Code:
if durchlauf Mod 1500 = 0 then
   ...
end if
zu erreichen.

Insgesamt erreicht mein Code mittlerweile ca. 74000 Kombinationen pro Sekunde (neue Version hochgeladen). Im Vergleich mit Profi-Programmen ist aber nur Kleinkrams.


Btw:
Ich hab ein Problem mit Multithreading in dem Programm. In der Funktion md5_bytes(data() as byte) as String - die ja offensichtlich zur Generierung eines MD5-Hashs zuständig ist, tritt an dieser Stelle oft ein Fehler auf:

Code:
Private Function md5_bytes(ByVal data() As Byte) As String
            Try
                Dim ergebnis As String
                Dim hash() As Byte
                Dim durchl As Integer = 0

                hash = md5_hasher.ComputeHash(data) ' <== HIER TRITT DER FEHLER AUF!!! Der Stacktrace verweist immer auf eine Methode die aus dem Aufruf ComputeHash() hervorgeht!
                tmp_hashlength = hash.Length - 1


                For durchl = 0 To tmp_hashlength
                    ergebnis &= hash(durchl).ToString("X2") ' um das Ganze in Hex-Schreibweise umzuwandeln
                Next

                Return ergebnis
            Catch ex As Exception
                ' stille fehlerbehandlung
                log("Fehler: " & ex.Message)
            End Try
End Function
Es gibt zwei versch. Fehlermeldungen:
1. 'Auf das verworfene Objekt kann nicht zugegriffen werden.'
2. 'Hash im angegebenen Status nicht gültig.'

Die Fehler treten dann auf, wenn man den Bruteforce-Thread oft beendet und neu startet.
Ich habe allerdings keine Erklärung dafür. Weiß jemand Rat?


MfG, BattleMaker
BattleMaker ist offline   Mit Zitat antworten
Alt 17.01.06, 18:10   #6 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Hallo,
also unter .NET ist die StringBuilder-Class xxxxx mal schneller als normale Stringmanipulationen.


Bsp:
Code:
Dim i As Integer
Dim builder As New Text.StringBuilder()
Console.WriteLine("StringBuilder-Durchlauf wird gestartet!")
builder.EnsureCapacity(300000)
For i = 0 To 100000
builder.Append(CStr(i) & Environment.NewLine)
Next i
Console.WriteLine("StringBuilder-Durchlauf fertig!" & _
Environment.NewLine & _
"String-Durchlauf wird gestartet!")
Dim str As String
For i = 0 To 100000
str &= CStr(i) & Environment.NewLine
Next i
Console.WriteLine("String-Durchlauf fertig!")
Zitat:
Auf meinem Rechner (PIII 1200 Mhz, 512 MB Speicher) ergeben sich für die Zahlen von 0 bis 10.000
bei der StringBuilder-Klasse ca. 100 Millisekunden für Strings ca. 4840 Millisekunden, folglich ist die
StringBuilder-Klasse hier um 480% Prozent schneller. Bei noch höheren Anzahlen wird der
Unterschied noch gravierender: Bei den Zahlen bis 100.000 dauert es bei der StringBuilder-Klasse
290 Millisekunden, bei den Strings unglaubliche 1.115.000 Millisekunden, was einer Zeit von ca. 19
Minuten entspricht.
Wie man deutlich sehen kann lohnt sich die Benutzung von StringBuildern also sehr, da man so leicht
einen Geschwindigkeit von 1000% oder mehr erreichen kann. Ein Autor von Microsoft sagte, dass es
auf allen Computern ab ca. zehn Veränderungen einen Geschwindigkeitszuwachs gibt.
Quelle

Aber mich würde doch intressieren, welchen Geschwindigkeiten du so erreichst (mit PC Infos), um mal zu sehen ob .NET wirklich ähnlich schnell ist wie z.B. C++, wie oft versprochen.
Elderan ist offline   Mit Zitat antworten
Alt 17.01.06, 18:15   #7 (permalink)
Senior Member
 
Registriert seit: 28.08.05
2Bios Leistung: Facit NTK
Likes: 0
Standard

wie wäre es mit einer regex implementation für wildchar? sonst ganz gut aufgebaut
2Bios ist offline   Mit Zitat antworten
Alt 17.01.06, 19:13   #8 (permalink)
Themenstarter
 
Registriert seit: 13.03.05
BattleMaker Leistung: Facit NTK
Likes: 0
Standard

@Elderan:
Danke für den Tipp. Bei dem bisherigen Code lässt sich das aber nicht so oft verwenden... (meine 'Methode' ist... battlemaker-isch halt )

Meinen Laptop habe ich 2004 zu Weihnachten bekommen - von ALDI. Also Intel Pentium M 1,7 GHz, 512 MB Ram. Insgesamt schaffe ich mit meinem Programm durchschnittlich zwischen 65000 und 75000 Wörter pro Sekunde.
Mit Cain & Abel, das ich mir zum Vergleich heruntergeladen habe, schaffe ich 3,6 Millionen Wörter pro Sekunde... *schluck*

Aber man wird auch kaum ein .NET-Programm zum professionellen Knacken von Hashes einsetzen .



@2Bios:
Du meinst doch nicht etwa reguläre Ausdrücke?! Aber natürlich wäre auch das wieder eine Herausforderung.



Mein Vater hat übrigens gemeint ich soll eher mal einen Funktionsplotter und solchen Kram programmieren (mit den Ableitungen von Funktionen) usw...


MfG, BattleMaker
BattleMaker ist offline   Mit Zitat antworten
Alt 17.01.06, 19:44   #9 (permalink)
Senior Member
 
Registriert seit: 28.08.05
2Bios Leistung: Facit NTK
Likes: 0
Standard

oh doch
2Bios ist offline   Mit Zitat antworten
Alt 18.01.06, 19:45   #10 (permalink)
 
Registriert seit: 15.01.05
THRALL Leistung: Facit NTK
Likes: 0
Standard

Die Wildcard funktion soltest du noch ausbauen (man muss immoment die länge des Pws kennen).Wie wäre es mit der Funktion "Beginnt mit" oder "Endet mit". Die vermiss ich bei vielen bisherigen Progs. Oder Geburtsdatum im Format ddmmyyy. Sowas als PW verwenden erschreckend viele meiner freunde.
THRALL ist offline   Mit Zitat antworten
Alt 19.01.06, 16:30   #11 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Hallo,
das schnellste Tool wird wahrscheinlich das sein, welches auf Strings/Buchstaben komplett verzichtet.

Dies ist ganz leicht zu erklären.

Wenn ich z.B. 'Hallo Welt', an eine MD5-Hashfunktion übergebe, so wird der Text zuerst in 32 Bit Wörter aufgeteilt, und dann jeweils 4 davon durch den Algorithmus gedreht.

Wenn ich also jetzt in eine Schleife einen Wert hochzähle, dann diesen in einen String umwandle, diesen String an die MD5 Funktion übergebe, diese den String wieder in Zahlen umwandelt, dann kann ich doch gleich auf die Stringbehandlung verzichten.
Denn Strings sind extrem langsam, da diese jedes mal neu erstellt werden.

Das beste wäre, wenn ich den/die Integer-Wert(e) direkt an die MD5 Hashfunktion übergebe.

Somit spare ich mit das Konvertieren von Integer => String und dann String => Integer.
Elderan ist offline   Mit Zitat antworten
Alt 19.01.06, 17:35   #12 (permalink)
Moderator
 
Registriert seit: 12.02.02
sirphreak Leistung: Facit NTK
Likes: 0
Standard

Zitat:

Hallo,
das schnellste Tool wird wahrscheinlich das sein, welches auf Strings/Buchstaben komplett verzichtet.
Jap, also für sawas habe ich immer Bitfelder benutzt, denn die sind so mit das schnellste, (nicht nur) wenn es um Permutationen geht, da diese auf einem heutigen Prozessor sehr schnell und gut implementierbar sind.

grüße sirphreak

PS: Aber ob VB sowas kann ?(
sirphreak ist offline   Mit Zitat antworten
Alt 19.01.06, 17:54   #13 (permalink)
 
Registriert seit: 17.01.06
Oi!Alex Leistung: 8086
Likes: 7
Standard

Zitat:
Original von sirphreak
PS: Aber ob VB sowas kann ?(
Also in C# gibt es nicht d.h. wird in VB.Net auch nicht geben

ich fummel auch momentan an einem bruteforce programm rum und irgend wie komm ich nur auf um die 40.000 kombinationen pro sekunde wobei auch die methode nach der es cheffriert wird etwas langsam ist mal schauen ob ich die irgend wie kürzen kann so das das ergebnis stimmt...
Oi!Alex ist offline   Mit Zitat antworten
Alt 20.01.06, 14:26   #14 (permalink)
Moderator
 
Registriert seit: 12.02.02
sirphreak Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Also in C# gibt es nicht d.h. wird in VB.Net auch nicht geben
Also in C# gibt es zu 100% Bitweise Operationen wie und, oder, usw.
sirphreak ist offline   Mit Zitat antworten
Alt 20.01.06, 20:04   #15 (permalink)
 
Registriert seit: 17.01.06
Oi!Alex Leistung: 8086
Likes: 7
Standard

aber keine bitfelder...
Oi!Alex ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Security Area » Cryptography & Encryption » Mein eigenes Bruteforce-Tool
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mein Eigenes Netz knacken nitramf WLAN-Zone 10 04.10.07 14:23
Wie kann ich mein eigenes WLan überwachen ? DoppelXX WLAN-Zone 7 16.09.07 12:40
tool damit mein windows schneller lädt alexanderus Windows 3 12.10.03 20:47


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61