CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Pb Algo BruteForce

CYBER_BOB
CYBER_BOB
Niveau 10
09 février 2005 à 23:31:41

Bonsoir a tous,
voila j´ai un petit problème avec un algorithme de BruteForce, voila en fait il génére bien comme je veux toutes les solutions, seulement j´arrive pas a selectionner les caracteres que je veux qui apparaissent ! !!
voici le code:

/ / fonction de génération du dictionnaire
/ / fichier => nom du fichier de sortie
/ / LongueurMax => longueur maximal du pass
/ / begin => caractere de " debut"
/ / end => caractere de " fin"
/ / min => indique si on doit afficher les minuscules
/ / maj => indique si on doit afficher les majuscules
/ / num => indique si on doit afficher les nombres
int DicoGen(char fichier[50], int LongueurMax, char begin, char end, int min, int maj, int num)
{
FILE *gen; / / pointeur sur fichier à générer
char code[255]; / / tableau contenant le code
int i; / / indice tableau
int longueur; / / longueur en traitement

// ouverture fichier
if((gen = fopen(fichier, " w")) == NULL)
return 0; / / erreur

// on traite toutes les longueurs possible jusqu´a longueurmax
for ( longueur=1; longueur < = LongueurMax; longueur++)
{
// marque de fin de génération de longueur
// initialisation du premier " mot"
for ( i=0; i < longueur; code[i++] = begin)
code[longueur] = 0;

// on fait toute les lettres
while(code[longueur-1] < = end)
{
i = 0; / / init indice
while(code[i] > end && code[i+1] ! = 0)
{
code[i] = begin;
code[++i]++;
}

fprintf(gen, " %s\n", code);
code[0]++; / / caractere suivant
}
}
fclose(gen); / / ferme le fichier
return 1;
}

donc si je fais: Dicogen(file, 3, ´0´, ´Z´, 0, 1, 1)

bah il devrait me générer toutes les possibilité à 1, 2 ou 3 caracteres, allant de ´0´ à ´Z´, comme indiqué, je veux qu´il ne m´affiche que les lettres minuscules et les chiffres, seulement je ne sais pas quoi rajouter dans ma fonction pour permettre une tel chose...
J´espere donc que vous pourrez m´aider...
Merci par avance...
Bob

dnob700
dnob700
Niveau 10
10 février 2005 à 16:37:39

le problème c´est qu´il y a des caractère entre les lettre minuscule et les chiffres ( enfin, c´est dans l´autre sens) dans la table ascii que tu te dois d´éliminer.

il faut que tu le code direct dans ta fonction :
code[++i]++;
if ( code[i]>´9´) code =´A´;
if ( code[i]>´Z´) code =´a´;
et donc si tu veux les chiffres et les lettre minuscule et majuscule, tu l´appelle avec ´0´,´z´
si tu ne veux que les lettres tu fait ´A´,´z´ si tu ne veux que les chiffre et les majuscule tu fait ´0´,´Z´ le seul problème c´est si tu veux que les chiffres et les minuscule tu doit un peu modifier la fonction( enfin tu comprendra ce qu´il faut faire).

CYBER_BOB
CYBER_BOB
Niveau 10
10 février 2005 à 17:19:42

je viens de modifier ma deuxieme boucle while, comme ceci:

while(code[i] > end && code[i+1] ! = 0)
{
code[i] = begin;
code[++i]++;

if(code[i] > = ´9´) code[i] = ´A´;
if(code[i] > = ´Z´) code[i] = ´a´;
}

je ne comprend pas pourquoi elle me fait une boucle infinie? :s

dnob700
dnob700
Niveau 10
10 février 2005 à 17:31:39

je ne sais pas trop, mais déjà vire les > = et laisse juste des >

CYBER_BOB
CYBER_BOB
Niveau 10
10 février 2005 à 18:04:35

c´est logique que ca boucle indéfiniement, puise que on dit que si code[i] > = ´9´ alors il prend la valeur ´A´, sauf que quand il vaut la valeur ´A´, ben on repasse dans le if et c´est bien sup a ´9´ donc il vaut encore ´A´, ect...

dnob700
dnob700
Niveau 10
10 février 2005 à 21:51:00

non,
un if c´est pas une boucle une fois qu´il a exécuté les actions du if, il ne refait pas le test.

mais pour savoir pourquoi il boucle indéfiniment, la meilleur méthode c´est de le débuguer en l´exécutant pas à pas. et là tu verra " tout de suite" où est le problème.

CYBER_BOB
CYBER_BOB
Niveau 10
10 février 2005 à 22:17:59

remplace ce code:
if(code[i] > = ´9´) code[i] = ´A´;
if(code[i] > = ´Z´) code[i] = ´a´;

par:
if(code[i] == ´9´) code[i] = ´A´;
if(code[i] == ´Z´) code[i] = ´a´;

parce que a chaque iteration de ta boucle, il " execute" le if ! !!

dnob700
dnob700
Niveau 10
10 février 2005 à 22:39:20

ah oui ! bien sur, j´avais pas compris ce que tu voulais dire !

CYBER_BOB
CYBER_BOB
Niveau 10
10 février 2005 à 22:49:05

:-))) c´est normal, je m´exprime assez mal faut dire

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment