Tengo Una Idea (Attack Broken locks)

Iniciado por Kr0pl0its, 16 Octubre 2016, 23:39 PM

0 Miembros y 3 Visitantes están viendo este tema.

Kr0pl0its

Saludos, Necesito Un Consejo Acerca De Un Programa Que Eh Estado Desarrollando En Estos Días, Que Tiene Como Función Realizar Un Procedimiento Similar a El De Fuerza Bruta Con La Diferencia De Que Debería Funcionar De La Siguiente Manera:    El Programa Contiene Todas Las Letras,Símbolos y Números Posibles. Realiza Una Lista De Cien Millones De Combinaciones ilógicas y Luego Utiliza Un Procedimiento Que Le Permitirá Comparar Todos Los Caracteres de Manera Que Buscara Combinaciones Lógicas (Combinaciones Posibles Para Lograr Acceder) Luego Las Va a Codificar Siguiendo Ciertas Instrucciones  Que Permitirán Descifrar y Almacenar a Las Mejores Combinaciones Es Decir El Programa Mete Una Lista de Contraseña Cifradas Siguiendo El Algoritmo de Cifrado del objetivo (Se Debe Especifica) Realizando Lo Que Yo Llamaría Broken locks... En Fin, Quiero Decir El Programa Rompe a La Fuerza Utilizando El Procedimiento de Cryptografia del objetivo (Es Decir Solo Funciona En Sistemas Débiles ) Busca Las Vulnerabilidades y Genera Combinaciones que permiten acceder a el objetivo (Debe Meterse la lista de forma automática y los patrones deben ser cifrados...) este procedimiento puede tardar un poco, pero con las instrucciones y manejo correcto puede funcionar sin ningún problema.. Eh Estado Pensado en Utilizar Python... Solo Necesito Unos Consejos..  ;D Saludos
Código (cpp) [Seleccionar]

#include <iostream>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <time.h>



void encriptarArchivo();
void desencriptarArchivo();
using namespace std;
int main ()
{


char cadena[5185]={'A','B','C','D','E','F','G','H','I','J','K','L',
                'M','N','O','P','Q','R','S','T','U','V','W','X',
                'Y','Z','0','1','2','3','4','5','6','7','8','9',
        'a','b','c','d','e','f','g','h','i','j','k','l',
                'm','n','o','p','q','r','s','t','u','v','w','x',
                'y','z','0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J','K','L',
                'M','N','O','P','Q','R','S','T','U','V','W','X',
                'Y','Z','0','1','2','3','4','5','6','7','8','9',
        'a','b','c','d','e','f','g','h','i','j','k','l',
                'm','n','o','p','q','r','s','t','u','v','w','x',
                'y','z','0','1','2','3','4','5','6','7','8','9',
'/','-','_','#','%'};




   
 int cont=0;
 
     FILE *arch;
 
 char c;
    int a,e,i,o,u; //contadores
   char digito[0];
  char resultado[0];  //array donde vamos a guardar los resultados

   unsigned char caracter='a';  //variable usada para las compraraciones
   int ok=0;
   int y=0;
   int j=0;
   int k=0;
 


 
 
while("pause")
    {
system ("title Brutal");
system("color 9a");

arch=fopen("datos.txt","a");




 

srand(time(NULL));


while (cont!=100000){ // Numero de Cifras a Generar

   

for(u=0;u<=10;u++)
{


   
   for(y=0;y<4;y++){  //bucle que compara y encuentra el 1º caracter
   caracter=(char)y;
        for(j=0;j<8;j++){  //bucle que compara y encuentra el 2º caracter
             caracter=(char)j;
             for(k=0;k<16;k++){  //bucle que compara y encuentra el 3º caracter
                   caracter=(char)k;
                   if(cadena[0 > 2]==caracter){
                       resultado[0 > 4]=caracter;
                       ok++;
                       if(ok==0){break;}
                   }
                   caracter++;            
             
             if(cadena[0 > 4]==caracter){
                 resultado[0 > 8]=caracter;
                 ok++;
             }
             caracter++;
        }
        if(cadena[0 > 8]==caracter){
            resultado[0 > 16]=caracter;
            ok++;
        }

 if(cadena[0 < 2]==caracter){
                       resultado[0 < 4]=caracter;
                       ok++;
                       if(ok==0){break;}
                   }
                   caracter++;            
             }
             if(cadena[0 < 4]==caracter){
                 resultado[0 < 8]=caracter;
                 ok++;
             }
             caracter++;
        }
        if(cadena[0 < 8]==caracter){
            resultado[0 < 16]=caracter;
            ok++;
        }
}
        caracter++;


   
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\n\t\t ");


fputs(resultado, arch);


caracter++;


   printf("\n\t");
 

}
}


  getch ();
}



No Eh Hecho Mucho En El Programa Le Faltan Las Funciones Más Importantes...
"Concéntrate en el momento. Siente, no pienses, usa tu instinto." Qui-Gon Jinn.

engel lex

no mezcles librerías de C con las de C++

Código (cpp) [Seleccionar]
#include <iostream>
#include <conio.h> //no la usas aquí, no la uses en general... quitala
#include <windows.h> //no la usas aqui, si puedes evitala, te limita la plataforma
#include <stdlib.h>   //c++ -> <cstdlib>
#include <stdio.h> //c++ -> <cstdio> aunque ya usas iostream
#include <string> 
#include <time.h> //<ctime>


char cadena[5185]= ...
por que usas 5185 espacios? es preferible que la declares del tamaño que usarás... a demás, estás usando la librerís string, no es necesario que uses char directamente aqui


qué es esto? que quieres hacer aquí?
cadena[0 > 2]


en general no comprendo que intenta hacer el sistema... por cierto, no es en general eficiente pasar pot todas las posibilidades y descartar... lo correcto es predecir las posibilidades y evitar en lo absoluto usar cciclos para las no posibles (ya que perderás temipo de calculo descartando)


El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Kr0pl0its


Código (cpp) [Seleccionar]

#include <iostream>
#include <stdlib.h>
#include <string>
#include <time.h>
#include <cstdlib>


void encriptarArchivo();
void desencriptarArchivo();
using namespace std;
int main ()
{


char cadena[201]={'A','B','C','D','E','F','G','H','I','J','K','L',
                'M','N','O','P','Q','R','S','T','U','V','W','X',
                'Y','Z','0','1','2','3','4','5','6','7','8','9',
        'a','b','c','d','e','f','g','h','i','j','k','l',
                'm','n','o','p','q','r','s','t','u','v','w','x',
                'y','z','0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J','K','L',
                'M','N','O','P','Q','R','S','T','U','V','W','X',
                'Y','Z','0','1','2','3','4','5','6','7','8','9',
        'a','b','c','d','e','f','g','h','i','j','k','l',
                'm','n','o','p','q','r','s','t','u','v','w','x',
                'y','z','0','1','2','3','4','5','6','7','8','9',
'/','-','_','#','%'};




   
 int cont=0;
 
     FILE *arch;
 
 char c;
    int a,e,i,o,u; //contadores
   char digito[0];
  char resultado[0];  //array donde vamos a guardar los resultados

   unsigned char caracter='a';  //variable usada para las compraraciones
   int ok=0;
   int y=0;
   int j=0;
   int k=0;
 


 
 
while("pause")
    {


arch=fopen("datos.txt","a");




 

srand(time(NULL));


while (cont!=100000){ // Numero de Cifras a Generar

   

for(u=0;u<=10;u++)
{


   
   for(y=0;y<4;y++){  //bucle que compara y encuentra el 1º caracter
   caracter=(char)y;
        for(j=0;j<8;j++){  //bucle que compara y encuentra el 2º caracter
             caracter=(char)j;
             for(k=0;k<16;k++){  //bucle que compara y encuentra el 3º caracter
                   caracter=(char)k;
                   if(cadena[0]==caracter){
                       resultado[0]=caracter;
                       ok++;
                       if(ok==0){break;}
                   }
                   caracter++;            
             
             if(cadena[0]==caracter){
                 resultado[0]=caracter;
                 ok++;
             }
             caracter++;
        }
        if(cadena[0]==caracter){
            resultado[0]=caracter;
            ok++;
        }

 if(cadena[0]==caracter){
                       resultado[0]=caracter;
                       ok++;
                       if(ok==0){break;}
                   }
                   caracter++;            
             }
             if(cadena[0]==caracter){
                 resultado[0]=caracter;
                 ok++;
             }
             caracter++;
        }
        if(cadena[0]==caracter){
            resultado[0]=caracter;
            ok++;
        }
}
        caracter++;


   
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\n\t\t ");


fputs(resultado, arch);


caracter++;


   printf("\n\t");
 

}
}


  getch ();
}



soy un  fracaso  :huh: 
[/quote]
"Concéntrate en el momento. Siente, no pienses, usa tu instinto." Qui-Gon Jinn.

engel lex

si eres un fracaso o no, está de tu parte decidirlo

veo que lo haces a los golpes que es el problema, tienes que sentarte con calma, recomiendo  usar una libreta y "simular" el codigo (la salida) que quieres a mano para visualizarlo...

explica paso a paso que se supone que haga (no la explicación que diste, sino realmente paso a paso) para ver si te podemos ayudar...

si, python podría ser util para esto, su manejo de cadenas es efectivo y simple, pero c++, es enormemente más rápido y potente

CitarDe Cien Millones De Combinaciones ilógicas y Luego Utiliza Un Procedimiento Que Le Permitirá Comparar Todos Los Caracteres de Manera Que Buscara Combinaciones Lógicas

100.000.000 de combionaciones son apenas 4 letras (y la mitad de camino de la 5ta) luego de generarlas tardarás x tiempo decidiendo cuales son buenas o no... eso tomará tiempo... y si lo escribes en disco para leerlo desde allí, taradrá una cantida ridicula de tiempo, es preferible que llenes la ram y hacer todo desde allí

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Kr0pl0its

Gracias, Me Pondré a Trabajar con calma el programa... cuando lo termine o tenga un avance.. paso código  ;D
"Concéntrate en el momento. Siente, no pienses, usa tu instinto." Qui-Gon Jinn.

Kr0pl0its

Es lo que Hecho Hasta Ahora, me gustaría saber como evitar windows.h

#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <string>
#include <ctime>
#include <fstream>
#include <windows.h>  //quiero evitar esto, pero es la unica forma de que funcione keybd_event();

using namespace std;


int main ()
{


char cadena[201]={'A','B','C','D','E','F','G','H','I','J','K','L',
                 'M','N','O','P','Q','R','S','T','U','V','W','X',
                 'Y','Z','0','1','2','3','4','5','6','7','8','9',
         'a','b','c','d','e','f','g','h','i','j','k','l',
                 'm','n','o','p','q','r','s','t','u','v','w','x',
                 'y','z','0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J','K','L',
                 'M','N','O','P','Q','R','S','T','U','V','W','X',
                 'Y','Z','0','1','2','3','4','5','6','7','8','9',
         'a','b','c','d','e','f','g','h','i','j','k','l',
                 'm','n','o','p','q','r','s','t','u','v','w','x',
                 'y','z','0','1','2','3','4','5','6','7','8','9',
'/','-','_','#','%'};  //Letras, Numeros y Simbolos a Utilizar.




int cont=0;
char c;
int a,e,i,o,u; //contadores
char digito[0];
char resultado[0];  //array donde vamos a guardar los resultados
unsigned char caracter='a';  //variable usada para las compraraciones
    int ok=0;
    int y=0;
    int j=0;
    int k=0;
 

srand(time(NULL));


while (cont!=100000){ // Numero de Cifras a Generar

 
 
for  (i = 0; cadena[i]!='\0';i++) //se generar toda la cadena para luego descodificar (Criptografia Inversa).
       {
   
   
   
for(u=0;u<=100;u++)
{

for(u=0;u<=100;u++)
{

cadena[i]-=i; //se descodifica
printf("%c ",cadena[i]);

for(u=0;u<=100;u++)
{

for(u=0;u<=100;u++)
{

for(u=0;u<=100;u++)
{

for(u=0;u<=100;u++)
{


for  (e = 0; resultado[e]!='\0';e++) //Se Generan Los Resultados
       {
   

printf("%c ",resultado[rand() % 201]);
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);
printf("\t\t ");
printf ("%c",resultado[rand() % 201]);


       
resultado[e]-=e; //se descodifican los resultados
printf("%c ",resultado[e]);
       
   
keybd_event((BYTE)VkKeyScan(resultado[rand() % 201]), 0, 0, 0); //se escriben en pantalla
keybd_event((BYTE)VkKeyScan(resultado[rand() % 201]), 0, 0, 0);


keybd_event(VK_RETURN, 0, 0, 0); //Pulsamos enter
keybd_event(VK_RETURN, 0, 0, 0); //Levantamos enter
printf("\n\t\t ");


}




}

}

}

}

}

}




}


caracter++; //se siguen generando

    printf("\n\t");
 
  keybd_event(VK_RETURN, 0, 0, 0); //Pulsamos enter
keybd_event(VK_RETURN, 0, 0, 0); //Levantamos enter

}




   getch ();
}


 
 

 
"Concéntrate en el momento. Siente, no pienses, usa tu instinto." Qui-Gon Jinn.

MCKSys Argentina

Si llamas  a las APIs de windows, creo que no puedes prescindir de windows.h, a menos que especifiques el prototipo de la función/es a las que llamas (osea, lo mismo que hace el .h)

Pero bueno, no programo mucho de C/C++.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."