Πρόβλημα με Brute Force

Συζητήσεις για την Java

Συντονιστές: WebDev Moderators, Super-Moderators

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Πρόβλημα με Brute Force

Δημοσίευση από virxen75 » 30 Ιουν 2010 02:41

mortis1572 έγραψε:Βρήκα κάποια site με παρεμφερές κώδικα με αυτόν που ψάχνω.Σας παραθέτω παρακάτω τα sites για να μου πείτε αν είναι αντίστοιχο με τον κώδικα για την αποσυμπίεση zip αρχείου που δεν έχω.

http://www.java2s.com/Code/Java/File-In ... IPFile.htm

http://www.java-tips.org/java-se-tips/j ... ile-2.html
σου είναι αχρηστα γι αυτό που θες να κάνεις.
Δεν υποστηρίζει η συγκεκριμένη βιβλιοθήκη την αποσυμπίεση zip με password.

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Πρόβλημα με Brute Force

Δημοσίευση από virxen75 » 30 Ιουν 2010 04:00

τέλος πάντων αφού τουλάχιστον έψαξες

Κώδικας: Επιλογή όλων

import java.io.*;
import java.*;
import com.javamex.arcmexer.*;
public class Geo{
  private static char fCharList[] = {'1','2','3','4','5','6','7','8'};
  private static final int len = 8;
  private static boolean stop;
  private static String foundWord;
  private static boolean ok=true;
  private static String filename="c&#58;\\12.zip";//<---το δικό μου zip αρχείο
  public static void Brute&#40;&#41;
    &#123;
        StringBuffer sb = new StringBuffer&#40;len&#41;;
        char currentChar = fCharList&#91;0&#93;;
        for &#40;int i = 0; i < len; i++&#41;
        &#123;
            sb.append&#40;currentChar&#41;;
        &#125;
 
        ChangeCharacters&#40;0, sb&#41;;
        &#125;
 
    public static StringBuffer ChangeCharacters&#40;int pos, StringBuffer sb&#41;
  &#123;
       try &#123;
FileInputStream f = new FileInputStream&#40;filename&#41;;
ArchiveReader r = ArchiveReader.getReader&#40;f&#41;;
ArchiveEntry entry ;

while &#40;&#40;entry = r.nextEntry&#40;&#41;&#41;!= null && ok!=false&#41;&#123;//<----συνθήκη τερματισμού
    for &#40;int i = 0; i < len ; i++&#41;&#123;   
        sb.setCharAt&#40;pos, fCharList&#91;i&#93;&#41;;
        if &#40;pos == len - 1&#41;&#123;
                if &#40;entry.isProbablyCorrectPassword&#40;sb.toString&#40;&#41;&#41;&#41;&#123;
                    foundWord = sb.toString&#40;&#41;;
                    System.out.println&#40;"possible password found&#58;"+foundWord&#41;;//<--πιθανά σωστό password
                    entry.setPassword&#40;foundWord&#41;;
                    InputStream in = entry.getInputStream&#40;&#41;;
                    try&#123;
                    	in.read&#40;&#41;;//<--αν διαβάσει τότε είναι το σωστό password
                    	//ok=false;//<--αυτό πρέπει να το ενεργοποιήσεις απλά στο άφησα έτσι για να τεστάρεις τα αποτελέσματα με όλα τα πιθανά passwords μέχρι το σωστό
                    	System.out.println&#40;"This is the password!!"&#41;;//<---ναι το βρήκα!!!
                    &#125;catch&#40;Exception ee&#41;  &#123;
                    	 ok=true;
                    	 System.out.println&#40;"This in not the password , try again"&#41;;//<--Δεν το βρήκα
                    &#125;
                &#125;//else&#123;//<----για να δεις μόνο τα πιθανά passwords απενεργοποίησα το μήνυμα λάθους
                    //System.out.println&#40;"This in not the password , try again"&#41;;
                    //System.out.println&#40;sb.toString&#40;&#41;&#41;;
                //&#125;    
        &#125;else&#123;
                ChangeCharacters&#40;pos + 1 , sb&#41;;
            &#125;
        &#125;     
&#125;
&#125;catch &#40;Exception e&#41;&#123;
System.out.println&#40;"Exception raised!"&#41;;
e.printStackTrace&#40;&#41;;
&#125;
 return sb;
  &#125;
    public static void Read&#40;&#41;&#123;
        try &#123;
    Brute&#40;&#41;;
    System.out.println&#40;"finally The password is&#58; " + foundWord&#41;;
        &#125;catch &#40;Exception e&#41;&#123;
System.out.println&#40;"Exception raised!"&#41;;
e.printStackTrace&#40;&#41;;
&#125;
    &#125;
    public static void main&#40;String&#91;&#93; args&#41; &#123;
        Read&#40;&#41;;
    &#125;
&#125;
καλή συνέχεια!!!

mortis1572
Δημοσιεύσεις: 33
Εγγραφή: 13 Ιουν 2010 20:44

Πρόβλημα με Brute Force

Δημοσίευση από mortis1572 » 01 Ιούλ 2010 02:19

Χίλια ευχαριστώ για τη βοήθεια σου.
'Ετσι όπως μου το έδωσες επιτέλους είναι σωστό.
Το μόνο που μου έχει μείνει τώρα είναι να το βάλω σε ένα gui και να μπορεί ο χρήστης να επιλέγει η αναζήτηση να γίνεται μόνο σε αριθμούς-κεφαλαία γράμματα-μικρά γράμματα-χαρακτήρες.
Ευχαριστώ πολύ και σου είμαι ευγνώμων.

mortis1572
Δημοσιεύσεις: 33
Εγγραφή: 13 Ιουν 2010 20:44

Πρόβλημα με Brute Force

Δημοσίευση από mortis1572 » 05 Σεπ 2010 22:35

'Οπως αναφέρω και στο προηγούμενο post μου , αυτό που θέλω είναι η brute force να γίνεται για το πεδίο τιμών που δίνει ο χρήστης και να μην τρέχει όλα τα στοιχεία του πίνακα.
π.χ Θα ήθελα ο χρήστης να δίνει από το πληκτρολόγιο 1,α και να ψάχνει η brute force μόνο για αριθμούς και μικρά γράματα και όχι για κεφαλαία ή να δίνω μόνο Α και να ψάχνει μόνο τα κεφαλαία.
'Εκανα ένα μικρό προγραμματάκι για να καταλάβω πως λειτουργεί αλλά το μόνο που πέτυχα είναι αν δίνω το 1 να ψάχνει μόνο αριθμούς ή αν δίνω το α να ψάχνει μόνο μικρά δεν ξέρω πως να ενώσω και τις 2 επιλογές μαζί.
Στο πρόγραμμα έκανα 4 πίνακες όπου έχουν όλα τα στοιχεία (αριμθούς,μικρά,κεφαλαία,όλα) και έναν πίνακα ακόμη οπου πηγαίνουν οι επιλογές του χρήστη.Μπορούσα να κάνω το ίδιο με ένα μόνο πινακα όπου θα τα είχα όλα και ανάλογα με ό,τι έδινε ο χρήστης να το πηγαινε στον άλλο πίνακα?

Κώδικας: Επιλογή όλων

import java.io.*;
import java.*;
public class Select &#123;
    public static void main&#40;String&#91;&#93; args&#41; &#123;
    char numbers&#91;&#93; = &#123;'0','1','2','3','4','5','6','7','8','9'&#125;;
    char lower&#91;&#93; = &#123;'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
                                    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
                                    'u', 'v', 'w', 'x', 'y', 'z'&#125;;
    char upper&#91;&#93; = &#123;'A', 'B', 'C', 'D',
                                    'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
                                    'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
                                    'Y', 'Z'&#125;;
     char all&#91;&#93; = &#123;'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
                                    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
                                    'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D',
                                    'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
                                    'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
                                    'Y', 'Z','0','1','2','3','4','5','6','7','8','9'&#125;;
     char temp&#91;&#93;= new char&#91;62&#93;;
        int Choice = 0;
        String ChoiceS;
        System.out.print&#40;"Hi if you want to find the password choose for search between Numbers,Lower Letters,Upper Letters,All of them&#58; \n&#40;1&#41; Numbers \n&#40;2&#41; Lower Letters \n&#40;3&#41; Upper Letters \n&#40;4&#41; All of them \n"&#41;;
       BufferedReader brc = new BufferedReader&#40;new InputStreamReader&#40;System.in&#41;&#41;;
        try &#123;
            ChoiceS = brc.readLine&#40;&#41;;
            Choice = Integer.parseInt&#40;ChoiceS&#41;;
       &#125;catch &#40;IOException ioex&#41; &#123;
            System.out.println&#40;"Input error"&#41;;
            System.exit&#40;1&#41;;
&#125;catch &#40; NumberFormatException e&#41; &#123;
System.out.println&#40;e.getMessage&#40;&#41; + " is not a valid format for an integer."&#41;;
System.exit&#40;1&#41;;
&#125;
if &#40;Choice == 1&#41; &#123;
          for &#40;int i=0;i<numbers.length;i++&#41;&#123;
            temp&#91;i&#93;=numbers&#91;i&#93;;
        System.out.println&#40;temp&#91;i&#93;&#41;; 
          &#125;
        /*System.arraycopy&#40;numbers, 0, temp, 0, numbers.length&#41;;
           for &#40;int i=0;i<temp.length;i++&#41;
               System.out.println&#40;temp&#91;i&#93;&#41;;*/
&#125;
else if &#40;Choice == 2&#41; &#123;
           for &#40;int i=0;i<upper.length;i++&#41;&#123;
            temp&#91;i&#93;=upper&#91;i&#93;;
        System.out.println&#40;temp&#91;i&#93;&#41;; 
          &#125;
&#125;
else if &#40;Choice == 3&#41;&#123;
           for &#40;int i=0;i<lower.length;i++&#41;&#123;
            temp&#91;i&#93;=lower&#91;i&#93;;
        System.out.println&#40;temp&#91;i&#93;&#41;; 
          &#125;
&#125;
else if &#40;Choice == 4&#41;&#123;
           for &#40;int i=0;i<all.length;i++&#41;&#123;
            temp&#91;i&#93;=all&#91;i&#93;;
        System.out.println&#40;temp&#91;i&#93;&#41;; 
          &#125;
&#125;
else&#123;
System.out.println&#40;Choice + " is not a valid choice"&#41;;
System.exit&#40;1&#41;;
&#125;
&#125;
&#125;

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Πρόβλημα με Brute Force

Δημοσίευση από virxen75 » 06 Σεπ 2010 01:00

δοκίμασε αυτό

Κώδικας: Επιλογή όλων

import java.io.*;
import java.*;
public class Select &#123;
    public static void main&#40;String&#91;&#93; args&#41; &#123;
    char numbers&#91;&#93; = &#123;'0','1','2','3','4','5','6','7','8','9'&#125;;
    char lower&#91;&#93; = &#123;'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
                                    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
                                    'u', 'v', 'w', 'x', 'y', 'z'&#125;;
    char upper&#91;&#93; = &#123;'A', 'B', 'C', 'D',
                                    'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
                                    'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
                                    'Y', 'Z'&#125;;
     char temp&#91;&#93;= new char&#91;62&#93;;
        String ChoiceS="";
        System.out.println&#40;"enter a string containing your choice for brute force\n1 for numbers,a for small letters,A for capital letters\n for example to search numbers and small letters enter 1a"&#41;;
       System.out.print&#40;"enter your choice&#58;"&#41;;
       BufferedReader brc = new BufferedReader&#40;new InputStreamReader&#40;System.in&#41;&#41;;
        try &#123;
            ChoiceS = brc.readLine&#40;&#41;;
       &#125;catch &#40;IOException ioex&#41; &#123;
            System.out.println&#40;"Input error"&#41;;
            System.exit&#40;1&#41;;
&#125;
int current=0;
boolean upperCompleted=false;
boolean lowerCompleted=false;
boolean numbersCompleted=false;
for &#40;int j=0;j<ChoiceS.length&#40;&#41;;j++&#41;&#123;
	if &#40;ChoiceS.charAt&#40;j&#41;=='1' && !numbersCompleted&#41;&#123;
		for &#40;int i=0;i<numbers.length;i++&#41; 
			temp&#91;current++&#93;=numbers&#91;i&#93;;
		numbersCompleted=true;
	&#125;else if &#40;ChoiceS.charAt&#40;j&#41;=='A' && !upperCompleted&#41;&#123;
		for &#40;int i=0;i<upper.length;i++&#41;   
			temp&#91;current++&#93;=upper&#91;i&#93;;
		upperCompleted=true;
	&#125;else if &#40;ChoiceS.charAt&#40;j&#41;=='a' && !lowerCompleted&#41;&#123;
		for &#40;int i=0;i<lower.length;i++&#41;   
			temp&#91;current++&#93;=lower&#91;i&#93;;
		lowerCompleted=true;
	&#125;
&#125;
System.out.println&#40;"your choice is&#58;"&#41;;
for &#40;int j=0;j<current;j++&#41;&#123;
	System.out.print&#40;temp&#91;j&#93;+","&#41;;
&#125;
&#125;
&#125;

mortis1572
Δημοσιεύσεις: 33
Εγγραφή: 13 Ιουν 2010 20:44

Πρόβλημα με Brute Force

Δημοσίευση από mortis1572 » 07 Σεπ 2010 01:10

Ευχαριστώ πολύ για την γρήγορη απάντηση , δούλεψε κανονικά χωρίς κανένα πρόβλημα.
Αλλά θέλω εππλέον αν γίνεται ο χρήστης να μπορεί να δώσει όποιο στοιχείο από τους πίνακες θέλει χωρίς εγώ να το δεσμεύω όπως:
π.χ για αριθμούς να γίνεται να δώσει όποιο στοιχείο θέλει από το 0-9 και όχι αποκλειστικά το 0 το ίδιο και για τα υπόλοιπα.
'Οσο έψαξα δεν κατάφερα να βρω κάποιο παράδειγμα με τελεστές όπου να δείχνει με ποιο τρόπο μπορεί να καλυθφεί κάποιο μπλοκ τιμών.

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Πρόβλημα με Brute Force

Δημοσίευση από virxen75 » 07 Σεπ 2010 03:24

μία προσέγγιση μπορεί να είναι η παρακάτω:

το 1 δηλώνει όλες τις τιμές αριθμών από 0-9
το a όλα τα μικρά γράμματα
το Α όλα τα κεφαλαία

και τέλος το - εύρος τιμών

π.χ. a1-36-9

δηλώνει όλα τα μικρά γράμματα και αριθμούς 1-3(1,2,3) και 6-9 (6,7,8,9)
ομοίως το a-c δηλώνει a,b,c

και ο κώδικας

Κώδικας: Επιλογή όλων


import java.io.*;
import java.*;
import java.util.ArrayList;

public class Select2 &#123;
    public static void main&#40;String&#91;&#93; args&#41; &#123;
    	ArrayList<String> chars2check=new ArrayList<String>&#40;&#41;;
    	
    char numbers&#91;&#93; = &#123;'0','1','2','3','4','5','6','7','8','9'&#125;;
    char lower&#91;&#93; = &#123;'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
                                   'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
                                    'u', 'v', 'w', 'x', 'y', 'z'&#125;;
    char upper&#91;&#93; = &#123;'A', 'B', 'C', 'D',
                                    'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
                                    'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
                                    'Y', 'Z'&#125;;
     char temp&#91;&#93;= new char&#91;62&#93;;
        String ChoiceS="";
        System.out.println&#40;"enter a string containing your choice for brute force\n1 for numbers,a for small letters,A for capital letters,- to indicate range\n for example to search numbers from 1 to 5 and small letters enter 1-5a"&#41;;
       System.out.print&#40;"enter your choice&#58;"&#41;;
       BufferedReader brc = new BufferedReader&#40;new InputStreamReader&#40;System.in&#41;&#41;;
        try &#123;
            ChoiceS = brc.readLine&#40;&#41;;
       &#125;catch &#40;IOException ioex&#41; &#123;
            System.out.println&#40;"Input error"&#41;;
            System.exit&#40;1&#41;;
&#125;
try&#123;


String &#91;&#93; choices=ChoiceS.split&#40;"-"&#41;;
String old=ChoiceS;
int total=0;
int printotal=0;
for &#40;int i=0;i<choices.length-1;i++&#41; &#123;
	char apo=choices&#91;i&#93;.substring&#40;choices&#91;i&#93;.length&#40;&#41;-1,choices&#91;i&#93;.length&#40;&#41;&#41;.charAt&#40;0&#41;;
	char eos=choices&#91;i+1&#93;.substring&#40;0,1&#41;.charAt&#40;0&#41;;
	for &#40;char space=apo;space<=eos;space++&#41; chars2check.add&#40;""+space&#41;;
	int index=ChoiceS.indexOf&#40;apo+"-"+eos&#41;;
	ChoiceS=ChoiceS.substring&#40;0,index&#41;.concat&#40;ChoiceS.substring&#40;index+3,ChoiceS.length&#40;&#41;&#41;&#41;;	
&#125;
System.out.println&#40;"choice="+ChoiceS&#41;;
&#125;catch&#40;Exception e&#41;&#123;
	System.out.println&#40;"wrong input try again!"+e&#41;;
	System.exit&#40;1&#41;;
&#125;
int current=0;
boolean upperCompleted=false;
boolean lowerCompleted=false;
boolean numbersCompleted=false;
for &#40;int j=0;j<ChoiceS.length&#40;&#41;;j++&#41;&#123;
	if &#40;ChoiceS.charAt&#40;j&#41;=='1' && !numbersCompleted&#41;&#123;
		for &#40;int i=0;i<numbers.length;i++&#41; 
			temp&#91;current++&#93;=numbers&#91;i&#93;;
		numbersCompleted=true;
	&#125;else if &#40;ChoiceS.charAt&#40;j&#41;=='A' && !upperCompleted&#41;&#123;
		for &#40;int i=0;i<upper.length;i++&#41;   
			temp&#91;current++&#93;=upper&#91;i&#93;;
		upperCompleted=true;
	&#125;else if &#40;ChoiceS.charAt&#40;j&#41;=='a' && !lowerCompleted&#41;&#123;
		for &#40;int i=0;i<lower.length;i++&#41;   
			temp&#91;current++&#93;=lower&#91;i&#93;;
		lowerCompleted=true;
	&#125;
&#125;
for &#40;int j=0;j<chars2check.size&#40;&#41;;j++&#41;&#123;
	boolean found=false;
	for &#40;int i=0;i<current;i++&#41;&#123;
		if &#40;temp&#91;i&#93;==&#40;chars2check.get&#40;j&#41;.charAt&#40;0&#41;&#41;&#41; &#123;
			found=true;
			break;
	&#125;
&#125;
if &#40;!found&#41;&#123;
	temp&#91;current++&#93;=chars2check.get&#40;j&#41;.charAt&#40;0&#41;;
&#125;
&#125;

System.out.println&#40;"your choice is&#58;"&#41;;
for &#40;int j=0;j<current;j++&#41;&#123;
	System.out.print&#40;temp&#91;j&#93;+","&#41;;
&#125;
&#125;
&#125;

mortis1572
Δημοσιεύσεις: 33
Εγγραφή: 13 Ιουν 2010 20:44

Πρόβλημα με Brute Force

Δημοσίευση από mortis1572 » 09 Σεπ 2010 02:10

virxen75 έγραψε:δοκίμασε αυτό

Κώδικας: Επιλογή όλων

import java.io.*;
import java.*;
public class Select &#123;
    public static void main&#40;String&#91;&#93; args&#41; &#123;
    char numbers&#91;&#93; = &#123;'0','1','2','3','4','5','6','7','8','9'&#125;;
    char lower&#91;&#93; = &#123;'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
                                    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
                                    'u', 'v', 'w', 'x', 'y', 'z'&#125;;
    char upper&#91;&#93; = &#123;'A', 'B', 'C', 'D',
                                    'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
                                    'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
                                    'Y', 'Z'&#125;;
     char temp&#91;&#93;= new char&#91;62&#93;;
        String ChoiceS="";
        System.out.println&#40;"enter a string containing your choice for brute force\n1 for numbers,a for small letters,A for capital letters\n for example to search numbers and small letters enter 1a"&#41;;
       System.out.print&#40;"enter your choice&#58;"&#41;;
       BufferedReader brc = new BufferedReader&#40;new InputStreamReader&#40;System.in&#41;&#41;;
        try &#123;
            ChoiceS = brc.readLine&#40;&#41;;
       &#125;catch &#40;IOException ioex&#41; &#123;
            System.out.println&#40;"Input error"&#41;;
            System.exit&#40;1&#41;;
&#125;
int current=0;
boolean upperCompleted=false;
boolean lowerCompleted=false;
boolean numbersCompleted=false;
for &#40;int j=0;j<ChoiceS.length&#40;&#41;;j++&#41;&#123;
	if &#40;ChoiceS.charAt&#40;j&#41;=='1' && !numbersCompleted&#41;&#123;
		for &#40;int i=0;i<numbers.length;i++&#41; 
			temp&#91;current++&#93;=numbers&#91;i&#93;;
		numbersCompleted=true;
	&#125;else if &#40;ChoiceS.charAt&#40;j&#41;=='A' && !upperCompleted&#41;&#123;
		for &#40;int i=0;i<upper.length;i++&#41;   
			temp&#91;current++&#93;=upper&#91;i&#93;;
		upperCompleted=true;
	&#125;else if &#40;ChoiceS.charAt&#40;j&#41;=='a' && !lowerCompleted&#41;&#123;
		for &#40;int i=0;i<lower.length;i++&#41;   
			temp&#91;current++&#93;=lower&#91;i&#93;;
		lowerCompleted=true;
	&#125;
&#125;
System.out.println&#40;"your choice is&#58;"&#41;;
for &#40;int j=0;j<current;j++&#41;&#123;
	System.out.print&#40;temp&#91;j&#93;+","&#41;;
&#125;
&#125;
&#125;
Τον συγκεκριμένο κώδικα που μου έδωσες έπρεπε να τον προσθέσω στον δικό μου , έκανα την προσθήκη και έτρεξε.Αλλά επειδή ο πίνακας temp είναι 62 θέσεων και ο χρήστης μπορεί δώσει για αναζήτηση 1 από τους 3 πίνακες ή 2 από τους 3 και όχι όλους.Τις υπόλοιπες θέσεις καθώς τρέχει την brute force τις καλύπτει με τετράγωνα.
π.χ:ο κωδικός που ήθελα να βρω ήταν ο air.Καθώς έτρεχε η brute force αφού έφτασε στο aaz έπρεπε μετά να γίνει aba αλλά αντί για αυτό συνεχίζει μέχρι την 63 θέση με τετραγωνο(επειδή δεν έχει επιπλέον στοιχεία από τον πίνακα καλύπτει τις υπόλοιπες θέσεις μέχρι την 62 με τετράγωνα.)
aaw
This in not the password , try again
aax
This in not the password , try again
aay
This in not the password , try again
aaz
This in not the password , try again
aa
Κανονικά δεν πρέπει το μέγεθος του πίνακα να αυξάνει ανάλογα με τους πίνακες που θέλει να χρησιμοποιήση ο χρήστης και όχι να κραταέι πάντα 62 θέσεις?

Και κάτι ακόμα όταν μου είχες δώσει τον κώδικα για την brute force έτρεχε κανονικά και έβρισκε τον κωδικό:

Κώδικας: Επιλογή όλων

import java.io.*;
import java.*;
import com.javamex.arcmexer.*;
public class Geo&#123;
  private static char fCharList&#91;&#93; = &#123;'1','2','3','4','5','6','7','8'&#125;;
  private static final int len = 8;
  private static boolean stop;
  private static String foundWord;
  private static boolean ok=true;
  private static String filename="c&#58;\\12.zip";//<---το δικό μου zip αρχείο
  public static void Brute&#40;&#41;
    &#123;
        StringBuffer sb = new StringBuffer&#40;len&#41;;
        char currentChar = fCharList&#91;0&#93;;
        for &#40;int i = 0; i < len; i++&#41;
        &#123;
            sb.append&#40;currentChar&#41;;
        &#125;
 
        ChangeCharacters&#40;0, sb&#41;;
        &#125;
 
    public static StringBuffer ChangeCharacters&#40;int pos, StringBuffer sb&#41;
  &#123;
       try &#123;
FileInputStream f = new FileInputStream&#40;filename&#41;;
ArchiveReader r = ArchiveReader.getReader&#40;f&#41;;
ArchiveEntry entry ;

while &#40;&#40;entry = r.nextEntry&#40;&#41;&#41;!= null && ok!=false&#41;&#123;//<----συνθήκη τερματισμού
    for &#40;int i = 0; i < len ; i++&#41;&#123;   
        sb.setCharAt&#40;pos, fCharList&#91;i&#93;&#41;;
        if &#40;pos == len - 1&#41;&#123;
                if &#40;entry.isProbablyCorrectPassword&#40;sb.toString&#40;&#41;&#41;&#41;&#123;
                    foundWord = sb.toString&#40;&#41;;
                    System.out.println&#40;"possible password found&#58;"+foundWord&#41;;//<--πιθανά σωστό password
                    entry.setPassword&#40;foundWord&#41;;
                    InputStream in = entry.getInputStream&#40;&#41;;
                    try&#123;
                       in.read&#40;&#41;;//<--αν διαβάσει τότε είναι το σωστό password
                       //ok=false;//<--αυτό πρέπει να το ενεργοποιήσεις απλά στο άφησα έτσι για να τεστάρεις τα αποτελέσματα με όλα τα πιθανά passwords μέχρι το σωστό
                       System.out.println&#40;"This is the password!!"&#41;;//<---ναι το βρήκα!!!
                    &#125;catch&#40;Exception ee&#41;  &#123;
                        ok=true;
                        System.out.println&#40;"This in not the password , try again"&#41;;//<--Δεν το βρήκα
                    &#125;
                &#125;//else&#123;//<----για να δεις μόνο τα πιθανά passwords απενεργοποίησα το μήνυμα λάθους
                    //System.out.println&#40;"This in not the password , try again"&#41;;
                    //System.out.println&#40;sb.toString&#40;&#41;&#41;;
                //&#125;   
        &#125;else&#123;
                ChangeCharacters&#40;pos + 1 , sb&#41;;
            &#125;
        &#125;     
&#125;
&#125;catch &#40;Exception e&#41;&#123;
System.out.println&#40;"Exception raised!"&#41;;
e.printStackTrace&#40;&#41;;
&#125;
 return sb;
  &#125;
    public static void Read&#40;&#41;&#123;
        try &#123;
    Brute&#40;&#41;;
    System.out.println&#40;"finally The password is&#58; " + foundWord&#41;;
        &#125;catch &#40;Exception e&#41;&#123;
System.out.println&#40;"Exception raised!"&#41;;
e.printStackTrace&#40;&#41;;
&#125;
    &#125;
    public static void main&#40;String&#91;&#93; args&#41; &#123;
        Read&#40;&#41;;
    &#125;
&#125;
αλλά τώρα που αύξησα το εύρως τιμών από τον πίνακα από

Κώδικας: Επιλογή όλων

fCharList&#91;&#93; = &#123;'1','2','3','4','5','6','7','8'&#125;
έγινε

Κώδικας: Επιλογή όλων

fCharList&#91;&#93; = &#123;'0','1','2','3','4','5','6','7','8','9'&#125;
πάλι δεν μου βρίσκεi τον σωστό κωδικό αλλά κάποιον άλλο πιθανό κωδικό.
Επειδή δεν νομίζω να φταίει ο κώδικά σου μάλλον το πρόβλημα πρέπει να είναι στη συνάρτηση

Κώδικας: Επιλογή όλων

entry.isProbablyCorrectPassword&#40;sb.toString&#40;&#41;&#41;
, δεν μπορώ να καταλάβω που αλλού μπορεί να είναι.

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Πρόβλημα με Brute Force

Δημοσίευση από virxen75 » 09 Σεπ 2010 02:26

for (int i = 0; i < len ; i++){
sb.setCharAt(pos, fCharList[i]);
εδώ βρίσκεται το πρόβλημα σου.
παίρνει μόνο τα πρώτα στοιχεία του πίνακα και όχι όλα.
παίρνει από 0,len-1 στοιχεία του πίνακα.

δοκίμασε έτσι

Κώδικας: Επιλογή όλων

for &#40;int i = 0; i <= fCharList.length - 1; i++&#41;
        &#123;
            sb.setCharAt&#40;pos, fCharList&#91;i&#93;&#41;;

mortis1572
Δημοσιεύσεις: 33
Εγγραφή: 13 Ιουν 2010 20:44

Πρόβλημα με Brute Force

Δημοσίευση από mortis1572 » 10 Σεπ 2010 01:37

virxen75 έγραψε:
for (int i = 0; i < len ; i++){
sb.setCharAt(pos, fCharList[i]);
εδώ βρίσκεται το πρόβλημα σου.
παίρνει μόνο τα πρώτα στοιχεία του πίνακα και όχι όλα.
παίρνει από 0,len-1 στοιχεία του πίνακα.

δοκίμασε έτσι

Κώδικας: Επιλογή όλων

for &#40;int i = 0; i <= fCharList.length - 1; i++&#41;
        &#123;
            sb.setCharAt&#40;pos, fCharList&#91;i&#93;&#41;;
'Εκανα λάθος χθες και πόσταρα τον δικό σου αρχικό κώδικα χωρίς τις δικές μου τροποποιήσης.Αυτό που έγραψες σαν λύση το έχω δοκιμάσει και εγώ αλλά πάλι αντιμετώπισα το πρόβλημα που αναφέρω χθες ότι μου βγάζει λάθος κωδικούς.
Ο κώδικας μαζί με τις τροποπιήσης είναι ο εξής:

Κώδικας: Επιλογή όλων

import java.io.*;
import java.*;
import com.javamex.arcmexer.*;
public class New1&#123;
  private static char fCharList&#91;&#93; = &#123;'0','1','2','3','4','5','6','7','8','9'&#125;;
  private static final int len = 8;
  private static String foundWord;
  private static boolean ok=true;
  private static String filename="C&#58;\\15555555.zip";//<---το δικό μου zip αρχείο
  public static void Brute&#40;&#41;
    &#123;
        StringBuffer sb = new StringBuffer&#40;len&#41;;
        char currentChar = fCharList&#91;0&#93;;
        for &#40;int i = 0; i <len; i++&#41;
        &#123;
            sb.append&#40;currentChar&#41;;
        &#125;
 
        ChangeCharacters&#40;0, sb&#41;;
        &#125;
 
    public static StringBuffer ChangeCharacters&#40;int pos, StringBuffer sb&#41;
  &#123;
       try &#123;
FileInputStream f = new FileInputStream&#40;filename&#41;;
ArchiveReader r = ArchiveReader.getReader&#40;f&#41;;
ArchiveEntry entry ;
while &#40;&#40;entry = r.nextEntry&#40;&#41;&#41;!= null && ok!=false&#41;&#123;//<----συνθήκη τερματισμού
    for &#40;int i = 0; i<=fCharList.length-1; ++i&#41;&#123;   
        sb.setCharAt&#40;pos, fCharList&#91;i&#93;&#41;;
        if &#40;pos == len - 1&#41;&#123;
                if &#40;entry.isProbablyCorrectPassword&#40;sb.toString&#40;&#41;&#41;&#41;&#123;
                    foundWord = sb.toString&#40;&#41;;
                    System.out.println&#40;"possible password found&#58;"+foundWord&#41;;//<--πιθανά σωστό password
                    entry.setPassword&#40;foundWord&#41;;
                    InputStream in = entry.getInputStream&#40;&#41;;
                    try&#123;
                       in.read&#40;&#41;;//<--αν διαβάσει τότε είναι το σωστό password
                       ok=false;//<--αυτό πρέπει να το ενεργοποιήσεις απλά στο άφησα έτσι για να τεστάρεις τα αποτελέσματα με όλα τα πιθανά passwords μέχρι το σωστό
                       System.out.println&#40;"This is the password!!"&#41;;//<---ναι το βρήκα!!!
                    &#125;catch&#40;Exception ee&#41;  &#123;
                        ok=true;
                        System.out.println&#40;"This in not the password , try again"&#41;;//<--Δεν το βρήκα
                    &#125;
                &#125;else&#123;//<----για να δεις μόνο τα πιθανά passwords απενεργοποίησα το μήνυμα λάθους
                    System.out.println&#40;"This in not the password , try again"&#41;;
                    System.out.println&#40;sb.toString&#40;&#41;&#41;;
                &#125; 
        &#125;else&#123;
                ChangeCharacters&#40;pos + 1 , sb&#41;;
            &#125;
        &#125;     
&#125;
&#125;catch &#40;Exception e&#41;&#123;
System.out.println&#40;"Exception raised!"&#41;;
e.printStackTrace&#40;&#41;;
&#125;
 return sb;
  &#125;
    public static void Read&#40;&#41;&#123;
        try &#123;
    Brute&#40;&#41;;
    System.out.println&#40;"finally The password is&#58; " + foundWord&#41;;
        &#125;catch &#40;Exception e&#41;&#123;
System.out.println&#40;"Exception raised!"&#41;;
e.printStackTrace&#40;&#41;;
&#125;
    &#125;
    public static void main&#40;String&#91;&#93; args&#41; &#123;
        Read&#40;&#41;;
    &#125;
&#125; 
Επίσης δοκίμασα στο σημείο:

Κώδικας: Επιλογή όλων

StringBuffer sb = new StringBuffer&#40;len&#41;;
        char currentChar = fCharList&#91;0&#93;;
        for &#40;int i = 0; i <len; i++&#41;
        &#123;
            sb.append&#40;currentChar&#41;;
        &#125;
 
        ChangeCharacters&#40;0, sb&#41;;
        &#125;
να αλλάξω το

Κώδικας: Επιλογή όλων

StringBuffer sb = new StringBuffer&#40;len&#41;
σε

Κώδικας: Επιλογή όλων

StringBuffer sb = new StringBuffer&#40;fCharList.length&#41;
αλλά ως απότελεσμα είχα να πάρω πάλι λάθος κωδικούς.
Αν το λάθος δεν βρίσκεται στη συνάρτηση που ανέφερα χθες τότε δεν ξέρω αν βρίσκεται (πιθανολογώ ότι είναι λογικό λάθος) σε αυτό το σημείο.

Κώδικας: Επιλογή όλων

while &#40;&#40;entry = r.nextEntry&#40;&#41;&#41;!= null && ok!=false&#41;&#123;//<----συνθήκη τερματισμού
    for &#40;int i = 0; i<=fCharList.length-1; ++i&#41;&#123;   
        sb.setCharAt&#40;pos, fCharList&#91;i&#93;&#41;;
        if &#40;pos == len - 1&#41;&#123;
                if &#40;entry.isProbablyCorrectPassword&#40;sb.toString&#40;&#41;&#41;&#41;&#123;
                    foundWord = sb.toString&#40;&#41;;
                    System.out.println&#40;"possible password found&#58;"+foundWord&#41;;//<--πιθανά σωστό password
                    entry.setPassword&#40;foundWord&#41;;
                    InputStream in = entry.getInputStream&#40;&#41;;
                    try&#123;
                       in.read&#40;&#41;;//<--αν διαβάσει τότε είναι το σωστό password
                       ok=false;//<--αυτό πρέπει να το ενεργοποιήσεις απλά στο άφησα έτσι για να τεστάρεις τα αποτελέσματα με όλα τα πιθανά passwords μέχρι το σωστό
                       System.out.println&#40;"This is the password!!"&#41;;//<---ναι το βρήκα!!!
                    &#125;catch&#40;Exception ee&#41;  &#123;
                        ok=true;
                        System.out.println&#40;"This in not the password , try again"&#41;;//<--Δεν το βρήκα
                    &#125;
                &#125;else&#123;//<----για να δεις μόνο τα πιθανά passwords απενεργοποίησα το μήνυμα λάθους
                    System.out.println&#40;"This in not the password , try again"&#41;;
                    System.out.println&#40;sb.toString&#40;&#41;&#41;;
                &#125; 
        &#125;else&#123;
                ChangeCharacters&#40;pos + 1 , sb&#41;;
            &#125;
        &#125;     
&#125; 

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Πρόβλημα με Brute Force

Δημοσίευση από virxen75 » 10 Σεπ 2010 02:05

στείλε το δικό σου zip να το τσεκάρω

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Πρόβλημα με Brute Force

Δημοσίευση από virxen75 » 10 Σεπ 2010 02:10

να αλλάξω το
κώδικας:
StringBuffer sb = new StringBuffer(len)
σε
κώδικας:
StringBuffer sb = new StringBuffer(fCharList.length)
δεν έχει να κάνει με το πρόβλημα σου.
το len δηλώνει το μέγεθος του password σε χαρακτήρες

αν βάλεις password με 9 χαρακτήρες-νούμερα και len=8 τότε δεν θα βρεις
το σωστό password αλλά θα πάρεις μόνο πιθανά(λόγω λειτουργικού προβλήματος του arcmexer)

έστω ότι len=8 δηλώνει ότι το password που ψάχνω έχει ακριβώς 8 χαρακτήρες.
αν βάλεις password air τότε το len έπρεπε να γίνει len=3

εσύ θες να μετατρέψεις τον κώδικα σου με τέτοιο τρόπο ώστε το len να μην δηλώνει
το πλήθος χαρακτήρων του σωστού password αλλά το μέγιστο πλήθος χαρακτήρων
που μπορεί να έχει.Ετσι αν είχες max_len=8 θα μπορούσε να βρει το password air με 3
γράμματα.

το πιο πάνω φαίνεται υλοποιημένο στον πιο κάτω κώδικα.

Κώδικας: Επιλογή όλων

import java.io.*;
import java.*;
import com.javamex.arcmexer.*;
public class New1&#123;
  private static char fCharList&#91;&#93; = &#123;'0','1','2','3','4','5','6','7','8','9'&#125;;
  private static final int max_len = 8;//η αλλαγή σε μέγιστο πλήθος χαρακτήρων
  private static String foundWord;
  private static boolean ok=true;
  private static String filename="C&#58;\\12.zip";//<---το δικό μου zip αρχείο
  public static void Brute&#40;&#41;&#123;
        
        char currentChar = fCharList&#91;0&#93;;
        for &#40;int len=1;len<=max_len;len++&#41;&#123;//με ένα for δίνω διαδοχικά τις τιμές από 1-max_len στην μεταβλητή len
        	StringBuffer sb = new StringBuffer&#40;len&#41;;
        	System.out.println&#40;"searching for "+len+" character password..."&#41;;//σχετικό μήνυμα
        	for &#40;int i = 0; i <len; i++&#41;&#123;
            	sb.append&#40;currentChar&#41;;
        	&#125;
        	ChangeCharacters&#40;0, sb,len&#41;;//προσθήκη παραμέτρου μεγέθους password που ψάχνω
        	if &#40;ok==false&#41; break;//αν βρω το σωστό δεν έχει νόημα να συνεχίσω να ψάχνω τα υπόλοιπα
        &#125;
    &#125;
 
    public static StringBuffer ChangeCharacters&#40;int pos, StringBuffer sb,int len&#41;//η αλλαγή στο όρισμα
  &#123;
       try &#123;
FileInputStream f = new FileInputStream&#40;filename&#41;;
ArchiveReader r = ArchiveReader.getReader&#40;f&#41;;
ArchiveEntry entry ;
while &#40;&#40;entry = r.nextEntry&#40;&#41;&#41;!= null && ok!=false&#41;&#123;//<----συνθήκη τερματισμού
    for &#40;int i = 0; i<=fCharList.length-1; ++i&#41;&#123;   
        sb.setCharAt&#40;pos, fCharList&#91;i&#93;&#41;;
        if &#40;pos == len - 1&#41;&#123;
                if &#40;entry.isProbablyCorrectPassword&#40;sb.toString&#40;&#41;&#41;&#41;&#123;
                    foundWord = sb.toString&#40;&#41;;
                    System.out.println&#40;"possible password found&#58;"+foundWord&#41;;//<--πιθανά σωστό password
                    entry.setPassword&#40;foundWord&#41;;
                    InputStream in = entry.getInputStream&#40;&#41;;
                    try&#123;
                       in.read&#40;&#41;;//<--αν διαβάσει τότε είναι το σωστό password
                       ok=false;//<--αυτό πρέπει να το ενεργοποιήσεις απλά στο άφησα έτσι για να τεστάρεις τα αποτελέσματα με όλα τα πιθανά passwords μέχρι το σωστό
                       System.out.println&#40;"This is the password!!"&#41;;//<---ναι το βρήκα!!!
                    &#125;catch&#40;Exception ee&#41;  &#123;
                        ok=true;
                        //System.out.println&#40;"This in not the password , try again"&#41;;//<--Δεν το βρήκα
                    &#125;
                &#125;else&#123;//<----για να δεις μόνο τα πιθανά passwords απενεργοποίησα το μήνυμα λάθους
                    //System.out.println&#40;"This in not the password , try again"&#41;;
                    //System.out.println&#40;sb.toString&#40;&#41;&#41;;
                &#125;
        &#125;else&#123;
                ChangeCharacters&#40;pos + 1 , sb,len&#41;;
            &#125;
        &#125;     
&#125;
&#125;catch &#40;Exception e&#41;&#123;
System.out.println&#40;"Exception raised!"&#41;;
e.printStackTrace&#40;&#41;;
&#125;
 return sb;
  &#125;
    public static void Read&#40;&#41;&#123;
        try &#123;
    Brute&#40;&#41;;
    System.out.println&#40;"finally The password is&#58; " + foundWord&#41;;
        &#125;catch &#40;Exception e&#41;&#123;
System.out.println&#40;"Exception raised!"&#41;;
e.printStackTrace&#40;&#41;;
&#125;
    &#125;
    public static void main&#40;String&#91;&#93; args&#41; &#123;
        Read&#40;&#41;;
    &#125;
&#125; 

και τέλος για να συνδιαστούν όλα τα παραπάνω
το
fCharList.length-1
πρέπει να γίνει current-1 (μετρητής πλήθους στοιχείων πίνακα fCharList δες τον κώδικα μου)

mortis1572
Δημοσιεύσεις: 33
Εγγραφή: 13 Ιουν 2010 20:44

Πρόβλημα με Brute Force

Δημοσίευση από mortis1572 » 10 Σεπ 2010 12:18

Το δικό μου zip είναι το ReadZip και κωδικός είναι 12345678
Συνημμένα
ReadZip.zip
(1.58 KiB) Μεταφορτώθηκε 248 φορές

mortis1572
Δημοσιεύσεις: 33
Εγγραφή: 13 Ιουν 2010 20:44

Πρόβλημα με Brute Force

Δημοσίευση από mortis1572 » 12 Σεπ 2010 02:12

Επιπλέον αυτό που παρατήρησα είναι όταν αυξάνω το μήκος του πίνακα από

Κώδικας: Επιλογή όλων

private static char fCharList&#91;&#93; = &#123;'1','2','3','4','5','6','7','8'&#125;;
σε

Κώδικας: Επιλογή όλων

private static char fCharList&#91;&#93; = &#123;'0','1','2','3','4','5','6','7','8','9'&#125;;
και ο κωδικός που βάζω είναι 8 ψηφίων το απότελεσμα για των σωστό κωδικό είναι ένας κωδικός 7 ψηφίων και σταματάει εκεί δεν συνεχίζει καθόλου να ψάχνει για πιθανούς 8 ψήφιους κωδικούς.Ακόμα και όταν ο κωδικός που βάζω είναι 7 ψήφιος πάλι δεν τον βρίσκει
όταν ο πίνακας περιέχει όλους τους αριθμούς.

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Πρόβλημα με Brute Force

Δημοσίευση από virxen75 » 12 Σεπ 2010 02:39

υπάρχει κάποιο λάθος στον έλεγχο του password
το in.read() διαβάζει από το αρχείο .zip κάποια bytes με βάση λανθασμένο
πιθανό password.

για να εξαληφθεί εντελώς το φαινόμενο αυτό πρέπει να αποσυμπιεστεί το
αρχείο στην μνήμη(να διαβάσουμε όλα τα bytes του δηλαδή).
Αν αυτό γίνει χωρίς να παρουσιαστεί κάποιο λάθος (exception) τότε το
password από πιθανό γίνεται το μοναδικό password που ζητάμε.

πρόσθεσα την μεταβλητή count για να εμφανίζει μέχρι που έχει ψάξει μία φορά ανα 1000 προσπάθειες.

και ο νέος κώδικας για να τον τεστάρεις είναι

Κώδικας: Επιλογή όλων

import java.io.*;
import java.*;
import com.javamex.arcmexer.*;
public class New1&#123;
  private static char fCharList&#91;&#93; = &#123;'0','1','2','3','4','5','6','7','8','9'&#125;;
  private static final int max_len = 8;
  private static String foundWord;
  private static boolean ok=true;
  private static String filename="C&#58;\\readzip.zip";//<---το δικό μου zip αρχείο
  private static int count=0;

  public static void Brute&#40;&#41;&#123;
        
        char currentChar = fCharList&#91;0&#93;;
        for &#40;int len=1;len<=max_len;len++&#41;&#123;
        	StringBuffer sb = new StringBuffer&#40;len&#41;;
        	System.out.println&#40;"searching for "+len+" character password..."&#41;;
        	for &#40;int i = 0; i <len; i++&#41;&#123;
            	sb.append&#40;currentChar&#41;;
        	&#125;
        	ChangeCharacters&#40;0, sb,len&#41;;
        	if &#40;ok==false&#41; break;
        &#125;
    &#125;
 
    public static StringBuffer ChangeCharacters&#40;int pos, StringBuffer sb,int len&#41;
  &#123;
       try &#123;
FileInputStream f = new FileInputStream&#40;filename&#41;;
ArchiveReader r = ArchiveReader.getReader&#40;f&#41;;
ArchiveEntry entry ;

while &#40;&#40;entry = r.nextEntry&#40;&#41;&#41;!= null && ok!=false&#41;&#123;//<----συνθήκη τερματισμού
    for &#40;int i = 0; i<=fCharList.length-1; ++i&#41;&#123;   
        sb.setCharAt&#40;pos, fCharList&#91;i&#93;&#41;;
        if &#40;pos == len - 1&#41;&#123;
        	if &#40;count==1000&#41;&#123;
                System.out.println&#40;"checked until&#58;"+sb.toString&#40;&#41;&#41;;
                count=0;
            &#125;
        	count++;
                if &#40;entry.isProbablyCorrectPassword&#40;sb.toString&#40;&#41;&#41;&#41;&#123;
                    foundWord = sb.toString&#40;&#41;;
                    System.out.println&#40;"possible password found&#58;"+foundWord&#41;;//<--πιθανά σωστό password
                    entry.setPassword&#40;foundWord&#41;;
                    InputStream in = entry.getInputStream&#40;&#41;;
                    try&#123;
                    	int available=in.available&#40;&#41;;
                    	byte b&#91;&#93;=new byte&#91;available+1&#93;;
                       while&#40;in.read&#40;b,0,available&#41;!=-1&#41;&#123;
                       		available=in.available&#40;&#41;;
                       		b=new byte&#91;available+1&#93;;
                       		//int a=in.read&#40;b,0,available&#41;;//<--αν διαβάσει τότε είναι το σωστό password
                       		//System.out.println&#40;"read="+a&#41;;
                       &#125;
                       ok=false;//<--αυτό πρέπει να το ενεργοποιήσεις απλά στο άφησα έτσι για να τεστάρεις τα αποτελέσματα με όλα τα πιθανά passwords μέχρι το σωστό
                       System.out.println&#40;"This is the password!!"&#41;;//<---ναι το βρήκα!!!
                    &#125;catch&#40;Exception ee&#41;  &#123;
                        ok=true;
                        //System.out.println&#40;"This in not the password , try again"&#41;;//<--Δεν το βρήκα
                    &#125;
                &#125;else&#123;//<----για να δεις μόνο τα πιθανά passwords απενεργοποίησα το μήνυμα λάθους
                    //System.out.println&#40;"This in not the password , try again"&#41;;

                &#125;
        &#125;else&#123;
                ChangeCharacters&#40;pos + 1 , sb,len&#41;;
            &#125;
        &#125;     
&#125;
&#125;catch &#40;Exception e&#41;&#123;
System.out.println&#40;"Exception raised!"&#41;;
e.printStackTrace&#40;&#41;;
&#125;
 return sb;
  &#125;
    public static void Read&#40;&#41;&#123;
        try &#123;
    Brute&#40;&#41;;
    System.out.println&#40;"finally The password is&#58; " + foundWord&#41;;
        &#125;catch &#40;Exception e&#41;&#123;
System.out.println&#40;"Exception raised!"&#41;;
e.printStackTrace&#40;&#41;;
&#125;
    &#125;
    public static void main&#40;String&#91;&#93; args&#41; &#123;
        Read&#40;&#41;;
    &#125;
&#125; 

Απάντηση

Επιστροφή στο “Java”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης