P
Patrick_GAST
Gast
Hallo
ich arbeite gerade an einem Programm das zum auffinden von Sicherheitslücken im lokalen Netz und Webanwendungen dienen soll, in diesem Projekt habe eine Klasse BruteForce, mit einer rekursiven Methode, geschrieben um schwache Passwörter aufzuspüren, hierfür verwende ich die Ascii Tabelle von '!' bis '~'. Um es nicht zu performancelastig zu gestallten arbeite ich mit char Arrays und nicht mit Listen oder dergleichen.
Leider führt es immer wieder zu StackOverflows, nachdem ich den gc an so ziemlich jeder Stelle manuel aufgerufen haben ist es ein wenig weiter gelaufen aber das reicht nicht, gibt es Programmiermethoden um dieses Problem zu umgehen?
Hier der Code:
Ist noch teilweise einbischen unschön aber ist ja auch noch prealpha
Liegt das jetzt an Java oder hab ich Mist programmiert... oder beides ???:L
Schönen Tag noch
ich arbeite gerade an einem Programm das zum auffinden von Sicherheitslücken im lokalen Netz und Webanwendungen dienen soll, in diesem Projekt habe eine Klasse BruteForce, mit einer rekursiven Methode, geschrieben um schwache Passwörter aufzuspüren, hierfür verwende ich die Ascii Tabelle von '!' bis '~'. Um es nicht zu performancelastig zu gestallten arbeite ich mit char Arrays und nicht mit Listen oder dergleichen.
Leider führt es immer wieder zu StackOverflows, nachdem ich den gc an so ziemlich jeder Stelle manuel aufgerufen haben ist es ein wenig weiter gelaufen aber das reicht nicht, gibt es Programmiermethoden um dieses Problem zu umgehen?
Hier der Code:
Code:
public class BruteForce {
private String toCompare = "!";
private char[] array;
private boolean geschafft = false;
public BruteForce()
{
array = toCompare.toCharArray();
}
//Erzeugt neues Array und kopiert die Werte des Alten
//zusätzlich wird im letzten Feld noch der Initialwert gesetzt
private char[] increaseArraySize(char[] zeichen)
{
char[] newCharSequenze = new char[zeichen.length + 1];
int index = 0;
for(; index < zeichen.length; index++)
{
newCharSequenze[index] = zeichen[index];
}
newCharSequenze[index] = 0x21;
zeichen = null;
System.gc();
return newCharSequenze;
}
//Ausgabe Funktion
private void ausgabe()
{
System.gc();
for(int count = 0; count < array.length; count++)
{
System.out.print(array[count]);
}
System.out.println();
}
//rekursive methode um alle Fälle durchzugehen bis geschafft
private void increase(int index)
{
if(!geschafft)
{
System.gc();
//falls der übergeben Index im array vorkommt
if(index < array.length)
{
ausgabe();
compare();
//wird der Wert um +1 erhöht
array[index]++;
//falls dieser Wert dann größer ist als 0x7E also '~'
if(array[index] > 0x7E)
{
System.out.println("greater then");
//wird der Wert wieder auf den Startwert gesetzt
array[index] = 0x21;
//und increase wird mit dem nächst höheren index aufgerufen
increase(index+1);
}
//falls der Wert kleiner als 0x7E ist
else
{
//wird increase mit Startindex aufgerufen
increase(0);
}
}
//falls der übergebene index nicht im array vorkommt
else
{
System.out.println("erweitere Array");
//wird das Array erweitert
array = increaseArraySize(array);
//und increase mit Startindex aufgerufen
increase(0);
}
}
}
//Vergleichsfunktion
private void compare()
{
toCompare = new String(array);
System.gc();
if(toCompare.equals("TEST"))
{
geschafft = true;
System.out.println("GESCHAFFT!!!");
}
}
public void start()
{
increase(0);
}
}
Ist noch teilweise einbischen unschön aber ist ja auch noch prealpha
Liegt das jetzt an Java oder hab ich Mist programmiert... oder beides ???:L
Schönen Tag noch