[B] Bruteforce source by ZiG Verfasst am: 06.08.2007, 17:00
Hi Leute.
Da der Brutforce code den ich mal gefunden und gepostet habe scheinbar nicht ganz korrekt funktioniert und man ihn auch nicht leicht anpassen kann für seine Bedürfnisse, hab ich mal selbst einen code geschrieben.
Da ich eine Funktion daraus gemacht habe, könnt ihr ihn ziemlich leicht einsetzen. Oder ihr seht euch einfach mal an wie das ganze funktioniert. Ich kann euch aber gleich sagen das es nicht so leicht zu verstehen ist.
Hier mal die Grundfunktionen:
Er liest eine beliebige Zeichenkette ein. Z.B: "abcdefgIJKD21321". Und benutzt nur diese Zeichen dann.
Auf Permutation(Wikipedia) habe ich verzichtet. Das ist mir noch etwas zu steil.
Man kann die minimale und maxmimale Länge der Wörter eingeben.
Ich hab mir auch Mühe gegeben die Geschwindigkeit ans Maximum zu bringen, aber bei VB gelangt man leider schnell an seine Grenzen.
Mehr als 200.000 Wörter pro Sekunde schafft mein Computer nicht. (Ist aber ne lahme Ente^^).
Das ist kein Vergleich mit Codes in C++ etc, aber für VB sicher nicht schlecht.
Am besten nutzt ihr ihn für z.B. FTP Bruteforce, ICQ , Rar, etc.
Dort kann man sowieso nicht so schnell bruten.
Hier mal die Funktion:
Code:
Private Function BruteForce(ByVal CharString As String, ByVal xMin As Long, ByVal xMax As Long) As Boolean
On Error GoTo Err:
'Wenn keine Zeichen in CharString sind, dann wird abgebrochen
If Len(CharString) = 0 Then Exit Function
'Deklarationen
Dim i As Long, x As Long 'Zähler für die For Schleifen
Dim xCount As Long
Dim check As Boolean, Check2 As Boolean
Dim word As String
Dim CharArray() As Long, CharCount As Integer
Dim buffer() As Long, BufferCount As Long
'xCount ist die aktuelle Länge der Wörter die erstellt werden
xCount = xMin
'Hier lesen wir die Zeichen aus CharString in ein long Array ein.
'#########################
'In CharCount steht die Anzahl der Zeichen
CharCount = Len(CharString)
ReDim CharArray(CharCount)
For i = 1 To CharCount
CharArray(i) = Asc(Mid(CharString, i, 1))
Next i
'#########################
'Schleife die solange läuft bis "xCount" gleich "xMax" ist
Do
'Die ersten Zeichen werden in Buffer geladen
BufferCount = xCount
ReDim buffer(BufferCount)
For i = 1 To xCount
buffer(i) = CharArray(1)
Next i
'Erstes Wort wird erstellt
For i = 1 To BufferCount
word = word & Chr(buffer(i))
Next i
'Hier könnt ihr euren code einsetzen
'In word ist logischerweise das Wort jetzt drinnen
'Das ist aber immer nur das erste Wort jeder Wortlänge.
'Weiter unten müßt ihr nochmal den selben code eingeben.
'word umbedingt danach leeren.
word = ""
'Schleife die solange läuft bis alle Zeichen in "buffer" das letze Zeichen in CharArray geworden sind"
'Das heißt bis alle Kombinationen mit dieser Länge an Zeichen erstellt wurden
Do
'Schleife in der die Zeichen solange erhöt werden bis sie das letze Zeichen in CharCount sind
For i = xCount To 1 Step -1 'Diese Schleife läuft rückwärts. Das ist für buffer.
'Falls buffer(i) das letze Zeichen in CharCount erreicht hat
If buffer(i) = CharArray(CharCount) Then
'Und wenn i ungleich 1 ist. (Wenn i gleich 1 wäre, dann gibt es nichts mehr davor zu erhöhen.
If i <> 1 Then
'Jetzt überprüfen wir das Zeichen vor i, ob es ungleich dem letzen Zeichen in CharArray ist.
If buffer(i - 1) <> CharArray(CharCount) Then
'Wenn ja, dann wird i wieder das erste Zeichen zugewiesen
buffer(i) = CharArray(1)
'Und i-1 müßen wir das nächste Zeichen zuweisen
'Das geht nur, wenn wir erstmal wissen welches Zeichen nach diesem im CharArray steht
'Hierzu eine Schleife, die im CharArray nach diesem Zeichen sucht.
For x = 1 To CharCount
If buffer(i - 1) = CharArray(x) Then
buffer(i - 1) = CharArray(x + 1)
Exit For
End If
Next x
Exit For
End If
Else
Exit For
End If
Else
'Wenn buffer(i) noch nicht das letze Zeichen erreicht hat, dann wird ihm einfach das nächste Zeichen zugewiesen
'Das geht nur, wenn wir erstmal wissen welches Zeichen nach diesem im CharArray steht
'Hierzu eine Schleife, die im CharArray nach diesem Zeichen sucht.
For x = 1 To CharCount
If buffer(i) = CharArray(x) Then
buffer(i) = CharArray(x + 1)
Exit For
End If
Next x
Exit For
End If
Next i
'Wort zusammensetzen
For i = 1 To BufferCount
word = word & Chr(buffer(i))
Next i
'Hier könnt ihr euren code einsetzen
'In word ist logischerweise das Wort jetzt drinnen
'word umbedingt danach leeren.
word = ""
'In einer Schleife überprüfen ob vielleicht schon alle Zeichen in buffer() das letze Zeichen in CharArray erreicht haben.
'Falls ja, dann kann die Schleife verlassen werden. Ansonsten läuft sie weiter.
For i = 1 To BufferCount
If buffer(i) = CharArray(CharCount) Then
Check2 = True
Else
Check2 = False
Exit For
End If
Next i
DoEvents
Loop Until Check2
'Falls xcount die maximale Anzahl der zu erstellxmaxn Länge an Zeichen erreicht hat, wird die Schleife verlassen.
If xCount = xMax Then check = True
xCount = xCount + 1
Loop Until check
BruteForce = True
Exit Function
Err:
BruteForce = False
End Function
Das ist ein kleiner Dictionary-Maker. Mit der Bruteforce Methode werden also Wörter in einer Datei erstellt.
Es sind auch ein paar Funktionen programmiert, wie ihr an der Gif Animation sehen könnt, die euch vielleicht interessieren.
Animation
Also, hf _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
Zuletzt bearbeitet von ZiG_ am 15.11.2007, 11:02, insgesamt 2-mal bearbeitet
das ist doch mal ne runde sache!
also gut erklärt ,verständlich dargestellt und dann noch mit beispielen!
!Hut ab und bis zum Boden verneigen!
klasse, ZiG! _________________ Wie findet ihr meine Sig?
Jolo_ Coder
Anmeldedatum: 20.03.2007 Beiträge: 210
Verfasst am: 13.08.2007, 20:02
Thx ZiG
Ich wollte schon immer mal wissen wie das mit dem Bruteforce in VB Funktioniert _________________
regenz11_ Coder
Anmeldedatum: 29.07.2007 Beiträge: 77
Verfasst am: 29.10.2007, 15:05
danke, du hast es echt drauf .... respekt _________________