Temat: WiFi taxonomy
Temat obecny w OpenWrt od paru lat ale całkowicie o nim zapomniałem. Dziś został przypomniany na forum OpenWrt, więc czemu by o nim nie wspomnieć i tutaj.
Każde urządzenie podłączając się pod punkt dostępowy wysyła odpowiednie ramki zawierające pewien zestaw danych informujących m.in. co urządzenie potrafi. Zestaw ten oczywiście różni się w zależności o urządzenia, sieci do której się podłącza, wersji systemu operacyjnego i paru innych czynników łącznie z widzimisie producenta. Jest ich na tyle dużo, że badając ich występowanie można stworzyć swoisty fingerprint urządzenia, czyli mieć możliwość ustalenia z jakim modelem mamy do czynienia. Zostały wykonane odpowiednie badania takiego zagadnienia (polecam zapoznać się z https://research.google/pubs/pub45429/ ) których wynik można znaleźć na githubie: https://github.com/NetworkDeviceTaxonomy
Zgadnijcie gdzie to zostało zaimplementowane? Tak, w pakiecie hostapd. Co więcej - instalując odpowiednią wersję można praktycznie od ręki uruchomić to w OpenWrt.
Instalacja
Należy odinstalować pakiety wpad-mini czy wpad-basic i zainstalować pełną wersję hostpad - pakiet wpad-openssl
# opkg update
# opkg remove wpad-basic wpad-mini
# opkg install wpad-openssl
# reboot
Podłączamy się dowolnym klientem pod nasz router, a następnie wykonujemy polecenie
# ubus call hostapd.wlan0 get_clients
jeżeli mamy dwa radia to można także odpytać drugi interfejs radiowy
# ubus call hostapd.wlan1 get_clients
Powinniśmy otrzymać coś takiego:
# ubus call hostapd.wlan0 get_clients
{
"freq": 2462,
"clients": {
"78:c3:e9:xx:xx:xx": {
"auth": true,
"assoc": true,
"authorized": true,
"preauth": false,
"wds": false,
"wmm": true,
"ht": true,
"vht": false,
"wps": false,
"mfp": false,
"rrm": [
0,
0,
0,
0,
0
],
"aid": 2,
"signature": "wifi4|probe:0,1,50,3,45,221(0050f2,8),127,107,221(506f9a,16),htcap:012c,htagg:03,htmcs:000000ff,extcap:00000a820040|assoc:0,1,50,48,45,221(0050f2,2),127,htcap:012c,htagg:03,htmcs:000000ff,extcap:00000a8201400000"
},
...
Uwaga: nie każdy klient podaje dostateczną ilość danych żeby powstała sygnatura.
Interesuje nas zawartość "signature". Co teraz można z tym zrobić? Udajemy się pod wspomniany adres na githubie: https://github.com/NetworkDeviceTaxonom … my/wifi.py i szukamy tej sygnatury. Szybkie wyszukiwanie ujawni że był to Samsung Galaxy Tab A. Nie jest to metoda doskonała i pewnie zdarzą się pomyłki, sama baza też nie została dawno aktualizowana i należało by samodzielnie dodać sygnatury nowych urządzeń.
Do czego to może się przydać? Np. do wyszukiwania typu podłączonego urządzenia (smartfon, tablet, desktop). Należy pamiętać że są też inne metody weryfikacji: pierwsze trzy oktety adresu MAC dają informacje o producencie, co pośrednio wyznacza też typ urządzenia, można sprawdzić nazwę urządzenia którą przedstawiło się po pobraniu adresu z dhcp, jeżeli zaś urządzenie podłączone jest do naszego serwera www - można sprawdzić user-agenta przeglądarki, gdzie często też odnajdziemy model urządzenia.