Igre sa Wifi na ESP32

Igre sa Wifi na ESP32

Potaknula me ideja da napravim džepni alat za analizu WiFi mreža Ovaj članak.

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, objavljeno ovdje. Tu su i upute za sastavljanje itd. U ovoj napomeni neću duplirati informacije objavljene na githubu. Reći ću vam samo ono što smatram potrebnim da opišem posebno.

Moje mišljenje o "univerzalnom alatu" i razlogu odabira ESP32

Ne tvrdim istinu. Svako ima svoje. Pokušaću da opravdam svoj izbor "pegle".

Predloženo u članku mogućnost korištenja kombinacije Linuxa (prvobitno Raspberry Pi) + "periferije" u vidu kontrolera (STM32) + CC1110 (8051 jezgro) i plan da se nagura sve što je moguće (125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?) nije mi se činilo prikladnim. Kako god, ovaj projekat izgleda da će ostati privatan i zatvoren (flipper-zero github "Ova organizacija nema javna spremišta.") i krenuo je prema ne previše uobičajenom hardveru.

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

Dodajte komentar