Δημοσιεύτηκε: 06 Ιουν 2010, 18:35
Αυτό το θέμα είναι η πτυχιακή μου και έχω φάει αρκετό χρόνο για αυτό και δεν μπορω να καταλάβω το λάθος μου.Μίλησα με τον καθηγητή μου καιμ ου λέει ότι είναι κάποιο λογικό λάθος.Γιατί δεν μπορεί με μικρότερο μήκος κλειδιού να το βρίσκει αλλά με μεγαλύτερο να μην το βρίσκει.
'Εχω δοκιμάσει να κάνω το ίδιο κωδικα χωρίς λογική μεταβλητή αλλά σε εκείνο των κώδικα είναι ότι βρίσκει οποιονδήποτε κωδικό αλλά δεν τον εμφανίζει και σε αυτό τον κώδικα(Δηλαδή αν ο κωδικός είναι το 12345678 , εμφανίζει τον με το μύνημα ότι δεν το βρήκε This in not the password , try again
12345675 ,
This in not the password , try again
12345677 , παραλείπει τον 12345678 και εμφανίζει το μύνημα
Password found και συνεχίζει μέχρι να φτάσει στο 88888888 )
μου είπε ότι μάλλον δεν βλέπει κάποιο break ή ότι ξέχασα κάποιο break.
Αν θέλετε να του ρίξετε μια ματιά τον παραθέτω παρακάτω:
'Εχω δοκιμάσει να κάνω το ίδιο κωδικα χωρίς λογική μεταβλητή αλλά σε εκείνο των κώδικα είναι ότι βρίσκει οποιονδήποτε κωδικό αλλά δεν τον εμφανίζει και σε αυτό τον κώδικα(Δηλαδή αν ο κωδικός είναι το 12345678 , εμφανίζει τον με το μύνημα ότι δεν το βρήκε This in not the password , try again
12345675 ,
This in not the password , try again
12345677 , παραλείπει τον 12345678 και εμφανίζει το μύνημα
Password found και συνεχίζει μέχρι να φτάσει στο 88888888 )
μου είπε ότι μάλλον δεν βλέπει κάποιο break ή ότι ξέχασα κάποιο break.
Αν θέλετε να του ρίξετε μια ματιά τον παραθέτω παρακάτω:
- Κώδικας: Επιλογή όλων
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;
public static void Brute()
{
StringBuffer sb = new StringBuffer(len);
char currentChar = fCharList[0];
for (int i = 0; i < len; i++)
{
sb.append(currentChar);
}
ChangeCharacters(0, sb);
}
public static StringBuffer ChangeCharacters(int pos, StringBuffer sb)
{
try {
FileInputStream f = new FileInputStream("C://12.zip");
ArchiveReader r = ArchiveReader.getReader(f);
ArchiveEntry entry ;
while ((entry = r.nextEntry())!= null){
//if (stop == false){
for (int i = 0; i < len ; i++){
sb.setCharAt(pos, fCharList[i]); //Αποθηκεύει τον χαρακτήρα fCharList[i] στη θέση pos
if (pos == len - 1)
{
if (entry.isProbablyCorrectPassword(sb.toString())){
System.out.println("This is the password");
foundWord = sb.toString();
//stop = true;
break;
}else{
System.out.println("This in not the password , try again");
}
System.out.println(sb.toString());
/*stop = true;
foundWord = sb.toString();
break;*/
}else
{
ChangeCharacters(pos + 1 , sb);
}
}
// }
}
}catch (Exception e){
System.out.println("Exception raised!");
e.printStackTrace();
}
return sb;
}
public static void Read(){
try {
/*System.out.println("Give the path of the file");
BufferedReader flnm = new BufferedReader(new InputStreamReader(System.in));
inputLine = flnm.readLine();
System.out.println("What is the password of " + inputLine + " ? ");*/
//System.out.println("Working...");
Brute();
System.out.println("The password is: " + foundWord);
}catch (Exception e){
System.out.println("Exception raised!");
e.printStackTrace();
}
}
public static void main(String[] args) {
Read();
}
}