E aí gente. Blz? Resolvi dá uma pequena contribuição ao fórum GH. O programa não é muito sofisticado, ele gera um lista de combinações possíveis e salva em um arquivo de texto.
Em breve, estarei postando um quebra senha rar e zip. Abs.
Código:
/* Autor: Pegazux Email: pegazux1@gmail.com WordList.c Compilação: Linux: gcc WordList.c -o WordList ./WordList Windows: recomendo o IDE Falcon C++, ele já vem o com o mingw. Modo de uso, quando for executado especifique: min max charset ex: 3 5 abcde1234 Obs: o charset não pode ser separado com espaços; */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> void atualizar(char *aBuff, char *aCharSet, int index){ int lenCS = strlen(aCharSet)-1; char *atual = NULL; if(aBuff[index] != aCharSet[lenCS]){ atual = strchr(aCharSet, aBuff[index]); aBuff[index] = *(atual+1); }else if(index > 0){ aBuff[index] = aCharSet[0]; atualizar(aBuff, aCharSet, index -1); } } void processar(int min, int max, char *charset){ int i, j, lenCharSet = 0, lenWordList = 0; char *buff = NULL, *end = NULL, *index = NULL; FILE *outFile = NULL; outFile = fopen("WordList.txt", "w+"); if(outFile){ for(j = min; j <= max; j++){ end = (char*)calloc(j+1, sizeof(char)); buff = (char*)calloc(j+1, sizeof(char)); lenCharSet = strlen(charset); lenWordList = j; end[lenWordList-1] = '\0'; buff[lenWordList-1] = '\0'; for(i = 0; i < lenWordList; i++){ buff[i] = charset[0]; end[i] = charset[lenCharSet - 1]; } fprintf(outFile, "%s\n", buff); do{ atualizar(buff, charset, lenWordList -1); fprintf(outFile, "%s\n", buff); }while(strcmp(buff, end) != 0); free(buff); free(end); } fclose(outFile); }else{ printf("Falha ao criar arquivo.\n"); } } int main(void){ int min = 0, max = 0; char charSet[256]; setlocale(LC_ALL, "portuguese"); scanf("%i %i %255s", &min, &max, charSet); if(min <= max && max > 0 && strlen(charSet) > 0){ printf("Processando... Por favor, aguarde."); processar(min, max, charSet); printf("\nConcluído\n"); }else{ printf("Valores inválidos\n"); } }