VB.net Bruteforce developement

Hi,

ich bin gerade dabei mir einen möglicht Performance starken Bruteforcer zu coden.

Klar gibt es sowas schon aber es reizt mich halt das selber zu machen.
Ich habe hier im Forum bereits folgendes gefunden:

Thread 193102

funktioniert auch soweit wenn ich den code in c#.net compiliere. Mein Problem an der Sache ist das ich das Frondend schon in VB programmiert habe und jetzt das Backend implementiert werden soll.

Ich habe mir den Code soweit in VB übersetzt, allerdings bekomm ich eine Fehlermeldung nach dem 5. durchlauf.

Leider (liegt vll auch an der Uhrzeit) finde ich das Problem nicht warum der bei den Rechenoperationen einen Fehler macht.


/edit Portiert von Thread 193102:
/edit Korrigierter Code
Code:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim loweralpha As String = "0123456789"
Dim wordlengh As Integer = CInt(TextBox3.Text)

For i As Integer = 1 To wordlengh
bruteforce(loweralpha, i)
Next


End Sub

Private Sub bruteforce(ByVal charset As String, ByVal lengh As Integer)

Dim startw As Long = 0
Dim endw As Long = CLng(Math.Pow(charset.Length, lengh))

Dim d(lengh + 1) As Long
Dim charsetarray() = charset.ToCharArray

Dim charsetlengh As Integer = charset.Length

Dim s As New StringBuilder


For i As Integer = lengh To 0 Step -1
d(i) = CLng(Math.Pow(charsetlengh, i))
Next

Do While startw < endw
s.Remove(0, s.Length)
Dim mw As Long = startw

For i As Integer = lengh To 0 Step -1
Dim w As Integer = CInt(mw d(i))

If i = lengh Then
If w <> 0 Then
s.Append(charsetarray(w))
End If
Else
s.Append(charsetarray(w))
End If
mw = mw - (w * d(i))
Next
t_out.AppendText(s.ToString & vbCrLf)
Application.DoEvents()
startw = startw + 1
Loop
End Sub

Screen der Fehlermeldung


ich habe keine Ahnung warum der sich verrechnet ... in C# funktioniert es einwandfrei.

vielleicht könnt Ihr mir weiterhelfen danke schonmal im vorraus.
 
Also zum Einen kannst du ein Backend in C# und ein Frontend in VB.net machen, wenn du das vernünftig getrennt hast, das brauche ich derzeit nämlich mit einem Bekannten, da ich kein VB.net kann und er kein C#,
und zum Zweiten sollte die Fehlermeldung doch selbsterklärend sein. Du benutzt einen Arrayindex, der nicht existiert. Die einzige Stelle, die ich da so auf die schnelle und ohne wirklich große VB.net Kenntnisse erkennen konnte, ist, dass du dein w falsch berechnest. Wenn du dir das unten im Debugger ansiehst, hat es den Wert -4.0, was natürlich nicht stimmen kann. Der eigentliche Fehler liegt aber sicher weiter oben, da ja auch mw bereits -4.0 ist und du mw für die Berechnung von w nutzt.
 
Original von lightsaver
Also zum Einen kannst du ein Backend in C# und ein Frontend in VB.net machen, wenn du das vernünftig getrennt hast, das brauche ich derzeit nämlich mit einem Bekannten, da ich kein VB.net kann und er kein C#,

Kla geht das einfach als dll Recource einbinden

Original von lightsaver
und zum Zweiten sollte die Fehlermeldung doch selbsterklärend sein. Du benutzt einen Arrayindex, der nicht existiert. Die einzige Stelle, die ich da so auf die schnelle und ohne wirklich große VB.net Kenntnisse erkennen konnte, ist, dass du dein w falsch berechnest. Wenn du dir das unten im Debugger ansiehst, hat es den Wert -4.0, was natürlich nicht stimmen kann. Der eigentliche Fehler liegt aber sicher weiter oben, da ja auch mw bereits -4.0 ist und du mw für die Berechnung von w nutzt.


hmm selbsterklärend ist das nicht, da der portierte Code nicht funktioniert. Ich konnte leider keinen Portierungsfehler finden, liegt vll daran das ich kein C# kann. Denn wie schon gesagt unter C# compiloiert funktioniert das so wie es soll.

Das einzigste was ich zu C# geändert habe ist, die als Long Deklarierten Variabeln zu Double gemacht.

Mysteriös, nachdem die 5 Ausgegeben wurde sollte die 6 kommen und nicht die -4, desswegen stell ich mir die Frage ob die Pow Funktion bei c# und vb.net gliech ist, müsste aber , da sie ja im .NET framework implementiert ist.

Gruss, vll findet jemand einen Fehler in meinem Source wenn ichs gelöst habe Poste ich die dann hier.


//edit... HAHAHAHAHAHA

ich guck mir gerade den Source an und da fällt mein Blick auf eine Stelle die vielleicht in C# anders zu interpretieren ist:

Code:
alt:
Dim w As Integer = CInt(mw / d(i))
neu:
Dim w As Integer = CInt(mw \ d(i))


Wichtig an dieser Stelle ist wohl die Ganzzahlendivision, was ich nicht wusste das es da anscheinend nur einen Divisionsoperator gibt oder bei Integerdivision das automatisch eine Ganzzahlendivision wird.


Danke dir lightsaver nur weil du weiter oben gesagt hast hab ich nochmal über die Deklaration geschaut.

-------------
Oben Im Source verbessert. Funktioniert !



//edit


Weiß schon jemand etwas von einer Multicore unterstützung bei VB.Net?
und wie ich das realisieren kann?
 
zu der Frage mit der Multi-Core unterstützung.

habs gerade gesucht aber nicht gefunden...musst mal vielleicht googlen.
in den einstellungen bzw. kompilierungsoptionen kann man das einstellen, ob er single oder multi-CPU fähig sein soll.
 
Ich würde versuchen mehrere Threads zu benutzen um das Programm MultiCorde fähig zu machen, da sonst die CPUs nicht wisen WAS sie gleichzeitg ausführen sollen
 
das wäre das was ich dazugefunden hab...

http://blogs.msdn.com/pfxteam/


@Octane
Ja das mit den Compilierungsoptionen stimmt schon, nur ich hab bei mir auf meinem Rechner leider nur x86 oder x64 als Prozessorwahl. Hab gestern mein neues Notebook bekommen, und kann ab jetzt mal ausgiebig Testen in wie weit das funktioniert mit der Parallelprogrammierung oder eben auch nicht. Mal sehn was ich rausfinde.

Die bisherige Version hänge ich mal als Download an, bitte nicht wundern das es für security-shell.ws geschrieben wurde.

Code:
http://rapidshare.com/files/271514153/dfglkjlkg5556.rar
PW: security-shell.ws


Fals jemandem etwas auffällt was man an der Performance noch verbessern kann. Soll er dies hier Posten, ich werden dann die Version aktuell halten und falls bedarf besteht, werde ich es auch für Hackerboard weiterentwickeln und auch dementsprechend auszeichnen.


so long.. ..
 
Zurück
Oben