[Java] Bruteforce, probléme à l'exécution

Fermé
giloup121 - 3 juin 2010 à 17:26
 giloup121 - 3 juin 2010 à 23:40
Bonjour,
j'ai créé un algo de bruteForce comme projet pour l'école (Pas du tout dans le but de hack) mais il n'est pas fonctionnel.
J'ai aucune erreur dans le code en lui même mais quand je le compile il plante et s'arête

voici mon code :
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ptibruteforce;
import java.io.*;
/**import java.util.*;
/**
 *
 * @author Giloup
 */

public class Main {
    static long NBmdp = 0;
    /**
     * @param args the command line arguments
     */

    public static void main(String[] args) throws IOException {
        // TODO code application logic here
        int longMin = 0;
        int longMax = 0;


        System.out.print("Générateur BruteForce \n");
        System.out.print("Veuillez saisir la longueur minimum du mot de passe : \n");
        
        BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );
        longMin = br.read();

        System.out.print("Veuillez saisir la longueur maximum du mot de passe : \n");

        BufferedReader br2 = new BufferedReader( new InputStreamReader( System.in ) );
        longMax = br2.read();



        BruteForce (longMin,longMax);
       /* Selon NetBeans il y a une erreur ici */




    }

    public static void BruteForce (int lgMin, int lgMax){

        char fCharList[] = {'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'};

        int lg = lgMin;
        int i, x, y;
        long Buff[] = {0} ;
        /*String Buff = String ; /* */

        while (lg != lgMax)
        {
            int[] Nchar = new int[lg];
            /* int Nchar[lg];*/

            for(i=0;i<=lg;i++)
            {





                Buff[i] = fCharList[0];
              /* et une ici */




                Nchar[i] = 0;
            }
            while(Nchar[0]!=26)
            {
                for(x=0; x<=26; x++)
                {
                Buff[lg] = fCharList[x];
                Nchar[lg] = x;
                System.out.println(Buff);
                NBmdp++;
                }
            for(y=lg; y>=0; y--)
            {
                Nchar[y] = 0;
                Nchar[y-1]++;
            }
            Buff[y] = fCharList[Nchar[y]];
            }
        }
    lg++;
    }
}



Aidez moi s'il vous plait, je patauge depuis ce matin et je dois présenter mes programmes demain à l'oral pour mon BTS :s

Merci de vos réponses =)

A voir également:

9 réponses

up =(
0
theBoneLESS Messages postés 20 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 13 juillet 2010 4
3 juin 2010 à 20:22
Et est-ce que tu obtiens un message d'erreur quelque part?
0
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at ptibruteforce.Main.BruteForce(Main.java:56)
at ptibruteforce.Main.main(Main.java:37)
Java Result: 1

oui celui la =x
Merci de ton attention =)
0
theBoneLESS Messages postés 20 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 13 juillet 2010 4
3 juin 2010 à 21:12
Je sais pas trop c'est quelle ligne mais cette erreur indique que tu tentes d'accéder à une cellule d'un tableau qui n'existe pas (qui n'a pas été initialisée).

L'erreur semble être cette boucle:

for(x=0; x<=26; x++)
    {
     Buff[lg] = fCharList[x];
     Nchar[lg] = x;
     System.out.println(Buff);
     NBmdp++;
}


Ton tableau a 26 éléments, tu devrais donc écrire:
for(x=0; x<26; x++)
et non:
for(x=0; x<=26; x++)

(remarque le "strictement plus petit")

Étant donné que je ne vois pas le numéro des lignes, je ne peux pas savoir s'il s'agit de l'erreur (ou de la seule erreur), mais ça semble du moins en être une.
0
Merci TheBoneLess, en effat tu as raison c'est une erreur =)

Les autres ereures se trouvent la :
BruteForce (longMin,longMax);
et la :
Buff[i] = fCharList[0];

Merci à tous de votre aide, sa fait plaisir de voir que dans un monde individualiste les forums d'entraides marchent bien =)
0
up =)
0
theBoneLESS Messages postés 20 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 13 juillet 2010 4
3 juin 2010 à 21:49
Premièrement, je ne pense pas que ton tableau Buff soit bien initialisé.
long Buff[] = {0} ;

Peut-être que j'ai tord, mais habituellement il faut réserver l'espace mémoire lors de la création d'un nouvel objet de cette manière:
long Buff[] = new Long[lgMax] ;


L'autre truc que je comprends pas trop est cette ligne:
Buff[i] = fCharList[0];

Tu places un Char dans une cellule d'un tableau de Long. Peut-être qu'il s'agit d'un cast fonctionnel mais il ne me rassure pas. Je sais pas quelle intention tu as mais peut-être devrais-tu changer le type d'un des 2 tableaux (ou peut-être que je ne comprend simplement pas bien ton code).

Pour l'instant, c'est ce que j'ai en tête, j'attends de tes nouvelles!
0
Bah écoute le plus triste c'est que tu dois mieux comprendre que moi...
On est obligés pour le bts de réaliser un programme en java le seul problème c'est que je n'y connais rien.
Merci de ton aide, j'y re regarde et je te dis quoi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Aparemment c'est au moment ou j'apelle "BruteForce(longMin,longMax); qu'il y a un bug :s

Merci de vos réponses
0
gargoyle44 Messages postés 15 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 7 juin 2010 3
3 juin 2010 à 22:50
Ça sort quoi comme erreur?
0
Bon ce problème la est réglé (je l'ai viré =D)
Mais me reste mon prébléme de tableau .... Grrrr

            for(i=1;i<=lg;i++)
            {
                Buff[i] = fCharList[0];  <===== LA!!!
                Nchar[i] = 0;
            }



aparemment c'est le "0" de fCharList[0] qui joue les trouble fête =x

Encore merci =)
0
gargoyle44 Messages postés 15 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 7 juin 2010 3
3 juin 2010 à 23:18
Comme theboneless a dis:

Peut-être que j'ai tord, mais habituellement il faut réserver l'espace mémoire lors de la création d'un nouvel objet de cette manière:
long Buff[] = new Long[lgMax] ;
0
Merci beaucoup à vous tous, je rame beaucoup trop, j'en ai piqué un tout fait sur le net, j'espére ne pas tomber dessus au bts.
On vera bonne nuit tout le monde, merci beaucoup
0