begin process at 2012 05 28 23:57:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

Autre

 > 

Crunch, générateur de dictionnaire.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Crunch, générateur de dictionnaire.

samedi 23 mai 2009 à 12:15:42 | Crunch, générateur de dictionnaire.

Guypaul1


Bonjour à tous!

j'ai un probléme que j'aimerai vous soumettre.

j'ai récupéré la source de Crunch qui est un petit programme, qui génére une suite de chaîne de caractéres, avec la possibilité de choisir au départ le nombre mini, maxi, nom de fichier txt et mot ou chiffres de départ. Le probléme c'est qu'il va générer à l'infini! Ce qui créait un fichier de 100 Go et plus, dans le cas d'une trentaine de codes hexa !

La souce est libre. Donc j'ai eu l'idée que si on peut intégrer une valeur de départ (StartBlock) on devrait pouvoir intégrer une valeur de fin ? Une fois la valeur de fin trouvée, il y a sortie du fichier.

Mais voilà j'ai les idées, mais pas la pratique! J'ai bien essayé en créant un (Endblock) avec strcmp,
mais si la compil était correcte, le résultat était nul..

C'est pour cette raison que je demande votre aide.

Merci.

Guypaul1

La souce : crunch.cpp

/*
 *  character-set based brute-forcing algorithm
 *
 *  usage: ./crunch <from-len> <to-len> [charset] [-t [FIXED]@@@@] [-s startblock]
 *
 *  e.g: ./crunch 3 7 abcdef
 *
 *  This example will compute all passwords between 3 and 7 chars
 *  using 'abcdef' as the character set and dump it to stdout.
 *
 *  Options:
 *
 *  -t [FIXED]@@@@  :  allows you to specify a pattern, eg: @@god@@@@
 *                     where the only the @'s will change
 *
 *  -s              :  allows you to specify the starting string, eg: 03god22fs
 *
 *
 *  This code can be easily adapted for use in brute-force attacks
 *  against network services or cryptography.
 *
 *  Compiles on: linux, c++, freebsd
 *
 */

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

#define TRUE 1
#define FALSE 0

char def_charset[] = "abcdefghijklmnopqrstuvwxyz";

unsigned int inc[128];

int finished(char *block, char *charset, char *templ)
{
    unsigned int i;

    if (templ[0]==0)
    {
        for (i=0;i<strlen(block);i++)
            if (inc[i] < strlen(charset)-1) return FALSE;
    }
    else
    {
        for (i=0;i<strlen(block);i++)
            if (templ[i]=='@' && (inc[i] < strlen(charset)-1)) return FALSE;
    }

    return TRUE;
}

void increment(char *block, int len, char *charset, char *templ)
{
    int i;

    for (i=strlen(block)-1;i>-1;i--)
    {
        if (templ[0]==0 || templ[i]=='@')
        {
            if (inc[i] < strlen(charset)-1)
            {
                inc[i]++;
                block[i] = charset[inc[i]];
                i=-1;
            }
            else
            {
                block[i] = charset[0];
                inc[i] = 0;
            }
        }
        else
        {
        }
    }
}

void chunk(int start, int end, char *charset, char *templ, char *startblock)
{
    int i,j,k,t;
    char block[128];

    if (end-start <0) return;

    if (templ[0]==0) t=0;
    else  t=1;

    for (i=start;i<=end;i++)
    {
        memset(block,0,sizeof(block));

        for (j=0;j<i;j++)
        {
            if (startblock[0]==0)
            {
                if (t==0)
                {
                    block[j] = charset[0];
                    inc[j] = 0;
                }
                else
                {
                    if (templ[j]=='@')
                    {
                        block[j] = charset[0];
                        inc[j] = 0;
                    }
                    else   block[j] = templ[j];
                }
            }
            else
            {
                block[j] = startblock[j];

                for (k=0;k<strlen(charset);k++)
                    if (block[j]==charset[k]) inc[j] = k;
            }
        }

        printf("%s\n",block);
        while (!finished(block,charset,templ))
        {
            increment(block,i,charset,templ);
            printf("%s\n",block);
        }
    }
}

int main(int argc, char *argv[])
{
    int i,j,flag,min,max;
    char charset[256];
    char templ[256];
    char startblock[256];
    char block[256];
   
    if (argc<3)
    {
        printf("usage: %s <from-len> <to-len> [charset] [-t [FIXED]@@@@] [-s startblock]\n",argv[0]);
        return 0;
    }

    memset(charset,0,sizeof(charset));
    memset(templ,0,sizeof(templ));
    memset(startblock,0,sizeof(startblock));

    /* remove duplicate characters from charset */
    if (argc>3)
    {
        for (i=0;i<strlen(argv[3]);i++)
        {
            flag = 0;
            for (j=0;j<strlen(charset);j++)
                if (argv[3][i] == charset[j]) flag = 1;

            if (flag==0) strncat(charset,&argv[3][i],1);
        }
    }
    else  strncpy(charset,def_charset,strlen(def_charset));

    min = atoi(argv[1]);
    max = atoi(argv[2]);

    for (i=1;i<argc-1;i++)
    {
        if (strncmp(argv[i],"-t",2)==0)
        {
            strncpy(templ,argv[i+1],strlen(argv[i+1]));
        }

        if (strncmp(argv[i],"-s",2)==0)
        {
            if (strlen(argv[i+1]) >min)
            {
                printf("Warning: starting length increased to %d.\n",strlen(argv[i+1]));
                min = strlen(argv[i+1]);
            }
            if (strlen(argv[i+1]) <min)
            {
                printf("Warning: minimum length decreased to %d.\n",strlen(argv[i+1]));
                min = strlen(argv[i+1]);
            }

            strncpy(startblock,argv[i+1],strlen(argv[i+1]));

             if (strcmp(startblock, block) == 0)
               {
               printf("les chaines sont identiques %d. \n",block);
             }
         }
    }

    chunk(min,max,charset,templ,startblock);

    return 0;
}

 



Cette discussion est classée dans : argv, charset, block, if, templ


Répondre à ce message

Sujets en rapport avec ce message

Petit probleme avec injection de dll [ par ghostichou ] Tout d'abord je tiens à vous préciser que j'ai deja regarder les autres sujets parlant de ça sur code sources mais même en les relisant je n'arrive pa Calculateur 32bits ... problème de débordement !!! [ par boguista ] j'ai à coder le calcul suivant :S= c. [(a.b + (a+b).2^15 + 2^30)/2^32] sachant que a, b et c sont sur 16 bitsAvez vous un algorithme précis qui puisse gestion evenement en sdl [ par jilou2008 ] bonjour j ai creer un petit programme en c++ avec sdl , j utilise le joystick pour deplacer une image sur l ecran et la coller ensuite seulement pour char* dans un destructeur [ par pepsidrinker ] Premierement, merci de lire ce post, et merci a tous ceux qui veulent maider. Jai le probleme suivant: Jassigne des char* avec 'new[]' dans le constru comparaison de 2 fichiers texte à l'aide d'un programme C [ par Yanis1973 ] Bonjour tt le monde, Si quelqu'in pourrait m'aider sur un ce probleme , je serais tiré d'affaire. merci d'avance. Voila j'ai un programme en c qui per arbre de dico [ par abdel31dz ] salut, j'essaye de faire un arbre de dico mais ça bloque et ça veut pas se compilervoila ce que j'ai fais[code]#include #include            typede Keylogger probleme code [ par rebelattack ] bonjour,J'ai un probleme lorsque je veux compiler ce code. Je suis débutant, mais j'ai réunis plusieur code et çà doit etre la le probleme. donc lorsq menu en batch [ par tieu63 ] Bonsoir; Je me met au batch (pour le boulo!) je n'en ai jamais fais auparavant... J'ai fait un petit bou de code pour automatisé quelques taches sous Ecrire dans un fichier texte dans un TIMER. Ecriture continue [ par mahojul ] Bonjour à tous, Voici le code d'un timer que j'ai sur un de mes dialog : void TTest::OnTimer(UINT nIDEvent) {    // TODO: Add your m tableau d'enregistrement [ par jeun01 ] bonjour , je veux faire une analyse lexical a partir d'un fichier .txt, tout marche bien jusqu'a l'affichage de la table des symboles; le drenier lexe


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales