Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Wie kann ich Brute Force Methode mit Strings erweitern
Hallo,
ich habe ein kleines Brute Force Programm geschrieben, in welches ich aus zahlen bestehende Passwörter herausbekommen kann.
Java:
public class BruteTest {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int password = 0;
int digits = 0;
int possibilitys = 0;
System.out.println("Please enter a password!");
password = scan.nextInt();
digits = findDigits(password);
System.out.println(digits);
possibilitys = faculty(digits);
System.out.println(possibilitys);
for(int i=0; i<1000000; i++){
if(password == i){
System.out.println("The given password is " + i);
break;
}
}
}
public static int findDigits(int number){
String digits = String.valueOf(number);
return digits.length();
}
public static int faculty(int number){
if(number<1) return 1;
return number * faculty(number - 1);
}
}
Ich möchte das Programm erweitern indem ich auch Strings herausfinden kann, bzw zahlen und Strings gemixt.
Kann mir jemand dafür ein Tipp geben, wie ich vorgehen muss?
Ich habe mir überlegt, dass ich die Benutzereingabe in ein String speichere, dann kann ich mit charAt(index) auf die Stellen zugreifen, wie gehe ich aber dann in der for-schleife vor?
Oder sollte ich lieber die Benutzereingabe in ein String-Array schreiben?
Ich habe es jetzt so gelöst, was sagt ihr dazu?
Ist das eine typische Brute Force Methode oder wie könnte man es geschickter lösen.
Java:
public class BruteForceMethod {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
String password;
int index = 0; //für Passwortlänge
char letter = ' '; //für die Buchstaben im Passwort
ArrayList <Integer> numberList = new ArrayList<Integer>(); //für den Ascii-Wert in int
System.out.println("Please enter your password!");
password = scan.next(); //Passwort eingabe
index = password.length(); //Passwort länge herausfinden
for(int i=0; i<index; i++){
letter = password.charAt(i); //auf die Stellen des eingegeben Passwortes zugreifen
int numberTmp = (int) letter; //den ascii-wert des buchstaben in numberTmp speichern
numberList.add(numberTmp); //den ascii-wert des buchstaben in die int-liste speichern
}
for(int i=0; i<numberList.size(); i++){ //die ganze liste durchgehen
for(int ascii=33; ascii<127; ascii++){ //ascii=33 ist ! bis ascii=126 ist ~
int checkNumber = numberList.get(i);
if(ascii == checkNumber){ //alle ascii-werte mit der stelle in der liste vergleichen
char convertToLetter = (char) ascii; //wenn Übereinstimmung, dann den ascii-wert wieder in buchstabe konvertieren
System.out.print(convertToLetter);
}
}
}
}
}