• STATISTIQUES
  • Il y a eu un total de 2 membres et 14172 visiteurs sur le site dans les dernières 24h pour un total de 14 174 personnes!


    Membres: 2 433
    Discussions: 3 585
    Messages: 32 832
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] PHPFreaks
    PHPFreaks est un site dédié à l'apprentissage et l'enseignement du PHP. Ici vous trouver...
    Programmation
    [FR] Newbie Contest
    Crackme: 35, Cryptographie: 49, Hacking: 27, Javascript/Java: 17, Logique: 31, Programmation: 23, Stéganographie: 53
    Challenges
    [FR] PHP France
    Pour tout savoir sur le PHP, en français. Vous trouverez des tutoriels, des exemples, des astuces, toute la do...
    Hacking
    [EN] hax.tor
    50 level de challenges mélangés
    Challenges
    [EN] Sabre Films
    Site de challenge présenté sous la forme d'une quête. Vous êtes un détective et devrez résoudre d...
    Challenges
    [EN] CS Tutoring Center
    Site de challenge spécialisé dans les challenges de programmation C++ et java cependant, d'autres langages pe...
    Challenges
    [EN] Framework Metasploit
    Le Framework Metasploit est un logiciel gratuit, open source de tests de pénétration développ&ea...
    Vulnérabilités

  • 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, 08h22 (Modification du message : 26-02-2013, 00h29 par InstinctHack.)
Message : #1
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
[C/C++] BruteForce
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
25-02-2013, 09h49
Message : #2
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [C/C++] BruteForce
Code :
$ ./bf-orig
Longueur maximun de la chaine : 5
Longueur de l'alphabet :  6

chaine de longueur : 1
0
chaine de longueur : 2
00
chaine de longueur : 3
000
chaine de longueur : 4
0000
chaine de longueur : 5
00000
9330 combinaisons testées

y'a pas comme un souci avec ton code C ?
+1 (0) -1 (0) Répondre
25-02-2013, 12h51
Message : #3
Sh4dows Hors ligne
Tweetos
*



Messages : 293
Sujets : 5
Points: 49
Inscription : Dec 2012
RE: [C/C++] BruteForce
Cool, enfin un peu de C Smile
Regardons ça de plus près ...
Faites ce que je dis et non ce que je fais !
+1 (0) -1 (0) Répondre
25-02-2013, 13h39
Message : #4
Creepy_p0ney Hors ligne
chef des poneys voodoo
*



Messages : 146
Sujets : 9
Points: 24
Inscription : Dec 2011
RE: [C/C++] BruteForce
j'ai fait un code un peu barbare qui génère un dictionnaire de mots de 5 lettres.
Code C :

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

int main(void)
{
        char alphabet[26]="abcdefghijklmnopqrstuvwxyz";
        FILE *fichier;
        fichier=fopen("bruteforce.txt","w+");
        for(int j=0;j<26;j++)
        {
               
                for(int k=0;k<26;k++)
                {
                        for(int i=0;i<26;i++)
                        {
                                for(int l=0;l<26;l++)
                                {                              
                                        for(int m=0;m<26;m++)
                                        {
                                                fprintf(fichier,"%c",alphabet[j]);
                                                fprintf(fichier,"%c",alphabet[k]);
                                                fprintf(fichier,"%c",alphabet[i]);
                                                fprintf(fichier,"%c",alphabet[l]);
                                                fprintf(fichier,"%c",alphabet[m]);
                                                fprintf(fichier,"\n");
                                        }
                                }
                        }
                       
                }
                       
        }
}
 
Penser que coder est coder explique-t-il la recursion ?
http://p0neyland.wordpress.com/
+1 (0) -1 (0) Répondre
25-02-2013, 15h01 (Modification du message : 26-02-2013, 00h23 par InstinctHack.)
Message : #5
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: [C/C++] BruteForce
@gruik moi ça marche, reteste le code que j'ai mis (j'ai peut-etre pas remis le code bien)

@Sh4dows si ça vous motive pour qu'on fasse des trucs ensemble, je fait du c sans problème, je comblerais mes lacunes en plus Wink

@Creepy_p0ney mon code est justement fait pour éviter tous ses boucles, d'accord il ne t'affiche que des nombres, mais en finale, tu as un identificant pour la position de la lettre dans l'alphabet, faux juste creer une table de correspondance comme ASCII, et puis ça voilà

Mon code affiche les caractères au lieu des valeurs Smile (mais le charset est codé en dur, j'aimerais faire comme mon code en python, mais j'ai pas les connaisances pour :p je vais continuer mes recherches)
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
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
25-02-2013, 16h57
Message : #7
Creepy_p0ney Hors ligne
chef des poneys voodoo
*



Messages : 146
Sujets : 9
Points: 24
Inscription : Dec 2011
RE: [C/C++] BruteForce
gruik pas mal ton code, c'est ce que je cherchais à faire masi je savais pas comment
Penser que coder est coder explique-t-il la recursion ?
http://p0neyland.wordpress.com/
+1 (0) -1 (0) Répondre
25-02-2013, 17h12
Message : #8
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: [C/C++] BruteForce
@gruik compile pas chez moi ton code
Citation :khaled@loopinfinity:~/LIFE/Informatique/Programmation/C/bruceforce$ gcc gruik.c -o gruik
/tmp/ccWwMAoj.o: In function `main':
gruik.cSad.text+0x7a): undefined reference to `pow'
collect2: error: ld returned 1 exit status

sinon comparatif de deux algos ?
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
25-02-2013, 17h24 (Modification du message : 25-02-2013, 17h26 par Sh4dows.)
Message : #9
Sh4dows Hors ligne
Tweetos
*



Messages : 293
Sujets : 5
Points: 49
Inscription : Dec 2012
RE: [C/C++] BruteForce
Code :
root@VPS1-Debian:/home/sh4dows# ./a.out 5
Usage  : ./a.out <pass size> <alphabet>
root@VPS1-Debian:/home/sh4dows# ./a.out
Segmentation fault
root@VPS1-Debian:/home/sh4dows# ./a.out 2 "az"
aa
az
za
zz
*** glibc detected *** ./a.out: munmap_chunk(): invalid pointer:
...
Aborted

J'ai corrigé les petits bug, a l'exception de l'erreur glibc qui arrive quand tu free pass_interne.
Code C :

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

int     main (int argc, char *argv[])
{
  int   pass_len;
  char  *alphabet;

  if (argc < 2 +1 || atoi(argv[1]) <= 0 || strlen(argv[2]) <= 0) {
    printf ("Usage  : %s <pass size> <alphabet>\n", argv[0]);
    return -1;
  }
  pass_len = atoi(argv[1]);
  alphabet = argv[2];
  int   alpha_len = strlen(alphabet);
  unsigned long long nb_iterations = pow(alpha_len, pass_len);
  char *pass_chaine;
  if ((pass_chaine = calloc(pass_len, sizeof(char))) == NULL) // pour l'output uniquement
      return (1);
  int *pass_interne;
  if ((pass_interne = calloc(pass_len, sizeof(int))) == NULL)  // pour travailler dessus
    return (1);
  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;
}
 


Khaled, pour compiler il faut ajouter la lib math du coup
Code :
gcc *.c -lm
Faites ce que je dis et non ce que je fais !
+1 (0) -1 (0) Répondre
25-02-2013, 17h24 (Modification du message : 25-02-2013, 17h26 par gruik.)
Message : #10
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [C/C++] BruteForce
faut linker avec la lib math
Code :
gcc -Wall gruik.c -o gruik -lm

sinon pour ce qui est du comparatif globalement on utilise tous les deux la même technique, la différence c'est que tu fais pleins de malloc/free dans des boucles là où j'en fait que 2 au début et à la fin uniquement, potentiellement ça peut faire perdre pas mal de temps à ton algo, difficile à dire, perso j'aurais plus tendance à peaufiner le code pour qu'il fonctionne 100% correctement (c'est pas le cas du mien par exemple, mais il est plus souple, j'ai pas regardé pour le tiens) et ensuite seulement chercher l'optimisation éventuelle, sachant que c'est très contextuel
une bonne façons d'aller vite c'est de pas faire de printf ou de rediriger dans un fichier déjà...

edit: nice sh4dows, thx Wink
+1 (0) -1 (0) Répondre
25-02-2013, 17h40
Message : #11
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: [C/C++] BruteForce
Citation :root@loopinfinity:/home/khaled/LIFE/Informatique/Programmation/C/bruceforce# gcc -Wall gruik.c -o gruik -lm
root@loopinfinity:/home/khaled/LIFE/Informatique/Programmation/C/bruceforce# ./gruik
Segmentation fault (core dumped)
Smile

Bon, sinon un md5 en C, ça se calcule comment ?
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
25-02-2013, 18h51
Message : #12
Sh4dows Hors ligne
Tweetos
*



Messages : 293
Sujets : 5
Points: 49
Inscription : Dec 2012
RE: [C/C++] BruteForce
Il faut utiliser la libmd5, ou alors faire le hashage à la main.
Je te recommande la première méthode Tongue
Faites ce que je dis et non ce que je fais !
+1 (0) -1 (0) Répondre
25-02-2013, 19h49 (Modification du message : 25-02-2013, 23h05 par InstinctHack.)
Message : #13
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: [C/C++] BruteForce
Edit : found Smile
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
25-02-2013, 21h28 (Modification du message : 25-02-2013, 21h30 par balis.)
Message : #14
balis Hors ligne
Hack Compagnie by Eballys
*



Messages : 156
Sujets : 3
Points: 16
Inscription : Dec 2012
RE: [C/C++] BruteForce
Essaye de link la biblio de MD5 dans le compilo c'est quelque chose du genre md5.lib autre du genre et non avec SSL

EDIT : Essaye aussi md5.a dans libm aussi
Sur le net , les poules ont des dents. Bali .
Soit original soit celui qui sort de l'ordinaire soit toi . Bali .
C: ok bash : ok asm : en cours.
HTML/CSS : ok , PHP/MySQL : en cours.
+1 (0) -1 (0) Répondre
25-02-2013, 21h45
Message : #15
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [C/C++] BruteForce
(25-02-2013, 19h49)khaled a écrit : test.cSad.text+0x3d): undefined reference to `MD5'

9 fois sur 10 c'est qu'il linker avec la lib adéquate Khaled, comme pour la lib math -lm, en l'occurence pour openssl c'est -lssl ou -lcrypto il me semble
ça se trouve facilement sur google ça
+1 (0) -1 (0) Répondre


Atteindre :


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