Wie kann ich Brute Force Methode mit Strings erweitern

javaerd

Mitglied
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);       
                }
            }
        }
    }
}
 

Neue Themen


Zurück
Oben