WiFi geolocation tool (wilocate)

Started by Emilio, January 02, 2011, 07:25:42 PM

Previous topic - Next topic

Emilio

Buondì :D
ho buttato giù un piccolo tool che potrebbe essere utile per la distribuzione, o anche il semplice smanettamento ad utilizzo personale. Il programma raccoglie gli AP wireless visibili dalla nostra macchina, e quera le api di google per conoscerne la localizzazione. Ha uno scarto di circa 200 metri, la localizzazione è incredibilmente buona e senza bisogno di GPS vari. Mi sono ispirato a questo paper http://www.exploit-db.com/papers/15881/ automatizzando il recupero dei mac address.

E' per console, e sono poche decine di linee di python. Quello che volevo era un tool usabile 'a mano', però si possono aggiungere migliorie per integrarlo con altri programmi (possibilità di specificare liste di mac, integrazione con programmi di sniffing wifi per fare wardriving, e altro).

E' possibile anche indicare un mac address a mano (evitando che recuperi automaticamente gli indirizzi degli AP vicini). Se la localizzazione va a buon fine, viene generato l'url per vedere la zona su google maps.

Qua uno screenshot:


Potete scaricarlo da qua http://code.google.com/p/wilocate o più velocemente con il comando

svn checkout http://wilocate.googlecode.com/svn/trunk/ wilocate.

Il codice è in beta, brutto cattivo e scritto in un giorno. Si accettano migliorie e opinioni, anche nel caso non sia preso in considerazione per essere integrato in BackBox. Ahn, auguri di buon anno :D

raffaele

ciao, molto interessante... avevo gia letto qualcosa sulle API di google per la geolocalizzazione ma non avevo approfondito.

potresti migliorare lo script introducendo come prima cosa un l'help da richiamare magari con il classico "./wilocate.py --help" e formattare un po meglio l'output.

inoltre guarda un po qui: http://thunar.xfce.org/plugins.html#thunar-uca

credo che sia il miglior modo per includerlo in backbox ;)
raffaele@backbox:~$ Get root or die tryin'

Emilio

Ciao raffaele
ho scritto l'--help dove spiego anche i simboli della "progress bar" (da rivedere e migliorare).

Non ho capito il riferimento ai menù di thunar,  lo vedi bene come voce del menù del file manager? Non so quanto ci stia bene.. Non che ce lo veda neanche pacchetto singolo, è uno strumento abbastanza fine a se stesso.. non avete una sorta di pacchetto tipo "wireless-tool" dove metterlo? =) Comunque la mia era una segnalazione, vedete voi se e come può essere utile a Back Box.

Una applicazione reale nell'ambito della sicurezza (trovando le giuste motivazioni per farlo =) potrebbe essere una integrazione con kismet o airodump, che tiene un tracciato delle coordinate attraversate durante il wardriving, da dare poi in pasto a google maps o simili stile GPS.


raffaele

si in effetti bisogna capire quale scopo deve avere il tuo script... ad esempio per quanto riguarda thunar si potrebbe creare una nuova cartella, selezionarla col tasto destro e tramite l'azione personalizzata salvare al suo interno una mappa con i vari ap o piu semplicemente se si vuole geolocalizzare una lista di ap precedentemente salvati, si potrebbe selezionare il file con i vari indirizzi mac e sempre col tasto destro darlo in pasto al tuo script. come vedi le soluzioni sono infinite, comunque resta il fatto che un pacchetto backbox con una serie di strumenti per la geolocalizzazione sarebbe davvero molto utile.
raffaele@backbox:~$ Get root or die tryin'

ghostdog

molto interessante come progetto, conosco qualcosa di simile, che magari intgrando il progetto di emilio con questo che ho trovato su google code, si riesce in qualche modo ad ottenere un ottima application!

LINK:  http://code.google.com/p/wlan-pos/downloads/detail?name=wlanpos-locdata-20100409.tbz2

LINK to JPG:  http://code.google.com/p/wlan-pos/downloads/detail?name=ap-detail.jpg

clshack

da me sbaglia di umm 30 km cazzolino ;)

Comunque ottima idea :D

raffaele

in effetti non ho ben capito una cosa... se la geolocalizzazione si basa sulla posizione dell'ap nell'istante in cui passava la google car, anche se "indovina" la città, come fa a dirmi che si trova in altri posti?!
raffaele@backbox:~$ Get root or die tryin'

Emilio

In che senso "come fa a dirmi che si trova in altri posti"? :| Nel senso di "come fa a sbagliare"? Non ne ho idea, errori nelle catture di google?. Cmq potete verificare con il json che ritorna la query (fatelo più volte, ogni tanto restituisce valori a casaccio).

curl http://www.google.com/loc/json -H "Pragma: no-cache" -H "Cache-control: no-cache" -d "{ \"version\": \"1.1.0\", \"host\":
\"maps.google.com\", \"request_address\": true, \"address_language\":
\"en_GB\", \"wifi_towers\": [ { \"mac_address\": \"QUA_IL_MAC_ADDRESS\",
\"signal_strength\": 8, \"age\": 0 } ] }"


Comunque ho trovato il modo di parsare file pcap per estrarre la lista dei mac, non penso ci voglia molto poi a generare un POST che restituisce il percorso su google map ben disegnato e magari con qualche info sugli ap incontrati. Sarebbe comodo, uno va in giro con il portatilino nello zaino (non connesso) e al rientro a casa ricostriusce il  percorso fatto, con tanto di info su AP aperti/protetti.

drego85

Eh poi se non sbaglio ormai le Google Car non identificano più le reti WiFi!

Andrea Draghetti
Personal Blog

Emilio

Dubito, tutto il sistema di google di geolocalizzazione via browser si basa su questo giochino. Magari ti riferisci allo scandalo dei pacchetti sniffati in germania, ma lì si erano spinti un po troppo oltre, per geolocalizzare il MAC gli basta sniffare innocui beacons.

Comunque ora il programmino, fornisce una google maps con sopra segnata la propria posizione e quelle delle reti attorno : D Basta avviarlo, e collegarsi a http://localhost:8000 per vedere se stessi localizzati e le wifi attorno. L'ho appena implementata, ci sono molte stronzate da debugging, è tutto ancora molto sporco ma la base funziona. Chi vuole provarlo usi l'svn qui sopra.

drego85

Quote from: Emilio on January 07, 2011, 04:13:02 PM
Dubito, tutto il sistema di google di geolocalizzazione via browser si basa su questo giochino. Magari ti riferisci allo scandalo dei pacchetti sniffati in germania, ma lì si erano spinti un po troppo oltre, per geolocalizzare il MAC gli basta sniffare innocui beacons.

Comunque ora il programmino, fornisce una google maps con sopra segnata la propria posizione e quelle delle reti attorno : D Basta avviarlo, e collegarsi a http://localhost:8000 per vedere se stessi localizzati e le wifi attorno. L'ho appena implementata, ci sono molte stronzate da debugging, è tutto ancora molto sporco ma la base funziona. Chi vuole provarlo usi l'svn qui sopra.
Pensavo avessero smesso di scandagliare le reti WiFi dopo lo scandalo Tedesco...invece continuano! :)

Bhe cmq buono sviluppo, conto di provare il sw entro la prossima settimana.

Andrea
Andrea Draghetti
Personal Blog

drego85

Scusami ma in che formato deve essere espresso il MAC Addres?

Ho provato a digitare:
Quoteandrea@andrea-desktop:~/wilocate$ ./wilocate.py 00:22:75:22:CB:08
+ WiLocate      Version 0.1
^C
! Received keyboard interrupt, quitting threads.

andrea@andrea-desktop:~/wilocate$ ./wilocate.py 00-22-75-22-CB-08
+ WiLocate      Version 0.1
^C
! Received keyboard interrupt, quitting threads.

andrea@andrea-desktop:~/wilocate$ ./wilocate.py 00227522CB08
+ WiLocate      Version 0.1

Ma il software non da cenni di vita...

Grazie
Andrea Draghetti
Personal Blog

Emilio

Sorry, mi sono dedicato più alla geolocazione 'on the fly' che non ho continuato l'implementazione della ricerca di un singolo mac address. Ho fixato e committato, ora dovrebbe funzionare.

E' in heavy developement, la console non mostrerà più i dati quindi ora viene stampato solo il json per il debug, per geolocalizzare l'IP collegati a http://localhost:8000 e vedrai il marker su google maps (se tutto va bene) : D Comunque in questi giorni è molto instabile, è possibilissimo non funzioni o non faccia al meglio il suo lavoro.

Incollo comunque l'output.


$ ./wilocate.py 00:22:75:22:CB:08
+ WiLocate              Version 0.1
Serving HTTP on 0.0.0.0 port 8000 ...
+

00:22:75:22:CB:08 (accuracy: 73.0) Slovakia (SK) Bratislavský kraj 85105 Petržalka Bratislava - Petržalka Strečnianska 10
1294507147 position: http://maps.google.it/maps?q=48.1049838,17.1039989
{1294507147: {'APs': {'00:22:75:22:CB:08': {u'latitude': 48.104983799999999, u'address': {u'city': u'Petr\u017ealka', u'street_number': u'10', u'country': u'Slovakia', u'region': u'Bratislavsk\xfd kraj', u'county': u'Bratislava - Petr\u017ealka', u'street': u'Stre\u010dnianska', u'postal_code': u'85105', u'country_code': u'SK'}, u'accuracy': 73.0, u'longitude': 17.103998900000001, 'mac_address': '00:22:75:22:CB:08'}}, 'position': [48.104983799999999, 17.103998900000001]}}


drego85

Ottimo! Se ti ricordi nel --help scrivi il formato del MAC specificando il carattere di seperazione.

Andrea
Andrea Draghetti
Personal Blog