Hi, well... i made the code for a password generator for all the possible combinations so we can make a very interesting dictionary with this... actually u can change the parameters and only make certain combinations (like all numbers combination or all capital letters combinations) ... just had to change a few changes...
The program has some messages in spanish because im mexican so if u need help or a translate version (or maybe another version that supports an specific change) post a comment and i will try to do something about it.
Oh... the program is write in C ... and actually is very simple i guess...
Hope u like it! and sorry for my bad grammar... english is not my first language 
Code:
/******************************************************************/
/* GeneradorDiccionario */
/* Version: 1.0 */
/* Autor: luckyr13 */
/* Descripción: Programa que imprime todas las combinaciones */
/* posibles para palabras de 1 a 6 caracteres, auxiliar en */
/* pruebas de ataques basados en diccionario. */
/* Para compilar en Linux: gcc com.c -o com */
/* Para correrlo: ./com */
/* Para almacenarlo: ./com > diccionario.txt */
/* Nota: Para numeros de combinaciones muy altas el contador */
/* final truena debido a las restricciones de los int */
/******************************************************************/
#include <stdio.h>
//Imprime todas las combinaciones posibles (numeros, letras, simbolos)
//#define MIN 30
//#define MAX 127
//Imprime todas las combinaciones de binarios
//#define MIN 48
//#define MAX 50
//Imprime todas las combinaciones posibles de Mayusculas
//#define MIN 65
//#define MAX 91
//Imprime todas las combinaciones posibles de minusculas
//#define MIN 97
//#define MAX 123
//Imprime todas las combinaciones posibles de numeros
#define MIN 48
#define MAX 58
void title();
void uno();
void dos();
void tres();
void cuatro();
void cinco();
void seis();
int main() {
title();
int numero=0;
printf("Numero de caracteres del password (1-6) : ");
scanf("%d", &numero);
switch(numero) {
case 1:
uno();
break;
case 2:
dos();
break;
case 3:
tres();
break;
case 4:
cuatro();
break;
case 5:
cinco();
break;
case 6:
seis();
break;
default:
printf("Se salio del rango, ajuste el programa a sus necesidades\n");
}
return 0;
}
void uno() {
int limite=2;
int i=0;
int j=0;
int k=0;
int cont=0;
int val=0;
//int num=0;
char letra[limite][MAX-MIN];
for(i=MIN; i<MAX; i++) {
letra[val][i-MIN]=i;
printf("%c\n", letra[val][i-MIN]);
cont++;
}
printf("Total de combinaciones: %d\n", cont);
}
void dos() {
int limite=2;
int i=0;
int j=0;
int k=0;
int cont=0;
int val=0;
//int num=0;
char letra[limite][MAX-MIN];
for(i=MIN; i<MAX; i++) {
letra[val][i-MIN]=i;
for(j=MIN; j<MAX; j++) {
letra[k][j-MIN]=j;
printf("%c%c\n", letra[val][i-MIN], letra[k][j-MIN]);
cont++;
}
}
printf("Total de combinaciones: %d\n", cont);
}
void tres() {
int limite=3;
int i=0;
int j=0;
int h=0;
int cont=0;
int val=0;
int k=val+1;
int k2=k+1;
//int num=0;
char letra[limite][MAX-MIN];
for(i=MIN; i<MAX; i++) {
letra[val][i-MIN]=i;
for(j=MIN; j<MAX; j++) {
letra[k][j-MIN]=j;
for(h=MIN; h<MAX; h++) {
letra[k2][h-MIN]=h;
printf("%c%c%c\n", letra[val][i-MIN], letra[k][j-MIN], letra[k2][h-MIN]);
cont++;
}
}
}
printf("Total de combinaciones: %d\n", cont);
}
void cuatro() {
int limite=4;
int i=0;
int j=0;
int h=0;
int l=0;
int cont=0;
int val=0;
int k=val+1;
int k2=k+1;
int k3=k2+1;
//int num=0;
char letra[limite][MAX-MIN];
for(i=MIN; i<MAX; i++) {
letra[val][i-MIN]=i;
for(j=MIN; j<MAX; j++) {
letra[k][j-MIN]=j;
for(h=MIN; h<MAX; h++) {
letra[k2][h-MIN]=h;
for(l=MIN; l<MAX; l++) {
letra[k3][l-MIN]=l;
printf("%c%c%c%c\n", letra[val][i-MIN], letra[k][j-MIN], letra[k2][h-MIN], letra[k3][l-MIN]);
cont++;
}
}
}
}
printf("Total de combinaciones: %d\n", cont);
}
void cinco() {
int limite=5;
int i=0;
int j=0;
int h=0;
int l=0;
int m=0;
int cont=0;
int val=0;
int k=val+1;
int k2=k+1;
int k3=k2+1;
int k4=k3+1;
//int num=0;
char letra[limite][MAX-MIN];
for(i=MIN; i<MAX; i++) {
letra[val][i-MIN]=i;
for(j=MIN; j<MAX; j++) {
letra[k][j-MIN]=j;
for(h=MIN; h<MAX; h++) {
letra[k2][h-MIN]=h;
for(l=MIN; l<MAX; l++) {
letra[k3][l-MIN]=l;
for(m=MIN; m<MAX; m++) {
letra[k4][m-MIN]=m;
printf("%c%c%c%c%c\n", letra[val][i-MIN], letra[k][j-MIN], letra[k2][h-MIN], letra[k3][l-MIN], letra[k4][m-MIN]);
cont++;
}
}
}
}
}
printf("Total de combinaciones: %d\n", cont);
}
void seis() {
int limite=6;
int i=0;
int j=0;
int h=0;
int l=0;
int m=0;
int n=0;
int cont=0;
int val=0;
int k=val+1;
int k2=k+1;
int k3=k2+1;
int k4=k3+1;
int k5= k4+1;
//int num=0;
char letra[limite][MAX-MIN];
for(i=MIN; i<MAX; i++) {
letra[val][i-MIN]=i;
for(j=MIN; j<MAX; j++) {
letra[k][j-MIN]=j;
for(h=MIN; h<MAX; h++) {
letra[k2][h-MIN]=h;
for(l=MIN; l<MAX; l++) {
letra[k3][l-MIN]=l;
for(m=MIN; m<MAX; m++) {
letra[k4][m-MIN]=m;
for(n=MIN; n<MAX; n++) {
letra[k5][n-MIN]=n;
printf("%c%c%c%c%c%c\n", letra[val][i-MIN], letra[k][j-MIN], letra[k2][h-MIN], letra[k3][l-MIN], letra[k4][m-MIN], letra[k5][n-MIN]);
cont++;
}
}
}
}
}
}
printf("Total de combinaciones: %d\n", cont);
}
void title() {
system("clear");
printf("-------------------------------------\n");
printf("| Generador de diccionarios |\n");
printf("| 1.0 |\n");
printf("| by luckyr13 |\n");
printf("-------------------------------------\n\n");
printf("Dudas, sugerencias y comentarios a: luckyr13@gmail.com\n");
}