Wardriving con la fonera

La fonera es para mi un ordenador con muchas posibilidades. La verdad es que tenerlo solo para compartir la conexión de internet me parece subestimar todo su potencial. Entre las muchas cosas que pueden hacerse con ella (la imaginación es el único limite), una de ellas es hacer wardriving. Hasta ahora el wardriving se hacía con un portatil o una pda que tuviese wifi y gps (ambos en módulos separados o integrados en el hardware) pero eso ha cambiado…

Antes de empezar quiero comentar que todo esto es experimental, y que no me hago responsable de los daños que pudierais ocasionaros a vosotros mismos o a cualquier cosa implicada en el proceso.

Pues bien, la principal ventaja del sistema de wardriving que he estado desarrollando es que es mucho más barato que las soluciones anteriormente citadas, por lo que paso a detallar lo necesario para fabricarse un sistema de wardriving con la fonera (los enlaces son méramente orientativos, no me llevo ninguna comisión por ellos):

Como es lógico, es necesario una fonera, que cuesta unos 30 € en fon (o menos si lo compras en ebay o incluso si te la regalan).

Un módulo gps que funcione a 3,3 voltios, que cuesta alrededor de 40 €. Aunque si se tiene ya un gps de mano con conexión serie se puede hacer un circuito con un chip max3232 (que no 232).

Una antena wifi omnidireccional con imán y conector rp-sma ideal para ponerla en el techo del coche, por unos 17 €. Aunque se puede usar la antena que viene en la fonera (con lo que habrá menos cobertura).

Finalmente un adaptador de mechero para el coche de 5 voltios y 2 amperios por unos 12 €. En mi caso me compré un adaptador de mechero para la PSP que también reúne las características necesarias y que modifiqué ligeramente para poder enchufarlo a la fonera.

Para unir el GPS al puerto serie de la fonera me fabriqué un pequeño cable que va unido a un circuito, y este a su vez a la fonera través de un cable IDE.

Al final uniendo todos los componentes quedaría así:

Para hacer funcionar el invento necesitáis instalar en la fonera el firmware OpenWRT Kamikaze, en La Fonera Developers Forum podeis encontrar un artículo estupendo de como hacerlo. Si no lo hago con el firmware que trae por defecto FON es simplemente porque la fonera no arranca si no encuentra una conexión de red válida (y en el coche no tendremos red alguna) además de que usa el led de WLAN que nosotros aprovecharemos para otro tema.

Ahora por la parte software programé un demonio el cual se encarga de escanear las redes wifi al mismo tiempo que va tomando la posición GPS. El demonio se llama fonerawd y guarda los resultados del escaneo en el directorio /www/wifispots, creando un fichero con la mac de cada red detectada y guardando dentro de este el SSID de la red, el tipo de conexión, si está encriptada o no y su latitud y longitud (si no existe GPS pondrá error, si no tiene señal será 0); todos estos campos están separados por el carácter barra «|».

El puerto serie de la fonera lo programé gracias a este artículo que explica como hacerlo en modo canónico, que es ideal para recibir las lineas de datos del protocolo NMEA del GPS. El escaneo de redes lo hice basándome en este artículo que aunque no explica como hacerlo, el código fuente es suficientemente descriptivo.

Este software esta bajo licencia GPL y lo podéis descargar aquí:

https://www.sistemasorp.es/blog/fonerawd.tar.gz

Aunque ya viene el ejecutable probablemente queráis compilarlo por vosotros mismos, por lo que además de seguir las instrucciones que publiqué en un reciente artículo, debéis compilarlo incluyendo una librería y un directorio de includes de la siguiente forma:

mips-linux-uclibc-gcc -I../fonera/staging_dir_mips/usr/include -L../fonera/staging_dir_mips/usr/lib -liw -o fonerawd fonerawd.c

Donde la ruta ../fonera la debéis cambiar a la ruta donde tengáis el toolchain.

Una vez compilado el ejecutable debéis descargarlo a la fonera en el directorio /usr/bin

wget http://xxx.xxx.xxx.xxx/fonerawd
mv fonerawd /usr/bin

donde xxx.xxx.xxx.xxx es la ip de un servidor web. Después hay que darle permisos de ejecución

chmod +x /usr/bin/fonerawd

Ahora debemos hacer unas modificaciones en el kamikaze:

1) Editar con el vi el fichero /etc/inittab y desactivar el entrada por consola comentado la linea tts/0::askfirst:/bin/ash –login con una almohadilla «#». Esto hará que los comandos NMEA del GPS enviados al puerto serie no provoquen el crear una sesión shell por el puerto serie ya que contienen un retorno de carro y el linux lo confundiría con la pulsación de la tecla ENTER.

2) Poner una ip fija en la fonera para luego poder entrar en ella sin tener que adivinar que IP tiene. Para ello editamos con el vi el fichero /etc/config/network y ponemos esto en la interfaz lan (la ip puede ser cualquier otra de vuestro segmento de red):

config interface lan
option ifname eth0
option proto static
option ipaddr 192.168.0.12
option netmask 255.255.255.0

3) Instalar el modulo proc_gpio citado en este artículo. Para ello debéis copiar el fichero proc_gpio.ko en el directorio /lib/modules/2.6.19.1 . Esto nos permitirá tener control sobre la luz WLAN de la fonera.

4) En el directorio /etc/init.d crear un fichero con el vi llamando red y le añadís las siguientes líneas:

#!/bin/sh /etc/rc.common

start () {
wlanconfig ath0 destroy
wlanconfig ath0 create wlandev wifi0 wlanmode sta
ifconfig ath0 up
insmod proc_gpio.ko
echo 1 > /proc/gpio/2_dir
echo 1 > /proc/gpio/2_out
/usr/bin/fonerawd
}

stop () {
echo «hola»
}

Y le damos permisos de ejecución. Finalmente debéis crear un enlace a este fichero desde el directorio /etc/rc.d de la siguiente forma:

ln -s /etc/init.d/red S76red

Esto hará que cuando se arranque la fonera y busque en el directorio rc.d que scripts deben ejecutarse, se ejecute el script llamado red. Este script crea una interfaz wireless llamada ath0 en modo cliente para poder escanear las redes wifi, luego el módulo proc_gpio hará que se encienda la luz de WLAN, señal que indica que el demonio fonerawd esta cargado y podemos conectar el gps al puerto serie de la fonera (y no antes).

El proceso a seguir sería el siguiente:

1) Ponéis la fonera en el salpicadero del vehículo.

2) Ponéis la antena en el techo del vehículo y pasais el cable al interior a través de la ventanilla conectándola a la fonera.

3) Enchufáis el adaptador al mechero del coche y el otro extremo de este a la fonera.

4) Cuando la luz de WLAN este encendida conectar el módulo GPS.

Un resultado de una de mis salidas haciendo wardriving se puede ver en https://www.sistemasorp.es/fonerawd

Hacer wardriving no conlleva que te conectes a las redes wifi necesariamente, simplemente se trata de listarlas, por eso este proyecto solo lista las redes y no hace nada más con ellas, siendo 100% legal.

El próximo proyecto que tengo en mente es hacer que la fonera con el firmware de FON pueda actuar como interfaz entre internet y un PIC 16F628 para hacer domótica.

Actualización 04/02/2007:

Añado un video sobre una sesión de wardriving con la fonera:

A pesar de que en el vídeo somos dos personas, en las sesiones de wardriving con la fonera solo es necesario el conductor, ya que la fonera se encarga de hacerlo todo ella sola (eso si, poned el gps cuando la luz de WLAN esté en verde y antes de movilizar el vehículo).

Creo que también es necesario un pequeño esquema de como se deben conectar los pines del gps que he utilizado para las sesiones con los pines de la fonera:

27 comentarios en “Wardriving con la fonera

  1. sistemasorp

    Gracias a todos. Me alegro de que os guste. Sin embargo dentro de poco voy a actualizarlo:

    Cambiaré las 4 fotos del final por unas mejores.

    Pondré un video de una sesión de wardriving

    Pondré los esquemas electrónicos para unir el gps a la fonera.

    Responder
  2. Anonymous

    el wardriving está pasado de moda, vamos a ver… de que te sirve descubrir un router wifi si luego resulta que tiene WPA configurado y ahi no vas a poder entrar ni inyectando paquetes desde linux ni nada?

    WPA es la razon por la cual el tema wifi ha caido en picado en popularidad en los ultimos 2 años… ahora hasta el vecino mas imbecil (como el mio) tiene WPA configurado en el router wifi de imagenio

    En una urbanizacion donde yo estoy, en 2005 todo eran routers wifi abiertos de patas (sin WEP ni WPA ni nada) a los cuales conectarte gratis… ahora el 90% tienen WPA configurado… y los que no lo tienen, tienen WEP 128, que logicamente intenté petarlos, pero el password supongo que era de los de verdad, letras y numeros, en los que los ataques de diccionario no sirven de nada.

    Para mi, el tema wifi esta muerto, de hecho yo tengo router wifi de imagenio 3Mbps y lo uso con cable.

    Si el WD lo haces por diversion como parece, pues muy bien, pero se me ocurren mejores maneras de PERDER EL TIEMPO.

    Responder
  3. sistemasorp

    leoborj: No se muy bien a que te refieres de montar una empresa virtual.

    anónimo: El wardriving puede ser más o menos util dependiendo de tus intenciones, pero no lo considero una perdida de tiempo, sino una actividad de ocio (¿no es el ocio matar el tiempo haciendo cosas que te gustan?). En mi caso particular es curiosidad. Lo que no creo es que el wireless esté de capa caida: aún sigue habiendo gente que intenta hacer conexiones wifi con antenas a mucha distancia, vecindarios que quieran pagar una conexion adsl y luego compartirla por wifi, o grupos de amigos que vivan cerca para jugar o compartir en red. Lo de claves de números y letras por diccionario al fin y al cabo da igual: los métodos actuales para desencriptar claves WEP usan las IV (unas 250.000) para recuperar el código de 26 cifras hexadecimales con el que estan encriptadas las comunicaciones.

    Responder
  4. miguel angel flores

    Que tal colega.

    =)

    Visité tu blog y me pareció interesante (por eso te escribo).

    Propongo dos cosas:
    1.- Compartamos un links dentro de nuestros propios blogs (será un placer estar en el tuyo). Te dejo mis datos por si deseas estar en comunicación.

    2.- Si lo crees prudente, asignarnos un voto de confianza =) en el concurso de 20minutos.es.
    En la categoría de TECNOLOGÍA.

    Este es mi blog:
    http://www.miguelflores.com.mx/blog/

    Aquí puedes votarme desde 20minutos.:
    http://www.20minutos.es/premios_20_blogs/busqueda/to+bit+o+no+to+bit/

    Un abrazo desde México. Colega.!
    =)

    Responder
  5. Max

    Hola, yo queria preguntarte otra cosa. Lo referente al blog de «Ejecutar un programa sin sistema operativo», que es un poco antiguo. Me gusto mucho, pero el codigo no lo entiendo muy bien. Sobre todo el tema de los saltos ya que son a pelo y no se usan etiquetas. Me gustaria que me comentases un poco en que consiste. Exactamente desde donde comienza a ejecutarse? Me interesa mucho la idea de correr un programa sin sistema operativo. Hay otras maneras de hacerlo que no sea con el debug? Programas de mas de 64 KB? Por favor, si puedes constestame tambien a mi correo: maxpawer@gmail.com
    (me da igual que me envien SPAM)
    Me gusto mucho tu idea!!!

    Responder
  6. Anonymous

    El vínculo de activagps no es el mismo transformador. ¿Dónde puedo encontrar uno exactamente como el que has usado tú?
    Saludos!

    Responder
  7. Anonymous

    Borrame el mail del mensaje # publicado por Anónimo : 24/03/07 13:30 para evitar spam.
    Gracias.
    Dime dónde puedo encontrar el transformador que has usado tal cual.
    Un saludo.

    Responder
  8. sistemasorp

    Si quieres el mismo que el mio puedes comprarlo en ebay como hice yo o buscar en tiendas como media markt, carrefour, pc city, centro mail, el corte inglés, etc. y buscar por un adaptador de mechero para la PSP.

    Responder
  9. Israel

    que tal? necesito ayuda con programacion de IP’s… sera que me pueda ayudar?

    le dejo mi correo learzy@gmail.com

    para ver si me orienta a lo que quiero llegar, es para un proyecto escolar… saludos y de antemano gracias

    Responder
  10. Jose

    Hola, necesito ayuda uso firmware DD-WRT y quiero programar el puerto serie pero no se muy bien como, tengo la SDK funcionando y un poco de conocimiento en ANSI-C me ayudas? Gracias un saludo

    Responder
  11. inco

    Hola
    estoy intentando reproducir lo que tu has hecho en este artículo para darle otra aplicación y, como no estoy muy familiarizado con la fonera, firms y demás me estoy encontrando con algún problema. A la fonera le he metido el openwrt, le he hecho un adaptador desde los 3.2v ttl del puerto serie a rs232 normal y corriente, esto lo he hecho por que voy a utilizar un gps de campo y su salida era rs232.(Funciona perfectamente, entras por consola sin ningún problema.)
    me he quedado atascado al final, cuando intento lanzar el fonerawd me da un mensaje de error «fonerawd: can’t load library ‘libiw.so.28′» en principio el gpio lo he tenido que meter en otro subdirectorio por que el que indicas no existe en la versión de openwrt que yo he instalado, supongo que por aquí vendrá el error.
    Tienes tu copias del firm y el gpio que metiste en la fonera ?
    ¿Podrías darme alguna pista de por dónde continuar ? Si pudieras dedicarme unos minutos te agradecería mucho la ayuda que puedas prestarme. Si tienes tiempo y crees que pueda ser mas ágil la comunicación te paso un identificador de skype, msn o si nó a través del correo.
    Muchas gracias por tu gran trabajo.
    Inco.

    Responder
  12. inco

    Hola de nuevo.

    He vuelto a flasearla, esta vez con el firm mas viejo que he encontrado (http://downloads.openwrt.org/kamikaze/7.06/atheros-2.6/ ) y tampoco se crea el directorio /lib/modules/2.6.19.1 se crea /lib/modules/2.6.19.2 , he probado a instalar ahí el gpio que lo he cogido de aquí http://daubau.net/proc_gpio/ y ya me funciona bien. Si hago echo «0 ó 1» > /proc/gpio/2_dir se enciende y apaga el led de wlan.
    Ahora lo que me ocurre es que al lanzar fonerawd tengo el mensaje
    root@OpenWrt:/proc/gpio# fonerawd
    fonerawd: can’t load library ‘libiw.so.28’

    ¿ alguna pista de cómo solucionarlo ?
    gracias.
    Inco.

    Responder
  13. xenomorph150

    Wow, that looks so damn awesome! Exactly what I looked for!
    Sadly I can’t understand anything T_T’.
    Do you plan on translating it into English for the Rest of the World?

    Thanks anyway!

    Xeno

    Responder

Responder a Tiger Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *