Según la Wikipedia, el
Wardriving es:
La búsqueda de redes inalámbricas Wi-Fi desde un vehículo en movimiento. Implica usar un coche o camioneta y un ordenador equipado con Wi-Fi, como un portátil o una PDA, para detectar las redes.
Además, si en la ecuación utilizamos también un GPS podemos geoposicionar dichos puntos de acceso.
Yo he modificado ligeramente esta idea utilizando la
PDA con el GPS y aprovechando los paseos que damos por las tardes con
Judith. Así, sirviendome del mágnifico programa para buscar redes wifi WiFiFoFum y enlazando éste con el GPS he ido almacenando logs con los distintos puntos de acceso wifi que he ido encontrando en sucesivos paseos. Hasta aquí todo muy bien, pero tener un log como este no sirve de mucho:
0001386FCE3D WLAN_D6 AP On 20:16:57 20:18:03 40,2397633333333 -3,77285833333333
0002CF503AE3 WLAN_11 AP On 20:24:54 20:26:21 40,24089 -3,77058833333333
0003C9D1E558 Comtrend AP On 19:58:44 20:04:13 40,244575 -3,77372
000F213108CF Mota AP On 20:20:43 20:22:17 40,239985 -3,77503166666667
0011E3E40BD0 THOMSON AP Off 20:35:02 20:35:03 40,241825 -3,77842333333333
Pensando cómo mostrar esa información de manera que resultase útil visualmente, busqué información sobre cómo convertir mis logs (en formato CSV pero con tabuladores en lugar de comas) en archivos
KML que pudiera importar en
Google Earth. Existen
webs que convierten datos en CSV a KML, pero después de probar el resultado no me convencía demasiado porque el código generado era demasiado complejo y contenía mucha información inútil. Así, después de buscar algo de
información sobre KML me dispuse a crear mi propio generador en
shell script y
AWK. El resultado es el script
gps2kml:
#!/bin/sh
#
# gps2kml.sh: Script de creación de ficheros KML para
# Google Earth a partir de CSV separados por tabuladores
#
# Iván López Martín
# http://lopezivan.blogspot.com
#
DATA_FILE=$1
KML_FILE=$2
SKELETON=`mktemp -u`
WEP=$4
create_AWK_Skeleton() {
echo { > $SKELETON
echo if \(\$4 \== \""On"\"\) icon=\""http://farm2.static.flickr.com/1248/1196978492_72600c8064_o.png"\" >> $SKELETON
echo if \(\$4 == \""Off"\"\) icon=\""http://farm2.static.flickr.com/1260/1196978476_e1a2070680_o.png"\" >> $SKELETON
echo print \""<Placemark>"\" >> $SKELETON
echo print \"" <name>\"\$2\"</name>"\" >> $SKELETON
echo print \"" <description>\"\$1\"</description>"\" >> $SKELETON
echo print \"" <Point>"\" >> $SKELETON
echo print \"" <coordinates>\"\$8\",\"\$7\",0</coordinates>"\" >> $SKELETON
echo print \"" </Point>"\" >> $SKELETON
echo print \"" <Style>"\" >> $SKELETON
echo print \"" <IconStyle>"\" >> $SKELETON
echo print \"" <Icon>"\" >> $SKELETON
echo print \"" <href>\"icon\"</href>"\" >> $SKELETON
echo print \"" </Icon>"\" >> $SKELETON
echo print \"" </IconStyle>"\" >> $SKELETON
echo print \"" </Style>"\" >> $SKELETON
echo print \""</Placemark>"\" >> $SKELETON
echo } >> $SKELETON
}
# Comprobación de parámetros
if [ "$#" != "2" ]; then
echo "Uso: `basename $0` fich_datos fich_kml"
exit 1
fi
# Creamos el esqueleto de la función para awk
create_AWK_Skeleton
# Escribimos la cabecera del fichero kml
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" > $KML_FILE
echo "<kml creator=\"gps2kml http://lopezivan.blogspot.com/2007/09/wardriving-y-geoposicionamiento-de.html\" xmlns=\"http://earth.google.com/kml/2.1\">" >> $KML_FILE
echo "<Folder>" >> $KML_FILE
echo " <name>APs Wifi Parla</name>" >> $KML_FILE
echo " <open>0</open>" >> $KML_FILE
# Cambiamos las comas por puntos
sed "s/,/./g" $DATA_FILE > .tmp$DATA_FILE
DATA_FILE=.tmp$DATA_FILE
# Generamos los puntos
awk -f $SKELETON -F"\t" $DATA_FILE >> $KML_FILE
# Escribimos el final del fichero
echo "</Folder>" >> $KML_FILE
echo "</kml>" >> $KML_FILE
# Borramos los temporales
rm $SKELETON 2>/dev/null
rm $DATA_FILE 2>/dev/null
La forma de ejecutarlo es muy sencilla y lo único que necesita es el fichero de entrada con los datos y el fichero de salida. Aspectos a tener en cuenta:
Como es una versión de andar por casa no se realizan demasiadas comprobaciones.Se utilizan dos iconos distintos en función de si el punto de acceso tiene cifrado o no.Se generan todos los puntos de acceso en una misma carpeta dentro de GoogleEarth.El fichero generado funciona correctamente en las versiones 4.1.7076.4458 y 4.2.0180.1134 de Google Earth bajo Linux. No lo he probado ni en windows ni con otras versiones, aunque no debería de haber problemas. Después de filtrar los puntos de acceso duplicados de todos los logs de los distintos días, ejecutamos el script con
este fichero de entrada:
ivan@doraemon:~$ ./gps2kml.sh datosGPS.txt paseoJudith.kml
Abrimos Google Earth cargamos el
fichero recien generado (por si no quereis generarlo) y obtendremos una vista de la zona por la que vivo con todos los puntos de acceso que he ido encontrado.
Así que ya sabéis, si alguna tarde vais por Parla por esa zona y veis a esta
preciosa niña, que sepáis que el que va empujando el carrito soy yo ;-).
P.D: Después de terminar el script y el post he buscado en la web de
WiFiFoFum y me he dado cuenta que desde la versión 2.2.5 del 10 de abril de 2007, el programa permite exportar a KML. ¡Eso me pasa por no utilizar versiones actualizadas! (la mía es de octubre de 2006). De todas formas me ha servido para conocer el formato KML y aprovechar los paseos de
Judith. Además, el script se puede utilizar para generar el fichero KML desde otros orígenes que no sean el WifiFofum.