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 WLAN – Nokia 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.
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 😉 )
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.
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.
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.
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
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 15 lat ago
Odpalasz je z terminala komendami zalaczonymi w artykule znajdujac sie w katalogu ze skryptami i plikami do konwersji.
vlcr 15 lat ago
Jakiego terminala? O co chodzi? 🙁
exciter606 15 lat ago
Linux, Mac OS … inne systemy UNIX’o podobne.
Konrad Kowalski 15 lat ago
A co z Windowsem?…
exciter606 15 lat ago
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 15 lat ago
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 15 lat ago
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:
lub
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 15 lat ago
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
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
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 15 lat ago
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
mi kisgearth.pl poprawnie przerabia natomiast kismet2kml.py wywala „ssid = ssid.replace(’&’,’ ’)
AttributeError: 'NoneType’ object has no attribute 'replace'”
mufta 14 lat ago
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
Dodaj komentarz