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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Intentando crear programa romper claves wifi (WEP) S.O Windows en C++
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 2 3 4 5 6 [7] 8 9 Ir Abajo Respuesta Imprimir
Autor Tema: Intentando crear programa romper claves wifi (WEP) S.O Windows en C++  (Leído 56,351 veces)
fantasma306

Desconectado Desconectado

Mensajes: 28



Ver Perfil
Re: Intentando crear programa romper claves wifi (WEP) S.O Windows en C++
« Respuesta #60 en: 12 Junio 2011, 19:30 pm »

Hola, me alegra ver que esto siguen en pie jajaja

weno como ya comente a WiseHidden este es mi pequeño codigo para generar diccionarios con palabras de tamaño variado.

Código
  1. /** by fantasma306 **/
  2. #include <fstream>
  3. #include <string>
  4. #include <math.h>
  5. using namespace std;
  6. void genDico(ostream& archivo,const char *cadena, double lengthCadena, double maxLetras);
  7. int main(){
  8. /*Esto se puede cambiar*/
  9. string chars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  10. int numLetrasPass=3;/*numero de letras que tienen las contraseñas generadas, solo modificar el numero*/
  11.  
  12. ofstream archivo("dico.txt");
  13. genDico(archivo, chars.c_str(), chars.size(), numLetrasPass);
  14. archivo.close();
  15.    return 0;
  16. }
  17. void genDico(ostream& archivo, const char *cadena, double lengthCadena, double maxLetras){
  18. /*18446744073709551615 es el numero maximo que se puede guardar en un "unsigned long long"*/
  19. if(18446744073709551615>pow(lengthCadena,maxLetras)-1){
  20. unsigned long long maxCont=pow(lengthCadena,maxLetras)-1;
  21. for(unsigned long long cont=0;cont<=maxCont; cont++){
  22. for(register int i=maxLetras-1; i>=1; i--) {
  23. unsigned long long pos=cont / pow(lengthCadena,i);
  24. if(pos>=lengthCadena)
  25. pos=pos % int(lengthCadena);
  26. archivo<<cadena[pos];
  27. }
  28. archivo<<cadena[cont % int(lengthCadena)]<<endl;
  29. }
  30. }
  31. }


« Última modificación: 14 Junio 2011, 21:29 pm por fantasma306 » En línea

Es mejor callar y que piensen que eres idiota a hablar y demostrarlo.
Danyel_Casvill

Desconectado Desconectado

Mensajes: 113


adada


Ver Perfil
Re: Intentando crear programa romper claves wifi (WEP) S.O Windows en C++
« Respuesta #61 en: 13 Junio 2011, 16:26 pm »

Hola a todos camaradas.

Viendo que todos estamos haciendo nuestros progresos y demas, propongo a que nos reunamos el jueves en el IRC para agilizar y establecer el cometido de cada uno, y asi presentarnos y conocernos un poco.

Que os parece el Jueves alas 22:00h (España)

He puesto esta fecha pero estoy abierto totalmente a otra, por mi parte no hay ningun problema
exponer que hora os vendria mejor, y si es posible llegar a un dia y una hora comun

un saludoooo a todos

 atentamente

WiseHidden
Hola!!  Eeemm, el jueves podría ser, pero ¿Porqué tan tarde? no podría ser mas o menos a las 16:00 (Colombia) o algo asi?

Y eso que depronto la próccima semana no pueda pero igual haré lo posible, me estan avisando si algo.


En línea

adada
fantasma306

Desconectado Desconectado

Mensajes: 28



Ver Perfil
Re: Intentando crear programa romper claves wifi (WEP) S.O Windows en C++
« Respuesta #62 en: 13 Junio 2011, 16:32 pm »

22:00 ( España ) = 16:00 ( Colombia )  :P
En línea

Es mejor callar y que piensen que eres idiota a hablar y demostrarlo.
Danyel_Casvill

Desconectado Desconectado

Mensajes: 113


adada


Ver Perfil
Re: Intentando crear programa romper claves wifi (WEP) S.O Windows en C++
« Respuesta #63 en: 13 Junio 2011, 17:07 pm »

22:00 ( España ) = 16:00 ( Colombia )  :P
O.O jaja ok
En línea

adada
WiseHidden

Desconectado Desconectado

Mensajes: 225


La curiosidad es la semilla de la genialidad.


Ver Perfil WWW
Re: Intentando crear programa romper claves wifi (WEP) S.O Windows en C++
« Respuesta #64 en: 13 Junio 2011, 18:21 pm »

Me parecio adecuada esa hora pues en españa las 22.00 seria una hora prudente y que todos tenemos la facilidad de conectarnos y en paises como colombia, ecuador, argentina........ Seria mas o menos la hora entre el medio dia y la siesta que es otra hora que es aceptable y posible para conectarse, si no veis ningun inconveniente este jueves alas 22.00h (Hora de españa) nos conectaremos todos al irc (Yo me conectare sobre las 22.15) pues es lo que tardo del trabajo ala casa :D

Un cordial saludo

PD: Cualquier duda o consulta o cambio exponganlo por aqui para que todos esten al tanto.

Un saludoooo

Atentamente
WiseHidden
En línea

Si tu tienes una manzana y yo otra y decidimos intercambiarlas, seguiremos teniendo una manzana cada uno, pero si tu tienes una idea y yo otra y la intercambiamos, ambos tendremos dos ideas. (Origen Anónimo)
<<<-Basura->>>


Desconectado Desconectado

Mensajes: 388



Ver Perfil
Re: Intentando crear programa romper claves wifi (WEP) S.O Windows en C++
« Respuesta #65 en: 14 Junio 2011, 05:05 am »

mejore el codigo un monton, ya que el primero que presente fue muy largo he ineficiente, este codigo genera contaseñas que tengan a,b,c, como ya tengo tiempillo libre seguire haciendo lo demas que es sacarlo a un fichero, mirenlon.

Código
  1. #include <stdio.h>
  2. #define Let_A 97
  3. #define Let_B 98
  4. #define Let_C 99
  5. void letras( int i , int j , int k );
  6.  
  7. int main(){    
  8.    for(int i = 1 ; i <= 3 ; i++ )
  9.            for(int j = 1 ; j <= 3 ; j++ )
  10.                    for(int k = 1 ; k <= 3 ; k++ )
  11.                            letras(i,j,k);
  12.                            //printf("%d%d%d \n",i,j,k);
  13.    printf("Pausa...");
  14.    getchar();
  15.    return 0;    
  16. }
  17. void letras( int i , int j , int k ){    
  18.     printf("%c%c%c \n", i==1 ? Let_A : i==2 ? Let_B : Let_C,
  19.                         j==1 ? Let_A : j==2 ? Let_B : Let_C,
  20.                         k==1 ? Let_A : k==2 ? Let_B : Let_C
  21.                         );          
  22. }

Esta corto y bastante entendible diría yo, espero que lo analicen y opinen
En línea

<<<--Basura-->>>
Danyel_Casvill

Desconectado Desconectado

Mensajes: 113


adada


Ver Perfil
Re: Intentando crear programa romper claves wifi (WEP) S.O Windows en C++
« Respuesta #66 en: 14 Junio 2011, 05:19 am »

Hola!!

Eemm estuve pensandolo, y, podríamos hacer lo siguiente; como se supone que el programa debe inyectar las posibles contraseñas, podríamos ir haciendo algo más censillo para ir practicando, o pensandolo a menor escala para luego ir subiendo.
Hacer 2 programas, uno que pida la contraseña (gato5 o cualquiera), y el otro programa debe inyectarle las posibles contraseñas hasta encontrar la correcta.

¿Estan de acuerdo?
¿Como lo harian?

Saludos

Pd: XxX--Underwar--xXx me gusto el código aunque creo se podrían hacer algunas modificaciones (En C++ es preferible no usar define), pero creo po ahí puede ir la cosa.
En línea

adada
<<<-Basura->>>


Desconectado Desconectado

Mensajes: 388



Ver Perfil
Re: Intentando crear programa romper claves wifi (WEP) S.O Windows en C++
« Respuesta #67 en: 14 Junio 2011, 07:56 am »

Yo la verdad no se como inyectar las contraseñas, el que sabe podría decirlo para aprender  :silbar:
En línea

<<<--Basura-->>>
fantasma306

Desconectado Desconectado

Mensajes: 28



Ver Perfil
Re: Intentando crear programa romper claves wifi (WEP) S.O Windows en C++
« Respuesta #68 en: 14 Junio 2011, 11:23 am »

mejore el codigo un monton, ya que el primero que presente fue muy largo he ineficiente, este codigo genera contaseñas que tengan a,b,c, como ya tengo tiempillo libre seguire haciendo lo demas que es sacarlo a un fichero, mirenlon.

Código
  1. #include <stdio.h>
  2. #define Let_A 97
  3. #define Let_B 98
  4. #define Let_C 99
  5. void letras( int i , int j , int k );
  6.  
  7. int main(){    
  8.    for(int i = 1 ; i <= 3 ; i++ )
  9.            for(int j = 1 ; j <= 3 ; j++ )
  10.                    for(int k = 1 ; k <= 3 ; k++ )
  11.                            letras(i,j,k);
  12.                            //printf("%d%d%d \n",i,j,k);
  13.    printf("Pausa...");
  14.    getchar();
  15.    return 0;    
  16. }
  17. void letras( int i , int j , int k ){    
  18.     printf("%c%c%c \n", i==1 ? Let_A : i==2 ? Let_B : Let_C,
  19.                         j==1 ? Let_A : j==2 ? Let_B : Let_C,
  20.                         k==1 ? Let_A : k==2 ? Let_B : Let_C
  21.                         );          
  22. }

Esta corto y bastante entendible diría yo, espero que lo analicen y opinen


pero ese codigo solo sirve para palabras de 3 letras, si se quiere mas letras hay que modificar mucho el codigo, añadir bucles etc..., el codigo que propuse mas arriba,
con tan solo modificar esta linea
Código
  1. int numLetrasPass=3;
es suficiente, incluso se puede pedir al usuario el numero de letras que quiere, para no estar compilando el codigo todo el tiempo,

si no entienden muy bien como funciona el codigo os lo puedo explicar.


Para la inyeccion:
Corríjanme si me equivoco!, pero no seria mas facil programar socket's para enviar paquetes con las contraseñas, y escuchar las paquetes recibidos, para saber si la contraseña es valida.??

En línea

Es mejor callar y que piensen que eres idiota a hablar y demostrarlo.
WiseHidden

Desconectado Desconectado

Mensajes: 225


La curiosidad es la semilla de la genialidad.


Ver Perfil WWW
Re: Intentando crear programa romper claves wifi (WEP) S.O Windows en C++
« Respuesta #69 en: 14 Junio 2011, 11:31 am »

Todos estamos igual Undewar, ninguno sabemos con certeza como "funciona" exactamente el sistema de injeccion de contraseñas, pero voy viendo el aporte que estamos haciendo todos y la verdad que ya esta cogiendo forma y color.

Yo deduzco (y solo es una deduccion pues podria comerte un enorme error) que el programa consta de varias parte.

- GENERADOR DE DICCIONARIO

* A mi Manera hay dos modos de hacerlo.

1º Generando automáticamente el diccionario
     Ventajas: No necesitaria *.txt para compararlo pues lo generaria automáticamente
     Desventajas: El proceso "chuparia y relentizaria" muchisimo la CPU ademas que el tiempo que conllevaria el solo generarlo

Código Basico de Ejemplo:
Citar
//By WiseHidden
// Ejemplo de Generador de Diccionario Para Proyecto WifiHi

#include <fstream.h>

int main()
{
    ofstream archivo("Diccionario.txt");

    for(char letra='A'; letra <='Z'; letra++)
    archivo << letra;
    archivo.close();

    return 0;
}

Como ven, crearia un diccionario en un archivo *.txt (Es un ejemplo básico)
O tambien podria reprensentarse con el código de XxX--Underwar--xXx

Citar
#include <stdio.h>
#define Let_A 97
#define Let_B 98
#define Let_C 99
void letras( int i , int j , int k );
 
int main(){    
    for(int i = 1 ; i <= 3 ; i++ )
            for(int j = 1 ; j <= 3 ; j++ )
                    for(int k = 1 ; k <= 3 ; k++ )
                            letras(i,j,k);
                            //printf("%d%d%d \n",i,j,k);
    printf("Pausa...");
    getchar();
    return 0;    
}
void letras( int i , int j , int k ){    
     printf("%c%c%c \n", i==1 ? Let_A : i==2 ? Let_B : Let_C,
                         j==1 ? Let_A : j==2 ? Let_B : Let_C,
                         k==1 ? Let_A : k==2 ? Let_B : Let_C
                         );          
}

o incluso exponer el código de Fantasma306 (Generador de diccionarios con palabras de tamaño variado) que para mi personalmente y a mi entender seria el más completo, retocando un (Pelín el código) <NO EXPONGO EL CODIGO> Por la longitud del post  :P

2º La segunda opción creo que es la más acertada pues sus ventajas son mayores que la primera.
Solo se necesitaria de diccionario en archivos de texto (.txt) para leerlos, los diccionarios ya vendrian realizados, y lo bueno que podrian utilizarse varios (En varios idiomas) o (Distintas encriptaciones) <<Tendriamos que estudiar como el usuario, "crea" un diccionario X y "se selecciona los nuestros" tiene que haber alguna funcion que trate de esto!!!



Ejemplo de Lectura de diccionario desde un archivo .txt

Citar
// By WH
// Leer un archivo de texto
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
  string linea;
  ifstream MiArchivo ("Diccionario.txt"); //en este caso los diccionarios que tengamos guardado, y en caso de y en algun módulo direccionarlo
  if (MiArchivo.is_open())
  {
    //Mientras que no sea fin de archivo
    while (! MiArchivo.eof() )
    {
      getline (MiArchivo,line);
      cout << linea << endl;
    }
    MiArchivo.close();
  }
  else cout << "No se pudo abrir el archivo.";
  return 0;
}
 
 

Este programa no necesita mucha explicacion, lee un archivo de texto (en este caso diccionario.txt)

Bien esta es la parte facil del Proyecto - Generar/Leer Diccionarios

El problema empieza en Comparar/Injectar/Certificar y Autentificar de que entre todas las probabilidades que tengan nuestros diccionarios una de ellas sea la "verdadera" y nos diga "CONTRASEÑA ENCONTRADA xxxxxxxxxx"

yo creo que se base en el siguiente principio

Citar
//by WiseHidden

#include <stdio.h>

int compara(float a, float b){
   if (a==b) return 0;   
   if (a>b)  return 1;
   if (a<b)  return 2;
}

int main ()
{
   float n1, n2;      /*Los dos números a comparar*/
   printf("nIntroduce el primer número: ");
   scanf("%f", &n1);
   printf("nIntroduce el segundo número: ");
   scanf("%f", &n2);
   switch (compara(n1, n2))
   {
      case 0:   printf("nLos números %f y %f son iguales", n1, n2); break;
      case 1: printf("n%f es mayor que %f", n1, n2); break;
      case 2: printf("n%f es menor que %f", n1, n2); break;
   }
   return 0;
}
pero en vez de establecer si dos numeros son <,= o > tendriamos que ver como comparar si x = x Es un principio matemático muy simple, solo que tenemos que realizarlo en código.

bueno no se porque siempre me enrrollo tanto en mis respuestas :P pero es para hacernos una idea generalizada del proyecto, de ahi a que se celebre una reunión preliminar el jueves, para agilizar y conocer la ideas de cada uno.


PD: Ala hora de mandar el mensaje me ha saltado un aviso de que habia una nueva respuesta en el post.

Citar
Corríjanme si me equivoco!, pero no seria mas facil programar socket's para enviar paquetes con las contraseñas, y escuchar las paquetes recibidos, para saber si la contraseña es valida.??

Y corrijanme si me esquivoco pero creo que esa es la respuesta que necesitabamos!!!

De hecho creo que todos los programas de este tipo lo hacen así!!!
Este es un tema importante a discutir y a conocer

Un cordial saludoooo

Atentamente
Vuestro Igual

WiseHidden
« Última modificación: 14 Junio 2011, 11:35 am por WiseHidden » En línea

Si tu tienes una manzana y yo otra y decidimos intercambiarlas, seguiremos teniendo una manzana cada uno, pero si tu tienes una idea y yo otra y la intercambiamos, ambos tendremos dos ideas. (Origen Anónimo)
Páginas: 1 2 3 4 5 6 [7] 8 9 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines