• STATISTIQUES
  • Il y a eu un total de 0 membres et 48740 visiteurs sur le site dans les dernières 24h pour un total de 48 740 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Infomirmo
    Challenge présenté sous la forme de 6 niveaux de difficultés diverses et variées avec chacun plusieurs chall...
    Challenges
    [EN] Rankk
    Site de challenge construit sur le principe d'une pyramide à 9 level. Level 1: 60,Level 2: 72,Level 3: 68,Lev...
    Challenges
    [FR] Root-me
    Script: 5, Système: 20, Cracking: 16, Cryptanalyse: 17, Programmation: 8, Réaliste: 11, Réseau: 10, Stéganog...
    Challenges
    [FR] µContest
    µContest est un site de challenges de programmation, c'est à dire qu'il propose des épreu...
    Hacking
    [FR] Forum-Webmaster
    Une communauté webmaster pour apporter / recevoir de l'aide en création de site internet. Webmaster...
    Webmaster
    [FR] apprendre-a-manipuler
    Site d'apprentissage de la manipulation d'autrui.
    Hacking
    [FR] frameip
    le site de partage des connaissances du monde TCPIP
    Protocole

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[C/C++] BruteForce
25-02-2013, 16h47 (Modification du message : 25-02-2013, 16h57 par gruik.)
Message : #6
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [C/C++] BruteForce
en 1 seule boucle, le code fait le job mais il est potentiellement pas super propre pour autant, en revanche il est commenté et le principe est assez simple;

on stocke le pass non pas sous la forme d'un tableau de char mais d'un tableau de int, qui représentent en fait pour chaque lettre du pass l'index dans l'alphabet, à partir de là on a plus qu'à faire comme lorsque l'on compte manuellement en décimal; on incrémente le chiffre des unités, si il est à '9' on le remet à '0' et on essaye d'incrémenter le chiffre des dizaines à la place etc.

as usual le plugin code du fofo est pas terrible, je mets donc une copie ici pour plus de lisibilité

Code C :

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

int main (int argc, char **argv) {
    int pass_len = atoi(argv[1]);
    char *alphabet = (argv[2]);

    if (argc != 3 || pass_len == 0) {
        printf ("Usage  :\n\t%s <pass size> <alphabet>\n", argv[0]);
        return -1;
    }

    int alpha_len = strlen(alphabet);
    unsigned long long nb_iterations = pow(alpha_len, pass_len);

    char *pass_chaine = calloc(pass_len, sizeof(char)); // pour l'output uniquement
    int *pass_interne = calloc(pass_len, sizeof(int));  // pour travailler dessus
    int pos, i;

    /* 1 seule boucle */
    for (i = 0; i < nb_iterations; i++) {
        /* on remplit pass_chaine a l'aide de pass_interne */
        for (pos = 0; pos < pass_len; pos++) pass_chaine[pos] = alphabet[pass_interne[pos]];
        /* on affiche */
        printf ("%s\n", pass_chaine);
        pos--;  // pos = pass_len - 1

        /* on calcule le prochaine pass_interne comme si on faisait simplement "+1" */
        while (1) { /* on veut incrementer le caractere tout a droite */
            if (pass_interne[pos] != alpha_len-1) { /* si il est != 'z' en gros */
                pass_interne[pos]++; /* alors on l'incremente betement et on sort du while pour boucler */
                break;
            } else { /* sinon on remet la lettre sur 'a' et on voit avec la lettre a sa gauche
                        et ainsi de suite jusqu'a ce qu'on puisse enfin incrementer */

                pass_interne[pos] = 0;
                pos--;
            }
        }
    }

    /* on libere les ressources */
    free (pass_interne);
    free (pass_chaine);

    return 0;
}
 


edit: je viens de voir ton dernier code Khaled, il semble fonctionner comme prévu Smile
edit2: aussi je précise au cas où un exemple d'invocation pour lancer le miens :
Code :
$ ./pouet.exe 3 abc
aaa
aab
aac
aba
abb
(...)
cbb
cbc
cca
ccb
ccc
$ ./pouet.exe 4 01
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
+1 (0) -1 (0) Répondre


Messages dans ce sujet
[C/C++] BruteForce - par InstinctHack - 25-02-2013, 08h22
RE: [C/C++] BruteForce - par gruik - 25-02-2013, 09h49
RE: [C/C++] BruteForce - par Sh4dows - 25-02-2013, 12h51
RE: [C/C++] BruteForce - par Creepy_p0ney - 25-02-2013, 13h39
RE: [C/C++] BruteForce - par InstinctHack - 25-02-2013, 15h01
RE: [C/C++] BruteForce - par gruik - 25-02-2013, 16h47
RE: [C/C++] BruteForce - par Creepy_p0ney - 25-02-2013, 16h57
RE: [C/C++] BruteForce - par InstinctHack - 25-02-2013, 17h12
RE: [C/C++] BruteForce - par Sh4dows - 25-02-2013, 17h24
RE: [C/C++] BruteForce - par gruik - 25-02-2013, 17h24
RE: [C/C++] BruteForce - par InstinctHack - 25-02-2013, 17h40
RE: [C/C++] BruteForce - par Sh4dows - 25-02-2013, 18h51
RE: [C/C++] BruteForce - par InstinctHack - 25-02-2013, 19h49
RE: [C/C++] BruteForce - par gruik - 25-02-2013, 21h45
RE: [C/C++] BruteForce - par balis - 25-02-2013, 21h28
RE: [C/C++] BruteForce - par b0fh - 25-02-2013, 21h50
RE: [C/C++] BruteForce - par notfound - 28-02-2013, 14h29
RE: [C/C++] BruteForce - par InstinctHack - 25-02-2013, 22h02
RE: [C/C++] BruteForce - par k-otik - 26-02-2013, 03h04
RE: [C/C++] BruteForce - par InstinctHack - 26-02-2013, 04h38
RE: [C/C++] BruteForce - par gruik - 26-02-2013, 10h32
RE: [C/C++] BruteForce - par b0fh - 26-02-2013, 10h48
RE: [C/C++] BruteForce - par k-otik - 28-02-2013, 01h52
RE: [C/C++] BruteForce - par gruik - 28-02-2013, 08h29
RE: [C/C++] BruteForce - par Dobry - 26-02-2013, 16h18

Atteindre :


Utilisateur(s) parcourant ce sujet : 5 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut