Wardriving con Airodump y gpsbabel.


En un post anterior comentaba como realizar Wardriving con Kismet y Gpsdrive. Después de escribirlo descubrí que airodump-ng también dejaba una traza de la posición donde localizaba una red usando gpsd. La verdad es que no me parecía que Kismet aportase gran cosa sobre airodump-ng y al descubrir que se integraba con la señal gps quise ver como se conseguía. Buscando no encontré nada, así que voy a intentar montar un pequeño script que me permita representar geográficamente los datos extraídos con airodump, lo deseable también es que se pudieran representar en múltiples plataformas.
 
El planteamiento es el siguiente:
  • Leer de los ficheros de traza de airodump-ng: *gps, *.kismet.csv, *.kismet.xml

  • Transformar su contenido a algo que entienda una aplicación de representación o transformación de ficheros. Para ello voy a usar dos herramientas, la web gpsvisualicer y gpsbabel.

  • Representar la información al menos en google-maps, google-earth y gpsdrive

     

Para obtener la información haremos lo siguiente:

  • Conectar el gps, según se describe aquí.

  • Poner la tarjeta de red en modo monitor: sudo airmon-ng start ra0.

  • Adquirir los datos: sudo airodump-ng -g -w datos.gps ra0

     

Vamos identificar el fichero con el que trabajaremos. Dado que queremos información de la identificación de la wifi detectada (nombre y MAC), posición (longitud y latitud) y el cifrado y que me resulta mas cómodo trabajar con ficheros csv, ya que en último extremo se pueden manejar con hojas de cálculo, me decanto por manejar el *.kismet.csv.

 

Consultando la información de gpsbabel vemos que trabaja con un fichero csv que pienso usar como referencia para planear la transformación. Visto el formato la información a extraer será: “name” (con el nombre y MAC), “desc” (con la encriptación), “lat” (con la latitud) y “lon” (con la longitud). Los extraeremos de la siguiente información: Network; NetType; ESSID; BSSID; Info; Channel; Cloaked; Encryption; Decrypted; MaxRate; MaxSeenRate; Beacon; LLC; Data; Crypt; Weak; Total ;Carrier; Encoding; FirstTime; LastTime; BestQuality; BestSignal; BestNoise; GPSMinLat; GPSMinLon; GPSMinAlt; GPSMinSpd; GPSMaxLat; GPSMaxLon; GPSMaxAlt; GPSMaxSpd; GPSBestLat; GPSBestLon; GPSBestAlt; DataSize; IPType; IP. Las transformaciones que realizaré son:

  • El separador de campos deberá ser “,”.

  • En name incluiré la información de ESSID y BSSID.

  • En desc incluiré la información Encryption.

  • En lat incluiré la información de GPSBestLat.

  • En lon incluiré la información de GPSBestlon.

  • Viendo los datos vemos que no siempre hay datos en GPSBest…, GPSMax… y GPSMin… así que definiremos una regla en la que tomemos primero el dato de GPSBest, si es 0 el de GPSMax y si es nulo el de GPSMin. Dado que estamos hablando de alcances de decenas de metros no creo que afecte mucho el error que se introduzca.

     

Para realizar esta transformación usaremos sed y awk. Describo como lo he hecho aquí. Una vez tenemos el fichero transformado lo podemos tratar con gpsvisualicer para hacer pruebas o para representarlo en google maps. O con gpsbabel para transformarlo en otros formatos que entiendan aplicaciones de representación geográfica, concretamente para determinados formatos la la sintaxis es:

  • google-earth: gpsbabel -i unicsv -f fichero_entrada.csv -o kml -F fichero_salida.kml

  • gpsdrive: gpsbabel -i unicsv -f fichero_entrada.csv -o gpsdrive -F way.txt (depositar el fichero en $HOME/.gpsdrive)

Los resultados obtenidos son:

  • Google Maps

  • Google Earth


  • GPSDrive


Por supuesto esto es sólo una prueba que se puede seguir completando y complicando al gusto del consumidor.

Compartir
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Dejar un comentario

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