tcpdump -e -s 256 type mgt subtype probe-resp or subtype probe-req -I
El parámetro -I es el más importante. Pone a la tarjeta de red en "modo promiscuo", de modo que captura TODOS los paquetes que circulan por la red, y no sólo los dirigidos a nuestra interfaz.
Si se desean filtrar los paquetes que van o proceden de una dirección MAC en concreto, se puede filtrar con grep
.
tcpdump -e -s 256 type mgt subtype probe-resp or subtype probe-req -I | grep xx:xx:xx:xx:xx:xx
18:11:35.785252 659741466us tsft 1.0 Mb/s 2462 MHz 11g -58dB signal -95dB noise antenna 0 BSSID:Broadcast DA:Broadcast SA:10:68:3f:4e:52:0a (oui Unknown) Probe Request () [1.0 2.0 5.5 11.0 Mbit]
18:11:35.785252 659741466us tsft 1.0 Mb/s 2462 MHz 11g
-58dB signal
-95dB noise
antenna 0 BSSID:Broadcast DA:Broadcast SA:10:68:3f:4e:52:0a (oui Unknown)
Probe Request ()
[1.0 2.0 5.5 11.0 Mbit]
18:11:35.812619 659745307us tsft 1.0 Mb/s 2462 MHz 11g -55dB signal -95dB noise antenna 0 BSSID:e8:94:f6:51:31:20 (oui Unknown) DA:10:68:3f:4e:52:0a (oui Unknown) SA:e8:94:f6:51:31:20 (oui Unknown) Probe Response (Kunlabori) [1.0* 2.0* 5.5* 11.0* 6.0 9.0 12.0 18.0 Mbit] CH: 11, PRIVACY
18:11:35.812619 659745307us tsft 1.0 Mb/s 2462 MHz 11g
-55dB signal
-95dB noise
antenna 0 BSSID:e8:94:f6:51:31:20 (oui Unknown)
DA:10:68:3f:4e:52:0a (oui Unknown)
SA:e8:94:f6:51:31:20 (oui Unknown)
Probe Response (Kunlabori)
[1.0* 2.0* 5.5* 11.0* 6.0 9.0 12.0 18.0 Mbit] CH: 11, PRIVACY
Se usan expresiones regulares y algunos comandos como grep
para obtener la info de los paquetes que se obtienen de la red y obtener a partir de ellos un array de objetos JSON válido. Aquí habría que estudiar si se envían uno por uno los objetos JSON al servidor, o si se crean batches de objetos (temporales o por número de paquetes).
También hay que optimizar las expresiones regulares, pero en una primera iteracción lo importante es que sean JSON válido.
-
How to calculate distance from Wifi router using Signal Strength? link
-
WiFi Positioning System link
-
Where’ve you been? Your smartphone’s Wi-Fi is telling everyone link
-
802.11 WLAN Packet Types link
-
tcpdump promiscuous mode on OSX link
-
802.11 Association process explained link
-
RadioTap Headers link
- Análisis Local link
## TODO List
- Diferencias entre distintos tipos de dispositivos, si es que las hay
- Probar tanto con Wireshark como con tcpdump (parsear los resultados de tcpdump a JSON)
- Mapas de calor - si Analytics no tiene, hay que usar un HTML canvas, APIs de frontend para mapas de calor (WebGL, D3.js, CartoDB)
- Buscar bases de datos específicas para geolocalización (GIS)
- Firmwares libres para los routers (dd wrt)
- Interfaz REST para obtener los JSON y almacenarlos en la base de datos del servidor