Brutus

Contenu du snippet

Soyez indulgent, c'est mon premier code
je pense qu'il seras inutile pour certain,
mais d'auter pourront le trouver interessant...

Source / Exemple :


/*
	Brutus.cpp -- Brutus v1.0 -- Crack BruteForce pour entrainement au C
	c'est *nocomment* le code, c'est mon premier code C compliqué qui marche
	merci de penser à me rétribuer la coquette somme de euros pour chaque
	utilisation du soft [hey hey, 3h40 de bouleau pour arriver à ça
	qui m'as pris 5min en VB]...

  • /
#include <stdafx.h> #include <stdio.h> #include <stdlib.h> #include <string.h> FILE *stream; int _BruteForce_(int code, int max); bool findChar(char* strToFind, char* strSource); int main(int argc, char* argv[]) { int r_count = argc - 1; // on regarde combien y'a d'arguments réels char* max = NULL; char* code = NULL; char* arg_max = NULL; char* arg_code = NULL; int int_arg_max = 0; int int_arg_code = 0; if(r_count < 2 || r_count > 2){ // si y'a pas le nombre correct d'arguments... printf("Brutus v1.0 -- Crack BruteForce ;-)\n"); printf("veuillez specifier le maximum de boucles et le code !\n"); printf("Arguments valides\n"); printf(" -h :: cet ecran\n"); printf(" -code=x :: specifie le code a cracker, ou x est le code\n [entier naturel]\n"); printf(" -max=y :: specifie le nombre de boucles, ou y est le\n nombre de boucles [entier naturel]\n"); return 0; } if(r_count == 2){ //y'a le nombre d'arguments if(findChar("max", argv[1])){ //on regarde si c'est max ou code donné en 1er max = argv[1]; code = argv[2]; }else{ code = argv[1]; max = argv[2]; } arg_max = new char[(strlen(max)-5)]; arg_code = new char[(strlen(code)-6)]; strncpy(arg_max, max+5, (strlen(max)-5)); // on copie les valeurs dans de nouvelles chaines strncpy(arg_code, code+6, (strlen(code)-6)); arg_max[(strlen(max)-5)] = NULL; arg_code[(strlen(code)-6)] = NULL; int_arg_max = atoi(arg_max); int_arg_code = atoi(arg_code); } _BruteForce_(int_arg_code, int_arg_max); // on lance la fonction bourrin delete[] arg_max; // nettoyage POWA delete[] arg_code; return 0; //quittage } int _BruteForce_(int code, int max) { int a = 0; int b = 0; int c = 0; int marche = 0; printf("Brutus v1.0 -- Crack BruteForce ;-)\n"); printf("Tentative de brute forcer pour trouver a, b, c avec le code %d\n", code); printf("avec %d = (a+2) * (b-1) * (c+3)", code); stream = fopen("crack.txt","a"); // ouverture du fichier de logging fprintf(stream, "Tentative de brute forcer pour trouver a, b, c avec le code %d\n", code); fprintf(stream, "avec %d = (a+2) * (b-1) * (c+3)\n", code); /* ci-dessous, bourrinage en cours 3 boucles for imbriquées hummm
  • /
for( a = 1; a <= max; a++ ) { for( b = 1; b <= max; b++ ) { for( c = 1; c <= max; c++ ) { int CheckSum = (a+2) * (b-1) * (c+3); if(CheckSum == code){ marche++; printf("a=%d, b=%d, c=%d, CheckSum=%d\n", a, b, c, CheckSum); fprintf(stream, "a=%d, b=%d, c=%d, CheckSum=%d\n", a, b, c, CheckSum); } } } } if(marche == 0){ printf("\n\nDesole, aucune combinaison trouvee!\n"); fprintf(stream, "\n\nDesole, aucune combinaison trouvee!\n"); } fclose(stream); // fermeture du fichier return 0; } bool findChar(char* strToFind, char* strSource) { char* res = ""; res = strstr(strSource, strToFind); // on cherche la chaine voulue if(res != NULL){ return true; // trouvée! }else{ return false; // pas rouvée :-( } }

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.