Brute Force Programm bricht nach einiger Zeit ab.

Schönen Guten Abend wünsche ich :D

Ich lese jetzt schon einige Zeit hier im Forum und muss sagen, dass es hier wirklich interessant ist :)

Zu meiner Frage:
Ich schreibe im Moment ein Brute Force Programm in Java für WinRAR Archive. Mittlerweile bin ich auch schon so weit das es eingesetzt werden kann.
Nun ist mir bei den Testläufen jedoch aufgefallen, dass die Abarbeitung nach etwa 150 versuchten Passwörtern einfach abbricht.
Ist dieses Problem oder so ein ähnliches vllt bekannt?
Kann es sein das WinRAR nach einer bestimmten Anzahl an misslungenen Passwortversuchen zu macht?

Ich teste das Passwort in dem ich eines generiere und dann das WinRAR Archiv per Shell aufrufe und dann die Rückgabe auswerte.

Wenn der Quellcode benötigt wird bitte einfach bescheid sagen.

Vielen Dank im Vorraus und eine angenehme Nachtruhe ;)

mfg Runnerle
 
Hallo,

zum einen herzlich Willkommen im Forum, zum anderen muss ich sagen, dass ich es gut finde, wenn sich User selber Programme schreiben ;)

Mir ist es nicht bekannt, dass WinRAR solch Sicherheitseinstellung gegen BruteForce - "Attacken" besitzt, daher denke ich eher das es an deinem Programm liegen wird.

Bekommst du denn eine Fehlermeldung nach dem Abbruch ?

Natürlich wäre es gut, deinen Quelltext (soweit du es möchtest) zur Verfügung zu stellen, damit sich Java-Coder o.a. sich diesen mal zur Brust nehmen.

Ich habe selber 2 Jahre Java auf Client-Server-Ebene programmiert, vielleicht hilft mir dein Quelltext dann auch mehr und ich kann dir dann ggf. besser Hilfestellung geben.

Grüße

Zephyros
 
ich als nich java coder würde jetzt auf ein speicherproblem tippen? vielleicht läuft speicher voll und java mag nich mehr?
 
Erstmal vielen Dank für die Antworten :)

Original von Zephyros
Hallo,

zum einen herzlich Willkommen im Forum, zum anderen muss ich sagen, dass ich es gut finde, wenn sich User selber Programme schreiben ;)

Mir ist es nicht bekannt, dass WinRAR solch Sicherheitseinstellung gegen BruteForce - "Attacken" besitzt, daher denke ich eher das es an deinem Programm liegen wird.

Bekommst du denn eine Fehlermeldung nach dem Abbruch ?

Natürlich wäre es gut, deinen Quelltext (soweit du es möchtest) zur Verfügung zu stellen, damit sich Java-Coder o.a. sich diesen mal zur Brust nehmen.

Ich habe selber 2 Jahre Java auf Client-Server-Ebene programmiert, vielleicht hilft mir dein Quelltext dann auch mehr und ich kann dir dann ggf. besser Hilfestellung geben.

Grüße

Zephyros
Danke für den netten Empfang ;)
Es wird keine Exception geworfen, jedenfalls wird mir keine Angezeigt.
Wenn ich nach hause komme werd ich mal die Hauptfunktionen hier posten, d.h die funktion zur Pw Überprüfung und die zur Berechnung des Passwortes.

Original von Chakky
ich als nich java coder würde jetzt auf ein speicherproblem tippen? vielleicht läuft speicher voll und java mag nich mehr?
Soweit ich weiß besitzt Java einen Garbage Collector der den Speicher sauber hält, aber ich lasse mich auch überaus gerne eines besseren belehren ;)

PS: hab gestern nochmal nachgezählt, er bricht nach genau 256 Operationen ab, komischer wert...

mfg Runnerle
 
Es gibt eine Option mit der du in der VM von Java mehr speicher anfordern kannst, solltest du mal damit testen.Ich denke auch das es ein Speicherproblem ist oder aber ein Fehler in einer Abbruchbedingung.
Poste mal deinen Code.
mfg

sw33t
 
Sooo, nachdem ich jetzt erfolglos noch ein paar Sachen getestet habe und immernoch nicht weiter bin, poste ich hier mal die 2 eigentlichen Hauptfunktionen:

Die Funktion zur Prüfung des Passworts auf Richtigkeit:
Code:
public boolean Passwort(String Try){
		Validate = new ProcessBuilder("cmd", "/c", "rar t -p" + Try, File);
		Validate.directory(new File(realPath));
		try{
			process = Validate.start();
			}
			catch(IOException e){
				System.out.println(e);
			}
			Scanner scan = new Scanner(process.getInputStream()).useDelimiter("\\Z");
			while(scan.hasNextLine()){
				if(scan.nextLine().length() == 6){
					return true;
				}
				else{
					
				}
			}
			return false;
	}

Die Funktion die die Passwörter generiert:
Code:
public void run(){
		
		//Start
		do{
			Appender.append("Es gibt " + Char.length + "^" + Start + " Möglichkeiten. \n\r");
			for(int i = 0; i <= arr.length-1; i++){
				arr[i] = 0;
			}
			
			while(true){
				Counter++;
				Erg = "";
				
				try{
					
					for(int i = 1; i<=Start; i++ ){
						Erg += Char[arr[i-1]];
					}
					arr[Start-1]++;
					System.out.println(Erg);
					
						for(int i = Start; i >= 1; i--){
							if(arr[i-1] > Char.length-1){
								arr[i-2]++;
								arr[i-1] = 0;
							}
						}
						
						if(Passwort(Erg) == true){
							Appender.append("Das Passwort lautet " + "\"" + Erg + "\"" + " ! \r\n");
							Start = End;
							Index.setDefaults();
							break;
						}
					
				}
				catch(IndexOutOfBoundsException e){
					Appender.append("Keine Übereinstimmung mit " + Start + " Stellen gefunden. \n\r");
					break;
				}
				
				
			}
			
			Start++;
			
		}
		while(Start <= End);
		//End

	}

Der Code sieht noch ziemlich Chaotisch aus, und die meisten Probleme sind nicht sehr performant gelöst, jedoch wollte ich das Programm erst ans Laufen bringen bevor ich mich um soetwas kümmere.

Ich hoffe ihr könnt da etwas mit anfangen :).

mfg Runnerle
 
Ich muss gleich weg und habe nicht die Zeit den Code ganz durchzugehen, aber nur ein kleiner Vorschlag:
Da du keine Eingaben nimmst,
uebergib die Strings doch direkt , denn der scanner ist hier meiner Meinung nach nicht unbedingt notwendig.
mfg

sw33t
 
Hier noch ein Vorschlag: Gerade, da es sich hierbei um ein rechenintensives Programm handelt, ist es eine schlechte Idee winrar aufzurufen, da noch mal einiges an Overhead durch Starten eines neuen Prozesses hinzukommt, von der Plattformabhängigkeit mal ganz zu schweigen.
Es wäre sinnvoller, wenn du die Passwortüberprüfung in deinem Programm nachbaust(oder aus 'ner freien Implementierung) übernimmst, und dies dann wiederholt aufrufst, also alles innerhalb deiner Anwendung erledigst.
 
Ja da hast du natürlich Recht, jedoch geht es mit in erster linie darum das Problem mit dem
Abbruch in den griff zu bekommen.
Solche Sachen würde ich erst danach angehen.

mfg Runnerle

EDIT: Nach einigem Testen bin ich jetzt soweit das ich sagen kann, dass das Problem in der Passwort funktion liegen muss. Das wollte ich mal so anmerken :)
 
Zurück
Oben