Wardriving z Nokia 5800, Barbelo i GPSd

Avatar photo
  • Konrad Kowalski
  • 20/12/2009
  • Mobile
  • 14 komentarzy
WarDriving

W ostatnim czasie podczas przygotowywania projektu dotyczącego bezpieczeństwa sieci bezprzewodowych stanąłem przed nie lada wyzwaniem. Miałem zebrać dane na temat sieci bezprzewodowy w okolicy mojego zamieszkania (Nowy Dwór Maz.).

Na początku problem wydawał się nie do rozwiązania 😉

Laptop + Kismet + GPSd + GPS ?

Pierwszym pomysłem było wyjście na spacer z laptopem pod ręką i odpalonym kismetem logującym wszystko dokoła.

Jako, że kismet potrafi zbierać również dane z zewnętrznego modułu GPS – rozwiązanie wydawało się wręcz idealne. Po przechadzce po mieście miałbym sporo danych o samych sieciach jak o ich przybliżonej lokalizacji – co pozwoliło by na utworzenie ładnej mapki Wi-Fi – w sam raz do prezentacji.

Niestety pomysł poległ już na starcie. Nie posiadałem zewnętrznego GPSu jak i nie zamierzałem takiego kupować.

Nokia 5800 + Barbelo + GPSd !!!

Po dłuższej chwili namysłu przypomniałem sobie, że posiadam przecież telefon z GPS i WLANNokia 5800. Szkoda tylko, że nie znalazłem żadnego programu do komunikacji PC->Nokia 5800, Nokia->PC, które przekazywałoby dane o lokalizacji z wbudowanego odbiornika GPS.

Jednakże tym razem postanowiłem tak szybko nie odpuszczać i poświęcić dłuższa chwilę na googlowanie i … przyniosło to rezultaty.

Znalazłem 2 aplikacje przeznaczone na Symbiana, które umożliwiły mi realizacje wcześniej wspomnianych założeń.

Barbelo i GPSd

Pierwszą z nich jest Barbelo – monitor sieci bezprzewodowych wykorzystujący wbudowany w telefon moduł WiFi. Jego możliwości są spore oprócz samego dostarczania informacji o dostępnych sieciach bezprzewodowych potrafi zapisywać również pozycje GPS dostarczane przez zewnętrzny program. A tym zewnętrznym programem okazał się GPSd w wersji na telefony komórkowe.

Praktyka czyli … zbieranie danych

Zaraz po instalacji softu na telefonie przyszedł czas na zbieranie danych w terenie. Aby to zrobić uruchamiamy najpierw GPSd i odpowiadamy „tak” na wyświetlone przez program pytania, zezwalając w tym momencie na korzystanie z danych odebranych przez moduł GPS oraz korzystanie z sieci.

GPSd

GPSd

Teraz czekamy aż telefon złapie fixa. Rozpoznamy to po zmianie wartości Latitude i Longitude (nie powinny być zerami chyba że, jesteś w takim położeniu geograficznym 😉 )

GPSd po złapaniu fixa

GPSd po złapaniu fixa

Po złapaniu fixa klikamy na przycisk Hide ukrywający GPSd w tle. Program musi cały czas działać bo inaczej Barbelo nie będzie mógł zapisywać naszej pozycji.

Następnym krokiem jest uruchomienie Barbelo. Po jego odpaleniu widzimy dostępne sieci bezprzewodowe (o ile takowe są dostępne w naszej okolicy). Aby zaczął zapisywać dane należy wybrać Opcje > Start log i … wybrać się na mały spacer.

Barbelo

Barbelo

Teraz mała uwaga praktyczna aby sprawdzić czy program działa poprawnie przełączamy się miedzy aplikacjami (W Nokii 5800 należy dłużej przycisnąć środkowy przycisk) i wybrać GPSd (niebieska czaszka).

Na ekranie powinniśmy zobaczyć małą zmianę -> liczba klientów (Client) powinna wynosić 1 a nie jak wcześniej 0. Informuje nas to że GPSd wykrył, że działa Barbelo i korzysta z jego danych.

GPSd wykrył Barbelo

GPSd wykrył Barbelo

Po udanym spacerze należy wyłączyć logowanie danych w Barbelo (Opcje > Stop Log) i zamknąć program, następnie możemy wyłączyć również GPSd.

Dane zebrane w przez program są w katalogu E:/barbelo/logs (na karcie pamięci).

Wizualizacja danych

Tak zebrane dane warto z wizualizować na jakiejś mapce (np Mapy Google). Aby to zrobić należy uruchomić jeden z dostępnych konwerterów logów z formatu Kismeta (Barbelo w takim samym formacie zapisuje dane) na kml (rozszerzenie Google Maps).

Możemy np. uźyć do tego skryptu napisanego w perlu kisgearth (ma bardzo dużo ciekawych opcji, zmienne kolory na mapie – w zależności od zabezpieczeń i wiele wiele innych).

Konwersja:

./kisgearth.pl -oN mapa.kml -n 1 -- Barbelo-Gru-17-2009-1.xml

Pełną listę opcji otrzymamy uruchamiając skrypt kisgearth.pl bez parametrów.

Ja osobiście preferuje o wiele prostrzy napisany w pythonie kismet2kml

./kismet2kml.py Barbelo-Gru-17-2009-1.xml > mapa.kml

Rozwiązanie błędów konwersji

Czasami podczas konwersji logów Barbelo do pliku mapy mogą wystąpić błędy. Najczęstszym jest „źle sformatowany XML” (not well-formed).

./kisgearth.pl -oN mapa.kml -n 1 -- Barbelo-Gru-17-2009-1.xml 

not well-formed (invalid token) at line 2844, column 6, byte 73647
at /usr/lib/perl5/XML/Parser.pm line 187

Spowodowane jest to pojawianiem sie pewnych niedopuszczalnych znaków gdy zostanie zarejestrowana sieć z ukrytym SSID, która wygląda ona mniej więcej tak: ^@^@^@^@

Wszystko było by OK gdyby to były „normalne znaki @ ^” niestety są to znaki specjalne, które pełnią inne funkcje niż zwykły tekst.

Aby skrypty mogły przetworzyć taki plik musimy go przefiltrować, czyli albo ręcznie usunąć z pliku ^@^@^@ albo użyć napisanego przeze mnie skryptu Pythona – FiltrBarbelo.py

./FiltrBarbelo.py  plikdofiltracji.xml

Zostanie następnie utworzony plik plikdofiltracji.xml-ok, który można już bez problemu użyć w kisgearth i kismet2kml.py

Aktualizaja: Problemy może stwarzać jeszcze znak & (skrypt filtrujący go nie usuwa, w późniejszym terminie go zaktualizuje aby wyrzucał ten znak)

Analiza danych

Na podstawie logów barbelo możemy dokonać krótkiej analizy statystycznej. Możemy tego dokonać za pomocą małego skryptu bash’a analiza.sh:

Aby go uruchomoć:

./analiza.sh Barbelo-Gru-17-2009-1.xml

Wynik:

*********************************
	   Statystyka
*********************************
Wykryto sieci:		 138
Niezabezpieczone:	 19
WPA:			 1
PSK (i nowsze(WPA2..)):	 63
WEP:			 55
---------------------------------
Jeśli poniższe wartości są równe to znaczy ze statystyka jest
obliczona bezbłędnie
Sprawdzenie:		 138
Wykryto sieci:		 138

Mapa Wifi

Poniżej znajduje się mapka po 30min spacerze.

Mapa WiFi

Mapa WiFi

Legenda:
Czerwone – Niezabezpieczone
Zielone – WEP
Reszta – WPA i lepsze

Do pobrania:
Skrypty – wszystkie skrypty o których była mowa w artykule.
Programy – paczka zawierająca Barbelo i GPSd

Warto przeczytać

14 komentarzy

Możesz dodawać komentarze do tego artykułu.


  • Ale jak uzyć tych skryptów nie mam pojęcia. Może jakaś pomoc?

    Łukasz 14 lat ago Reply


    • Odpalasz je z terminala komendami zalaczonymi w artykule znajdujac sie w katalogu ze skryptami i plikami do konwersji.

      vlcr 14 lat ago Reply


  • Jakiego terminala? O co chodzi? 🙁

    exciter606 14 lat ago Reply


  • A co z Windowsem?…

    exciter606 14 lat ago Reply


    • Avatar photo

      Na Windowsie też można to odpalić, ale nie wiem czy jest sens instalacji Pythona czy Perla dla Windowsa po to aby skorzystać z kilku skryptów.

      Konrad Kowalski 14 lat ago Reply


  • Zainstalowałem Pythona i Perla, naczytałem się i próbowałem to odpalić, w końcu udało się, przefiltrowałem logi. Ale wyszło mi do kitu, choć powinno teoretycznie być OK.
    Panie Konradzie, byłbym wdzięczny jeśli znajdzie pan chwilę i zajrzy na te pliki.
    Pozdrawiam serdecznie.
    http://www.sendspace.com/file/sj8efr

    exciter606 14 lat ago Reply


    • Avatar photo

      Ciężko powiedzieć jaka jest przyczyna. Nie leży ona na pewno w konwersji logów barbelo na mapy.

      Zwróć uwagę na to, że w większości przypadków w logach (XML) masz te same współrzędne:

      52,216667
      19,350000
      

      lub

      52,233333
      19,350000
      

      Co może oznaczać, że GPS mógł stracić kontakt z satelitą lub wystąpił problem z GPSd.

      Przy poprawnym działaniu GPSd nawet kilka kroków, niewielki ruch powinien skutkować zmianami Latitude i Longitude co powinno być widoczne w tymże programie.

      Konrad Kowalski 14 lat ago Reply


      • Panie Konradzie, Problem leży w Barbelo. Otóż z jakiegoś powodu nieprawidłowo wczytuje koordynaty z GPSd. W GPSd współrzędne są z kropką a tu a Barbelo pokazuje z przecinkiem.

        maciek 13 lat ago Reply


      • Panie Konradzie, doszedłem do rozwiązania błędu. Otóż należy przestawić telefon na język angielski. W krajach anglosaskich separatorem dziesiętnym jest kropka, u nas przecinek (przynajmniej według oprogramowania telefonu), stąd błędy.
        Pozycja GPS zapisze się z kropką.
        Jak podał autor Barbolo, program ma mnóstwo błędów i już nie chciało mu się go poprawiać.

        maciek 13 lat ago Reply


  • W takim razie przeinstaluję GPSd i Barbelo, może wezmę je do pamięci telefonu i w najbliższym czasie zrobię ponowne próby.
    Dziękuję pięknie za zainteresowanie! Podzielę się tutaj wynikami, na pewno jeszcze w tym tygodniu. 🙂

    exciter606 14 lat ago Reply


  • Witam !
    U mnie też lipa z dokładnością.
    Można powiedzieć, że nie ma szans na uzyskanie dokładności pokazanej na mapie wyżej. Zna ktoś może przyczynę?
    W gpsd ładnie pokazuje wspolrzedne, a w logach,.,., grrr no lipa no!

    Vincencique 14 lat ago Reply


  • mi kisgearth.pl poprawnie przerabia natomiast kismet2kml.py wywala „ssid = ssid.replace(’&’,’ ’)
    AttributeError: 'NoneType’ object has no attribute 'replace'”

    mufta 13 lat ago Reply


    • Musisz wyrzucić np notatnikiem. z xml wszystkie znaki specjalne @, &. Pojawiają się one w nazwach sieci (lub jako sieci ukryte) ale dla języków programistycznych to zastrzeżone komendy i jest błąd.

      maciek 13 lat ago Reply


Dodaj komentarz