Wardriving con la fonera
1 Febrero 2007 Proyectos 27 ComentariosLa 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í:
http://www.sistemasorp.net/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 http://www.sistemasorp.net/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:

