Moteur de bute force(générateur de password)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 307 fois - Téléchargée 31 fois

Contenu du snippet

Voici une source bien simple expliquant comment générer des Password
afin de pouvoir faire des attaques par dictionnaire(en dehors du fait que cest attaques sont tres longues)
Je vous laisse voir la source

Source / Exemple :


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

#define MINCHAR 33
#define MAXCHAR 126

char *bruteforce(int passlen, int *ntries);

int main(void) {

	int i, wdlen, counter;
	char *str;
	clock_t start, end;
	double elapsed;

	do {
		printf("Taille du mot(nombre de lettres)... ");
		scanf("%d", &wdlen);
	} while(wdlen<2);

	start = clock();

	bruteforce(wdlen, &counter);

	end = clock();

	elapsed = ((double) (end - start)) / CLOCKS_PER_SEC;
	printf("\nNombres de mots... %d \n",counter);
	printf("\nTemps ecoule... %f secondess\n",elapsed);

	return counter;

}

char *bruteforce(int passlen, int *ntries) {

	int i;
	char *str;

  • ntries=0;
passlen++; str = (char*)malloc( passlen*sizeof(char) ); for(i=0; i<passlen; i++) { str[i]=MINCHAR; } str[passlen]='\0'; while(str[0]<MINCHAR+1) { for(i=MINCHAR; i<=MAXCHAR; i++) { str[passlen-1]=i; (*ntries)++; puts(&str[1]); } if(str[passlen-1]>=MAXCHAR) { str[passlen-1]=MINCHAR; str[passlen-1-1]++; } for(i=passlen-1-1; i>=0; i--) { if(str[i]>MAXCHAR) { str[i]=MINCHAR; str[i-1]++; } } } return NULL; }

Conclusion :


Voila c'est tout
Bon ProG'S

A voir également

Ajouter un commentaire Commentaires
ironzorg
Messages postés
45
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
27 juin 2008

8 juin 2008 à 10:53
Pour un password classique de 20 chars, on arrive a 36 exp(20) = 1.33674945 × 10 exp(31) possibilités !
J'ai écrit il y a quelques temps un générateur de dictionnaire ( qui utilise les caractères du bruteforce: aa, ab, bb, ba etc... ), et pour l'écrire il m'a falu plus de deux jours ( meme pas fini en plus :D ) !
cs_chocobo
Messages postés
126
Date d'inscription
samedi 18 janvier 2003
Statut
Membre
Dernière intervention
4 mars 2005

5 févr. 2004 à 17:25
Mouais bô c'est pas mal quoi !!!!!
C'est un peu lent comme système dès qu'on veut des mots
un tout petit peu long mais bon ...
gagah1
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

3 févr. 2004 à 09:23
C'est bien ton programme. Par contre j'ai 3 remarques:
D'abord dans la fn bruteforce, tu as alloué des memoires avec malloc, donc tu devrais les liberer en fin de programme.
La seconde , tu mets char* la valeur renvoyée par bruteforce, alors qu'elle retourne toujours NULL . Si je comprends bien ce que tu as l'intention de faire, c'est à partir de ce char* que tu devrais liberer les mémoires allouées par malloc.
Dernièrement, pourquoi tu mets cette source en niveau 2 ????
Tchao!! Bonne prog!!!!!!!!!!!!!!!!!!!!
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

3 févr. 2004 à 07:44
si tu passais au C++ tu pourrais utiliser new et delete pr les allocs dynamiques, et c'est vachement élégant comme méthode ^^ je dis ça je dis rien, faut surtout pas mal le prendre.

sinon un truc, tu utilises un bloc do/while, pourquoi ne pas mettre juste while? je sais que le do while assure que le bloc soit exécuté au moins une fois, mais ça tu peux t'arranger dans la condition non ? enfin, c un truc uqi m'a tjs étonné ici, y a pleins de gens qui utilisent ça.
cs_LordBob
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
2 févr. 2004 à 21:27
j'avais y a certains temps essayer de réaliser exactement le meme code, mais j'avais arrete... mais ton code est bien je trouve... il n'a pas grande grand utilité... mais au moins on peut apprendre des choses sur l'allocation dynamiques :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.