elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Seguridad (Moderador: r32)
| | |-+  Generador Diccionarios a medida
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Generador Diccionarios a medida  (Leído 2,163 veces)
Hirochi3D

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Generador Diccionarios a medida
« en: 21 Enero 2014, 11:08 am »

Hola a todos,

El otro día quería generar un diccionario a medida dado que:

1. La mayoría de las contraseñas que la gente usa empieza con una Mayúscula y termina con un numero.
2. La longitud según la página web, o servicio es distinta por lo que me interesaba poder generar de longitud 8, 7, 6, etc...


No encontré nada que se asimilara a mis peticiones que me parecieron muy obvias así que pensé que iba a tardar menos si me hacia uno rápido.

He hecho un en DevC++ que la verdad me va muy bien, es muy rápido y se ajusta mucho a lo que buscaba.

El funcionamiento es simple, genera contraseñas en base a una mascara que le introduzcas.

*a = "abcdefghijklmnopqrstuvwzyxñ"
*n=  "1234567890"
*s=  "~!@#$%^&?*()-_+={}[]<>|,.;:/"
*m= "ABCDEFGHIJKLMNOPQRSTUVWZXYÑ"
*c= todas las posibilidades

De esa forma si la mascara que introduzco es:

*m*a*a*a*a*n Generara todas las posibles contraseñas que empiecen con una Mayúscula, tengan 4 letras adicionales y un numero al final.

*c*c*c*c*c*c*c Generaría todas las contraseñas posibles de 7 caracteres.

*m*s*c Generaría una mayúscula un símbolo y un completo.

Se pueden añadir símbolos o cosas que creáis que faltan simplemente categorizandolos dentro de una de las cadenas o implementando nuevas.


Yo suelo ejecutar siempre el programa de esta forma en consola:
programa.exe >> diccionario.txt

de forma que después de introducir mi mascara podáis guardarlo en un .txt


Podeis pedir al programa que os genere determinadas mascaras si necesidad que las tengais que introducir vosotros. Eso ya es jugar con el código.

Para aquellos que no sepan C mi consejo es que instalen Devc++ y en nuevo documento hagan copia y pega.

Espero que os sirva a alguien, ahi os va.

Código:
#include <cstdlib>
#include <iostream>
#include <string>
#include <cstring>
#include <fstream>
#include <windows.h>
#include <string>

using namespace std;

string abc("abcdefghijklmnopqrstuvwzyxñ\0");

string num("1234567890\0");
string special("~!@#$%^&?*()-_+={}[]<>|,.;:/\0");
string shiftabc("ABCDEFGHIJKLMNOPQRSTUVWZXYÑ\0");

string completo = abc + num + special + shiftabc;

string cambio_abc("*a");
string cambio_sabc("*m");
string cambio_num("*n");
string cambio_special("*s");
string cambio_completo("*c");

string mascara;


void find_replace(std::string cadena){
     //abcs
     unsigned found_abc = cadena.find(cambio_abc);
     if (found_abc!=std::string::npos)
      {
       cadena.erase(found_abc+1,1);                                      
        for(int i = 0; i <= abc.length(); i++){
                cadena[found_abc] = abc[i];
                unsigned found_space = cadena.find(" ");
                if (found_space!=std::string::npos)
                {
                     cadena.erase(found_space,1);                            
                }
                                                
                cout << cadena << endl;
              
                unsigned found2_abc = cadena.find(cambio_abc);
                if (found2_abc!=std::string::npos)
                {
                 find_replace(cadena);  
                }    
                unsigned found2_sabc = cadena.find(cambio_sabc);
                if (found2_sabc!=std::string::npos)
                {
                 find_replace(cadena);  
                }                    
                unsigned found2_num = cadena.find(cambio_num);  
                if (found2_num!=std::string::npos)
                {
                 find_replace(cadena);  
                }
                unsigned found2_special = cadena.find(cambio_special);  
                if (found2_special!=std::string::npos)
                {
                 find_replace(cadena);  
                }
                unsigned found2_completo = cadena.find(cambio_completo);
                if (found2_completo!=std::string::npos)
                {
                 find_replace(cadena);  
                }  
        }      
      }
     // Shift abcs
     unsigned found_sabc = cadena.find(cambio_sabc);
     if (found_abc!=std::string::npos)
      {
       cadena.erase(found_sabc+1,1);                                      
        for(int i = 0; i <= shiftabc.length(); i++){
                cadena[found_sabc] = abc[i];
                unsigned found_space = cadena.find(" ");
                if (found_space!=std::string::npos)
                {
                     cadena.erase(found_space,1);                            
                }
                                                
                cout << cadena << endl;
              
                unsigned found2_abc = cadena.find(cambio_abc);
                if (found2_abc!=std::string::npos)
                {
                 find_replace(cadena);  
                }    
                unsigned found2_sabc = cadena.find(cambio_sabc);
                if (found2_sabc!=std::string::npos)
                {
                 find_replace(cadena);  
                }                    
                unsigned found2_num = cadena.find(cambio_num);  
                if (found2_num!=std::string::npos)
                {
                 find_replace(cadena);  
                }
                unsigned found2_special = cadena.find(cambio_special);  
                if (found2_special!=std::string::npos)
                {
                 find_replace(cadena);  
                }
                unsigned found2_completo = cadena.find(cambio_completo);
                if (found2_completo!=std::string::npos)
                {
                 find_replace(cadena);  
                }  
        }      
      }
      
     //numeros
     unsigned found_num = cadena.find(cambio_num);
     if (found_num!=std::string::npos)
      {

        cadena.erase(found_num+1,1);                                  
        for(int j = 0; j <= num.length(); j++){
                cadena[found_num] = num[j];
                
                unsigned found_space = cadena.find(" ");
                if (found_space!=std::string::npos)
                {
                     cadena.erase(found_space,1);                            
                }
                    
                cout << cadena << endl;
                
                unsigned found2_abc = cadena.find(cambio_abc);
                if (found2_abc!=std::string::npos)
                {
                 find_replace(cadena);  
                }    
                unsigned found2_sabc = cadena.find(cambio_sabc);
                if (found2_sabc!=std::string::npos)
                {
                 find_replace(cadena);  
                }                    
                unsigned found2_num = cadena.find(cambio_num);  
                if (found2_num!=std::string::npos)
                {
                 find_replace(cadena);  
                }
                unsigned found2_special = cadena.find(cambio_special);  
                if (found2_special!=std::string::npos)
                {
                 find_replace(cadena);  
                }
                unsigned found2_completo = cadena.find(cambio_completo);
                if (found2_completo!=std::string::npos)
                {
                 find_replace(cadena);  
                }                                      
        }      
      }
     //caracteres
     unsigned found_special = cadena.find(cambio_special);
     if (found_special!=std::string::npos)
      {
         cadena.erase(found_special+1,1);                                        
        for(int k = 0; k <= special.length(); k++){
                cadena[found_special] = special[k];
                
                unsigned found_space = cadena.find(" ");
                if (found_space!=std::string::npos)
                {
                     cadena.erase(found_space,1);                            
                }
                                    
                cout << cadena << endl;
                
                unsigned found2_abc = cadena.find(cambio_abc);
                if (found2_abc!=std::string::npos)
                {
                 find_replace(cadena);  
                }    
                unsigned found2_sabc = cadena.find(cambio_sabc);
                if (found2_sabc!=std::string::npos)
                {
                 find_replace(cadena);  
                }                    
                unsigned found2_num = cadena.find(cambio_num);  
                if (found2_num!=std::string::npos)
                {
                 find_replace(cadena);  
                }
                unsigned found2_special = cadena.find(cambio_special);  
                if (found2_special!=std::string::npos)
                {
                 find_replace(cadena);  
                }
                unsigned found2_completo = cadena.find(cambio_completo);
                if (found2_completo!=std::string::npos)
                {
                 find_replace(cadena);  
                }  
        }      
      }  
     //Completo
     unsigned found_completo = cadena.find(cambio_completo);
     if (found_completo!=std::string::npos)
      {
         cadena.erase(found_completo+1,1);                                        
        for(int k = 0; k <= completo.length(); k++){
                cadena[found_completo] = completo[k];
                
                unsigned found_space = cadena.find(" ");
                if (found_space!=std::string::npos)
                {
                     cadena.erase(found_space,1);                            
                }
                                    
                cout << cadena << endl;
                
                unsigned found2_abc = cadena.find(cambio_abc);
                if (found2_abc!=std::string::npos)
                {
                 find_replace(cadena);  
                }    
                unsigned found2_sabc = cadena.find(cambio_sabc);
                if (found2_sabc!=std::string::npos)
                {
                 find_replace(cadena);  
                }                    
                unsigned found2_num = cadena.find(cambio_num);  
                if (found2_num!=std::string::npos)
                {
                 find_replace(cadena);  
                }
                unsigned found2_special = cadena.find(cambio_special);  
                if (found2_special!=std::string::npos)
                {
                 find_replace(cadena);  
                }
                unsigned found2_completo = cadena.find(cambio_completo);
                if (found2_completo!=std::string::npos)
                {
                 find_replace(cadena);  
                }  
        }      
      }                        
}


int main(int argc, char *argv[]) {
{
    cout << "Escribe la mascara" << endl;
    cin >> mascara;

    find_replace(mascara);  
     
    system("PAUSE");
    return EXIT_SUCCESS;

}
}








« Última modificación: 21 Enero 2014, 11:10 am por Hirochi3D » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[APORTE] Generador de Diccionarios VB.NET « 1 2 »
.NET (C#, VB.NET, ASP)
kub0x 15 16,976 Último mensaje 13 Septiembre 2012, 18:36 pm
por .oZONo.
[TUTORIAL] Generador de diccionarios.
Programación Visual Basic
79137913 0 2,768 Último mensaje 13 Abril 2012, 15:57 pm
por 79137913
Ayuda - Generador de diccionarios
Programación C/C++
Miky Gonzalez 4 3,319 Último mensaje 1 Julio 2012, 17:06 pm
por do-while
Generador de Diccionarios BS-Crunch
Hacking Wireless
nicosilver 0 4,021 Último mensaje 25 Diciembre 2012, 03:44 am
por nicosilver
generador de diccionarios en c++, ejecutable en linux.
Hacking Wireless
rochesto 0 3,038 Último mensaje 16 Abril 2016, 18:26 pm
por rochesto
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines