Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 02:01

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



C# Verbessertes BruteForce Programm

Discussion on C# Verbessertes BruteForce Programm within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Mar 2008
Posts: 105
Received Thanks: 40
Arrow C# Verbessertes BruteForce Programm

Dieses Thread stammt nicht von mir ich habe ihn für euch kopiert

Dieses Tutorial basiert auf [C#] simples BruteForce-Programm programmieren

Die dort gemachte Funktion ist jedoch für die verbesserte Form nicht zu gebrauchen, weil sie nicht die passende Struktur hat.
Also bennen wir den Funktionsnamen mal eben um, in z.B. "alter_hauptteil".
Man könnte ihn über diesen Namen weiterhin aufrufen.

Jetzt machen wir uns eine neue Funktion.
Code:
private void hauptteil()
{

}Aus dem alten Code wird noch die Funktion hauptteil aufgerufen, jedoch wird jetzt die neue aufgerufen, weil die Alte umbenannt wurde.


Und jetzt muss erstmal gründlich nachgedacht werden
Also, was wollen wir?
Zum einen wollen wir mehr Zeichen haben. Das könnte man nach dem alten Verfahren machen, indem man einfach mehr Zeichen zu dem string hinzufügt, aber wir wollen ja etwas neues Lernen, also machen wir es über ASCII.
In der Tabelle auf Wikipedia sieht man, dass die lesbaren Werte im dezimalen Zahlensystem von 33 bis 126 sind.
Ausserdem wollen wir, dass er automatisch die Anzahl der Stellen erhöht.

Das Erhöhen der Stellen könnte man mit einer for-schleife erledigen.ErklärungSyntax:
Code:
for ((variabledekleration);(bedingung);(ausführung))
{
//Anweisungen
}Zuerst muss man eine Variable deklarieren. Diese existiert nur so lange wie man sich in dieser Schleife befindet.
Die Anweisungen werden nur ausgeführt, solange die Bedingung wahr ist.
Nach jedem schleifendurchganz wird noch einmal eine FUnktion ausgeführt.

Üblichweise sind all diese Dinge auf eine Variable beschränkt, dies ist jedoch keine Verpflichtung.

Eine for-schleife kann man ebenfalls mit
Code:
break;beenden.

Als Bedingung würde sich wieder button2.Visible anbieten.

Code:
for (int stellen = 1; button2.Visible; stellen++)
{

}Der Startwert muss auf 1 gesetzt werden, weil wir ja mit einer Stelle anfangen wollen. Man kann den Wert auch hochsetzen um mit mehr Stellen zu starten.

Als nächstes benötigen wir wieder ein char Array, diesmal jedoch um die Stellen zu speichern.
Code:
char[] passwort = new char[stellen];Ausserdem brauchen wir einen counter, mit dem wir auf die einzelnen Stellen zugreifen können.
Code:
int counter = 0;Unser char Array ist jedoch noch komplett leer. So würde es zu Fehlern führen, also füllen wir es mit dem ersten Zeichen, der 33.
Code:
for (int tmp = 0; tmp < stellen; tmp++)
{
passwort[tmp] = (char)33;
}ErklärungDie for-schleife sollte klar sein, aber die Anweisung ist neu.
Wir haben ein char, in das jedoch eine Zahl rein muss. Deshalb muss die Zahl in char konvertiert werden. Die einfachste Möglichkeit ist casten.
Dazu schreibt man einfach einfach den gewünschten Zieltyp in Klammern vor den Wert.
Alternativ könnte man auch
Code:
Convert.ToChar(33)verwenden, jedoch ist casten kürzer und übersichtlicher.


Und nun brauchen wir wieder eine Endlosschleife.
Code:
while (true)
{

}Diese Schleife muss jedoch mit break beendet werden, weil sie ansonsten nie beendet werden kann.

Und jetzt kommt der Grund, weshalb ein casten hier vorzuziehen ist:

Code:
if ((int)passwort[counter] < 126)
{
passwort[counter] = (char)(((int)passwort[counter]) + 1);
}ErklärungZuerst wird verglichen, ob der Wert der aktuell benutzen Stelle noch unter 126 ist. Wenn ja wird der Wert zu einer Zahl gecastet, um eins erhöht und wieder zurück zu einem char Wert gecastet.



dahinter kommt das Gegenstück, die else-Anweisung. Sie muss den Wert zurück auf 33 setzen und den nächsten um einen erhöhen.

Code:
else
{
passwort[counter] = (char)33;
counter++;Damit erhält man schonmal Zugriff auf den nächsten Wert. Wenn man jedoch bereits die letzte Stelle erreicht hatte und auf die nächste zugreifen will gibt es einen Fehler. Dies ist die Stelle, an der man die Anzahl der Stellen erhöhen muss, also das Ende der for-schleife erreichen muss.
Um jedoch nicht eine Fehlermeldung auszulösen brauchen wir try/catch.ErklärungCode:
try
{
//zu versuchende Anweisung
}
catch
{
//bei Fehler auszuführende Anweisung
}
finally
{
//in jedem Fall danach auszuführende Anweisungen
}Es wird versucht die Anweisung im try-Block auszuführen. Sollte dort jedoch ein Fehler passieren, wird die Anwendung nicht beendet, sondern es wird der catch-Block ausgeführt. Der finally-Block wird danach immer ausgeführt. Dabei ist es egal ob es zum Fehler kam oder nicht.
Er ist jedoch optinal und man braucht ihn eigentlich selten, wenn man z.B. mit Verbindungen arbeitet und man sauber arbeiten will wird sie im try-Block aufgebaut und im finally wieder beendet.


Code:
try
{
passwort[counter] = (char)(((int)passwort[counter]) + 1);
}
catch
{
break;
}Sollte jetzt die Stellenanzahl erhöht werden müssen wird ein Fehler ausgelöst. Durch die break Anweisung wird die while-Schleife beendet und das Ende der for-Schleife erreicht. Dadurch wird die Anzahl der Stellen um eins erhöht und alles geht von vorne los

Jedoch passiert das nur ein mal, weil nicht überprüft wird, welches Zeichen die zweite Stelle hat. Aus diesem Grund muss noch dieser Code mit in den try-Block:
Code:
if ((int)passwort[counter] > 125)
{
goto erneut;
}
counter = 0;Es wird überprüft, ob der Wert noch unter 125 liegt. Wenn nicht wird die goto-Anweisung ausgeführt. Diese Anweisung sollte man nicht zu oft benutzen. Sie kann zu unüberschaubarem Spaghetticode führen.
ErklärungDie goto-Anweisung springt zu einer gesetzten Marke.
Code:
marke:wird benutzt um die Marke zu setzen und mit
Code:
goto marke;kann man zu dieser Marke springen.


Diese Marke setzen wir direkt an den Anfang der while Schleife. In diesem Fall müssen wir sie
Code:
erneut:nennen.
Hinter dem ganzen else-Block kommt jetzen jetzt noch die Anweisungen um Die Anzeige zu aktualiseren, zu überprüfen ob es noch weiterlaufen darf und man braucht wieder die Funktion, um zu verhindern das sich das Programm aufhängt.
Code:
label1.Text = "";
for (int tmp = 0; tmp < stellen; tmp++)
{
label1.Text = label1.Text + passwort[tmp].ToString();
}
Application.DoEvents();
if (button1.Visible)
{
return;
}Zuerst wird der Text gelöscht und anschließend Zeichen für Zeichen zusammengebaut. Dann das Application.DoEvents(); und zum Schluss wird überprüft, ob der Startbutton wieder sichtbar ist (= Stopbutton wurde gedrückt) und mit return wird die Anwendung beendet wenn dies der Fall ist.


Herzlichen Glückwunsch, du hast einen funktionsfähiges BruteForce Programm programmiert. Die Anweisungen können unter die Marke der goto-Anweisung.



Da sind dann eigentlich nur noch zwei Dinge die mich etwas genervt haben und die ich geändert habe:

1.
Wenn man nicht auf Stop drückt und das Programm einfach so beendet rechnet er weiter und verbraucht die Rechenkraft
Um das zu beheben geht man zurück auf den Entwurf, markiert und die Form und klickt im Eigenschatsfenster oben auf den gelben Blitz. Hier kann man Events einstellen, welche bei bestimmten Ereignisen ausgeführt werden.
Such nach "FormClosing" und klick doppelt drauf. In die neu generierte Funktion schreibt man das selbe wie bei dem Stopknopf:
Code:
button2.Visible = false;
button1.Visible = true;2.
Ein Label ist für sowas eigentlich gar nicht gemacht. Es ist da um Informationen anzuzeigen, aber nicht um ständig einen neuen Text zu bekommen, also habe ich das Label gelöscht und mit eine Textbox dahingesetzt. Der hab ich die Eigenschaft ReadOnly gegeben.
Anschließend muss man nur noch die label1 im code in textBox1 ändern.
Der Rest bleibt gleich.


Und jetzt wieder mal mein kompletter Code:

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Bruteforce
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
button1.Visible = false;
button2.Visible = true;
hauptteil();
}

private void button2_Click(object sender, EventArgs e)
{
button2.Visible = false;
button1.Visible = true;
}

private void alter_hauptteil()
{
char[] zeichen = new char[26];
zeichen = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
int counter = 0;
//label1.Text = zeichen[counter].ToString();
while (button2.Visible)
{
if (counter >= 26)
{
counter = 0;
}
label1.Text = zeichen[counter].ToString();
counter++;
Application.DoEvents();
}
}

private void hauptteil()
{
for (int stellen = 1; button2.Visible; stellen++)
{
char[] passwort = new char[stellen];
int counter = 0;
for (int tmp = 0; tmp < stellen; tmp++)
{
passwort[tmp] = (char)33;
}
while (true)
{
erneut:
/*
* Platz für Anweisungen
*/
MessageBox.Show(textBox1.Text);
if ((int)passwort[counter] < 126)
{
passwort[counter] = (char)(((int)passwort[counter]) + 1);
}
else
{
passwort[counter] = (char)33;
counter++;
try
{
passwort[counter] = (char)(((int)passwort[counter]) + 1);
if ((int)passwort[counter] > 125)
{
goto erneut;
}
counter = 0;
}
catch
{
break;
}
}
textBox1.Text = "";
for (int tmp = 0; tmp < stellen; tmp++)
{
textBox1.Text = textBox1.Text + passwort[tmp].ToString();
}
Application.DoEvents();
if (button1.Visible)
{
return;
}
}
}
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
button2.Visible = false;
button1.Visible = true;
}
}
}

Credits:

Quelle: MasterGamer
Kopierer: jphecht
jphecht is offline  
Reply


Similar Threads Similar Threads
[HowTo]Verbessertes Startset
07/09/2011 - Metin2 PServer Guides & Strategies - 18 Replies
Hallo liebe Com. Da das Startset Script von Veon relativ einfach ist und viele ein Problem beim bearbeiten des Startsets haben, habe ich mir die Mühe gemacht und es etwas bearbeitet. Hier findet ihr 3 verschiedene Arten von Anfängersets. 1. Startset LvL 30+ (Überarbeitetes Anfängerset)
Erstes Deutsches All-in-One Multiboxing Programm (Offizieles Legales Programm)
07/10/2010 - World of Warcraft Trading - 2 Replies
Noch nie war Multiboxing leichter, MMObox unterstützt Sie mehrere Charaktere gleichzeit zu spielen, dabei wird nur ein PC benötigt. MMObox steuert im Hintergrund Ihre Charaktere mit Makros. Bis zu 5 Cahraktere gleichzeitig steuern Es wird nur ein PC benötigt Makrofunktionen für alle Charaktere z.b Alle folgen, essen, trinken, aufsitzen....
Bruteforce help !
03/24/2007 - Conquer Online 2 - 6 Replies
I would like to know if there is a means of using Bruteforce for conquest. Pliz I made several research without convincant result. Pliz helped me!
BRUTEFORCE
02/25/2007 - Main - 1 Replies
Huhu leute also bei euch gibts ja sicher ein paar die Brute-force beherrschen Also ich habe Brutus AET2 Und weiss wies funzt also ich brings zum laufen :D Nur hab ich folgende Probleme wenn ich z.b einen Account hacken will von z.b www.gmx.de geht das ja net dann muss ich irgendwie über ftp oder irgendwie so z.b ftp.gmx.de oder kA Nun wie finde ich die ftp oder die HTTP adresse raus ???
UPDATE:Verbessertes x-Fish script Version 2.3
08/11/2006 - WoW Exploits, Hacks, Tools & Macros - 122 Replies
Servus ich hab mich mal drangesetzt und hab mal das von Lowfyr gepostete x-fish script etwas verbessert was Performance Detectbarkeit und Funktionalität angeht. Wichtigste Änderung: es wird nun automatisch ein Köder angebracht (was das AFK fischen in z.B. Winterspring möglich macht) Changelog Update 16.01.06 ;changes by berzerkwolf&#58; ;Version 2.0



All times are GMT +1. The time now is 02:02.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.