Potaknula me ideja da napravim džepni alat za analizu WiFi mreža
Hvala im na ideji. Jednostavno nisam imao šta da radim.
Sav posao je odrađen iz hobija u cilju zabave i proširenja znanja iz oblasti mrežnih tehnologija. Polako, 1..4 sata sedmično, od početka ove godine.
Upotreba aplikacije nije bila planirana. One. to NIJE alat hakera.
U ovom trenutku sve predviđene funkcionalnosti rade. Svi izvori, potpuno spremni za montažu,
Moje mišljenje o "univerzalnom alatu" i razlogu odabira ESP32
Ne tvrdim istinu. Svako ima svoje. Pokušaću da opravdam svoj izbor "pegle".
Možda sam u krivu, au budućnosti će autori izvorni kod softvera izložiti u javno vlasništvo. Ali ako ne, onda ne bih kupio takav komad željeza bez izvornih kodova.
Moji zahtjevi za alatom
Kutija treba da bude mala (što manja to bolje).
Zbog toga:
- Ugrađena baterija nije potrebna. Sa strujom > 100 mA kada radite sa Wifi, ugrađena baterija će biti velika ili neće dugo trajati. Stoga, neka se "kutija" napaja standardnim power bankom. Ipak, uvijek imam power bank u džepu / autu.
- Držite unutar "kutije" Linux sa alatima, pisana dugi niz godina na svim jezicima u prisustvu malog ekrana i oskudnog skupa kontrolnih dugmadi, nema smisla. Rezultati se mogu pogledati/obraditi na normalnom laptopu sa potpunom tastaturom i ekranom.
- Komponente bi trebale biti lako dostupne i široko poznate (dostupan SDK, puno primjera i dokumentacije).
Kao rezultat toga, za mene je izbor bio očigledan - ESP32.
Za sve zadatke navedene u članku, koji su me naveli na akciju, dovoljne su mogućnosti ESP32. Iako najviše želim da uradim ovo:
- Poigrajte se s Bluetooth-om.
- Poigrajte se opsegom od 433 mHz sa najjednostavnijim hardverom (samo amplitudska modulacija, što je dovoljno za praktične potrebe).
Nanesite mast u ESP32
- SDK (IDF) ESP32 je pomalo nespretan.
- Dio funkcionalnosti (WiFi stack, na primjer) dolazi bez izvornih kodova u obliku sklopljenih statičkih biblioteka.
- Opseg od 5 GHz nije podržan i postoje neka ograničenja i nespretnosti u radu sa WiFi mrežom.
Ali cijena / veličina u potpunosti nadoknađuje ove nedostatke.
Glavna funkcionalnost softvera
Ukratko ću opisati funkcionalnost i svoje mišljenje o...
Upravljajte postavkama i otpremajte fajlove sa SD-a
Sva vanjska kontrola se vrši putem jednostavne web stranice koja se pokreće u posebnoj stavci menija. ESP32 se pokreće u WiFi AP modu i prikazuje stranicu na fiksnoj IP adresi.
Iako su jezgre ESP32 prilično brze, ali, kako su eksperimenti pokazali, istovremeni rad ugrađene web usluge i, na primjer, način rada rutera se ne miješaju dobro. Stoga nema dinamičke kontrole i u svim ostalim načinima stranica nije dostupna.
Štaviše, dinamička kontrola nije potrebna u svrhe istraživanja.
Rad sa Beacon paketima
Režimi su banalni i nisu baš zanimljivi. Napravljeno "jer možeš". Za provjeru.
Postoje primjeri u službenim primjerima Espressifa.
Način skeniranja AP liste.
Zapravo, svaki pametni telefon to može.
Pa, u ovom režimu, lista AP će biti sačuvana.
Beacon spamer.
ESP32 počinje kao AP sa skrivenim SSID-om i nasumičnim MAC-om i počinje slati [beacon frame] na unaprijed kreiranu SSID listu (kreiranu ručno ili dobijenu ranije skeniranjem AP liste)
Način rada WiFi njuškanja
Espressif programeri su dodali mogućnost da aplikativni softver prima sve WiFi pakete koji "lete u zraku" putem funkcije povratnog poziva. Zapravo, ne sve, jer možete podesiti način rada samo za jedan fiksni kanal.
Za obradu poziva funkcije povratnog poziva nameću se vrlo stroga vremenska ograničenja. Ako za način jednostavnog prikupljanja statistike to ne stvara probleme, onda sam za način pisanja PCAP datoteke na SD karticu morao petljati, organizirajući snimanje kroz red u memoriji i semaforima. Uzimajući u obzir posebnost da se proces koji poziva povratni poziv vrti na jednom jezgru, a proces koji upisuje u SD na drugom.
Sa "bučnim zrakom" neki paketi se gube (nema mjesta u redu i odbacuju se), ali sa tipičnim "zrakom" stana uveče (5..7 AP na vidiku), pisanje PCAP-u ima vremena da se završi bez gubitka paketa.
Dodatno, za PCAP praćenje i snimanje, postoji režim filtriranja zasnovan na MAC listi u zaglavljima paketa.
Na primjer, možete pratiti izgled osobe u klubu / kafiću, prije nego što je uopće ušao ili se pojavio u vidnom polju. Malo ljudi isključuje WiFi i automatske veze s poznatim AP-ovima. (Sada ga isključujem..)
Gledanje snimljenog saobraćaja u Wiresharku je informativno i zanimljivo za razumijevanje mapa, sve funkcionira.
Način rada sa deauth paketima
Podrazumevano, slanje ovih paketa je zabranjeno u biblioteci libnet80211.a, koja dolazi bez izvora. Ali ovo je lako zaustaviti ispravljanjem nekoliko mamaca. U početku sam sumnjao da li je vredno postavljanja zakrpe. Ali nakon što sam hodao po različitim mjestima s uključenim režimom skeniranja [okvir za poništavanje autentifikacije, pomislio sam: "šta dovraga." Štaviše, u esp8266 slanje ovih paketa nije zatvoreno i postoje sklopovi na githubu pod esp8266.
Na mnogim mjestima (neću reći gdje) se ovim metodom koristi neželjena AP supresija. I nisu "huligani"...
I dalje sam se iznenadio da je moja distribucija interneta sa mog telefona na mjestima ne radila...
Način praćenja broja i RSSI takvih paketa je vrlo koristan za razumijevanje "gdje lijevo AP ne voli."
način rutera
Ova karakteristika je vjerovatno najzanimljivija od svih za istraživanje.
ESP32 podržava istovremeni rad u STA + SoftAP modu. Stoga je na njemu moguće implementirati klasični NAT ruter.
Kako bi podržao mrežni stog, Espressif koristi (praktički nepromijenjenu) viljušku lwip biblioteke.
Ali, podrazumevano, u standardnom sklopu, u biblioteci esp-lwip, nema prosleđivanja između netif interfejsa 'ap' (SoftAP) i 'st' (STA).
Naravno, možete to učiniti i bez NAT-a, ali postoji problem sa istovremenim povezivanjem dva ili više STA na 'ap' interfejs i sinhronizacijom IP adresa sa mrežnog interfejsa 'st' na 'ap'. Dakle, složenost nije vrijedna toga i lakše je kroz NAT.
Štaviše, postoji fork esp-lwip od marting-ger koji dodaje jednostavnu implementaciju NAT-a za IP4.
Iako su me ruke svrbele da to ponovim čisto kozmetički (po mom mišljenju, bilo je lakše bez projekta viljuške, ali preko LWIP-aHOOK build-defined functions), ali lijenost je pobijedila i marting-ger verzija se koristi kakva jest.
U režimu rutera, gleda se dolazni i odlazni IP4 saobraćaj.
Konkretno, iz njega se izdvaja za prikaz na ekranu i prikupljanje statistike u datoteci:
- Naziv uređaja koji se povezao na SoftAP ESP32 (DHCP paketi)
- URL iz DNS upita (UDP port 53) sa uređaja povezanog na SoftAP ESP32.
Dodatno, možete omogućiti snimanje prometa u PCAP datoteci.
Ovaj način rada je vrlo koristan, na primjer, da biste razumjeli, na primjer, šta vaš telefon šalje mreži i kuda ide.
Možete smisliti i druge načine korištenja ovog načina, uzimajući u obzir mogućnost potpune programske kontrole SoftAP ESP32 dolaznog i odlaznog saobraćaja na nivou mrežnog interfejsa: Ehernet zaglavlje (destMAC[6]+srcMAC[6]+type[2]) + nosivost (IP4, IP6, DCHP, itd. tip).
U principu, ESP32 se prilično dobro nosi sa funkcijom WiFi->WiFi rutera, propuštajući redovan saobraćaj kroz sebe bez mnogo kašnjenja. Subjektivno, kašnjenja u telefonu spojenom preko rutera na ESP32 nisu primjetna.
Nažalost, u Espressif API-ju ne postoji način da se postavi filter po MAC-u koji je povezan sa SoftAP EPS32. Umjesto toga, predlaže se da se kaže "zbogom" (esp_wifi_deauth_sta) već povezanim STA-ovima koji se "ne žele".
Filtriranje po MAC-u za povezane STA-ove moralo se obaviti putem poziva esp_wifi_deauth_sta()
U zaključku
Iako nisam smislio ništa novo u okviru rada sa ESP32, možda će nekoga zanimati rezultat (izvori).
Želim napomenuti da je kod napisan isključivo u obrazovne svrhe. Za "hakovanje" itd., to je posebno napravljeno ne baš zgodno.
Nisam napravio štampanu ploču, jer je trebalo 1.5-2 sata da se gotovi šalovi zalemi žicom.
A ako to učinite, onda ga morate sastaviti ne od gotovih ploča, već od pojedinačnih komponenti. Tada će dimenzije biti još manje.
izvor: www.habr.com