How can i procedurally generate string to break a password?
/*/ Decodificador de contraseñas para Investigacion Cientifica programado por Edimar Valentin Kery
// 1/3/2016
/*/
#include <iostream> /*/ Incluir archivos 'header' que contiene lo
necesario parra que el programma ejecute
/*/
#include <cstdlib>
#include <cstdio>
#include <string>
#include <ctime>
void funcion_decifrante(std::string contrasena, char caracteres[]); /*/ Este es el prototipo de una funcion aun no definida.
Esta se encargara de decifrar la contraseña.
/*/
char caracteres[93]; /*/ Esto es una mesa que va acontener todos los caracteres que se pueden contener
en una contraseña usando los valores de la tabla ASCII
/*/
char caracteres_asignador(int codigo_ASCII); /*/ Otro prototipo, este es el que le va a asignar los
caracteres a la variable caracteres /*/
int main() /*/ Esta funcion es la principal y es la que llama a las demas funciones
/*/
{
caracteres[93] = '\0'; // Null Terminante
for( unsigned int i = 33; i < 126; i++ ) // Esto es un lazo, correra 'i' sea mayor que 126
{
static unsigned int index = 0; /*/ Esta variable se usa como direccion a la tabla 'caracteres'
para acessar su contenido /*/
caracteres[index] = caracteres_asignador(i); /*/ caracteres_asignador se encargara de asignarle
su valor a 'caracteres' para despues usarlo para combinarlo y formar combinaciones que luego
podemos usar para verificar la contraseña
/*/
index++; // Le suma 1 a index
}
std::string Contrasena; /*/ Declara la variable que contendra la contraseña introduzida por el
usuario
/*/
std::cout << "Introduzca contraseña: " << "\n"; // Escribe "Introduzca contraseña: " en la terminal
std::cin >> Contrasena; // Introudze la contraseña a la variable
funcion_decifrante(Contrasena, caracteres); /*/ Se llama la funcion decifrante y se le pasa
la contraseña y los caracteres para decifrar la Contraseña
/*/
return 0; // Si el programa ejecuta bien, regresara '0'
}
char caracteres_asignador(int codigo_ASCII) // Define la funcion caracteres_asignador
{
return (char)codigo_ASCII; // Regresa el caracter correspondiente al valor dado
}
void funcion_decifrante(std::string contrasena, char caracteres[]) // Define la funcion_decifrante
{
std::string combinacion; // Declara la variable que se utilizara para contener las combinaciones
while(combinacion != contrasena) // Correra siempre y cuando 'combinacion' no sea igual a 'contraseña'
{
static unsigned short int index_c = 0; // Index para caracteres
static unsigned short int tamano = 0; // Index para la combinacion
if(index_c == 92)
{
tamano++;
index_c = 0;
}
combinacion[tamano] = caracteres[index_c]; // Hace la union
index_c++;
std::cout << combinacion << "\n";
}
if(combinacion == contrasena) // Si la combinacion es correcta
{
std::cout << "La contraseña es: " << combinacion << "\n"; // Escribe el resultado
}
}