Igranje z Wifi na ESP32

Igranje z Wifi na ESP32

Zamisel o izdelavi žepnega orodja za analizo omrežij WiFi mi je dalo ta članek.

Hvala jim za idejo. Enostavno nisem imel kaj početi.

Vse delo je potekalo kot hobi z namenom zabave in širjenja znanja na področju omrežnih tehnologij. Počasi, 1..4 ure na teden, od začetka tega leta.
Nisem načrtoval nobene praktične uporabe. Tisti. To NI hekersko orodje.

Trenutno delujejo vse predvidene funkcionalnosti. Vsi viri, popolnoma pripravljeni za montažo, objavljeno tukaj. Obstajajo tudi navodila za sestavljanje itd. V tej opombi ne bom podvajal informacij, objavljenih na githubu. Povedal vam bom samo tisto, kar se mi zdi potrebno posebej opisati.

Moje mnenje o "univerzalnem orodju" in razlog za izbiro ESP32

Ne trdim, da je resnica. Vsak ima svojega. Poskušal bom utemeljiti svojo izbiro strojne opreme.

Predlagano v članku primer uporabe kombinacije Linux (sprva Raspberry Pi) + "periferija" v obliki krmilnika (STM32) + CC1110 (8051 jedro) in načrt, da bi tja stlačili vse mogoče (125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?) se mi niso zdeli primerni. vendar ta projekt Videti je, da bo ostal zaseben in zaprt (flipper-zero github »Ta organizacija nima javnih repozitorijev.«) in se usmeril k ne zelo običajni strojni opremi.

Morda se motim in v prihodnosti bodo avtorji dali vire programske opreme javno dostopne. Če pa ne, potem takega kosa strojne opreme brez izvorne kode ne bi kupil.

Moje zahteve za "orodje"

Škatla naj bo majhna (manjša kot je, bolje je).

Zato:

  • Vgrajena baterija ni potrebna. S tokom > 100 mA pri delu z Wifi bo vgrajena baterija velika ali pa ne bo zdržala dolgo. Zato naj “škatlo” napaja standardni power bank. Sicer pa imam power bank vedno v žepu/avtu.
  • Notri imejte »škatlo« Linuxa z orodji, pisana več let v vseh jezikih Z majhnim zaslonom in skromnim naborom gumbov za upravljanje nima smisla. Rezultate si je mogoče ogledati/obdelati na običajnem prenosniku s polno tipkovnico in zaslonom.
  • Komponente morajo biti lahko dostopne in splošno poznane (na voljo SDK, številni primeri in dokumentacija).

Kot rezultat, zame je bila izbira očitna - ESP32.

Za vse naloge, navedene v članku, ki so me spodbudile k ukrepanju, zmogljivosti ESP32 povsem zadostujejo. Čeprav največ, kar si še vedno želim storiti, je:

  • Igrajte se z Bluetoothom.
  • Poigrajte se z razponom 433 mHz z najpreprostejšo strojno opremo (samo amplitudna modulacija, ki je dovolj za praktične potrebe).

Prepričanje v ESP32

  • ESP32 SDK (IDF) je nekoliko neroden.
  • Nekatere funkcionalnosti (na primer sklad WiFi) prihajajo brez izvorne kode v obliki sestavljenih statičnih knjižnic.
  • 5gHz pas ni podprt in obstajajo nekatere omejitve in nerodnosti pri delu z WiFi.

Toda cena/velikost popolnoma kompenzira te pomanjkljivosti.

Glavna funkcionalnost programske opreme

Na kratko bom opisal funkcionalnost in svoje mnenje o...

Upravljanje nastavitev in nalaganje datotek iz SD

Ves zunanji nadzor poteka prek preproste spletne strani, ki se odpre v ločenem meniju. ESP32 se zažene v načinu WiFi AP in prikaže stran na fiksnem naslovu IP.

Čeprav so jedra ESP32 precej hitra, kot so pokazali poskusi, hkratno delovanje vgrajene spletne storitve in na primer način usmerjevalnika nista zelo združljiva. Zato ni dinamičnega nadzora in stran ni na voljo v vseh drugih načinih.
Poleg tega dinamični nadzor ni potreben za raziskovalne namene.

Način dela s paketi Beacon

Načini so banalni in premalo zanimivi. Narejeno, "ker je to mogoče." Za preverjanje.
Obstajajo primeri v uradnih primerih Espressif.

Način skeniranja seznama AP.
Pravzaprav to zmore vsak pametni telefon.
No, v tem načinu bo seznam AP shranjen.
Beacon spammer.
ESP32 se začne kot AP s skritim SSID-jem in naključnim MAC-jem ter začne pošiljati [okvir svetilnika] glede na vnaprej ustvarjen seznam SSID-jev (ustvarjen ročno ali prej pridobljen s skeniranjem seznama AP)

Način vohanja paketov WiFi

Razvijalci Espressifa so dodali možnost, da aplikacijska programska oprema sprejme vse WiFi pakete, ki "letijo po zraku", prek funkcije povratnega klica. Pravzaprav ne vsi, saj lahko nastavite način samo za en fiksni kanal.

Za obdelavo funkcije povratnega klica veljajo zelo stroge časovne omejitve. Če to ne povzroča težav pri preprostem načinu zbiranja statističnih podatkov, potem sem se moral za način snemanja datoteke PCAP na kartici SD poigrati in organizirati snemanje prek čakalne vrste v pomnilniku in semaforjih. Ob upoštevanju posebnosti, da proces, ki kliče povratni klic, teče v enem jedru, proces, ki piše v SD, pa v drugem.

Med "hrupnim zrakom" se nekaj paketov izgubi (ni prostora v čakalni vrsti in se zavržejo), vendar s tipičnim "zrakom" stanovanja zvečer (5..7 AP v vidljivosti), snemanje v PCAP se zaključi brez izgube paketov.

Poleg tega je za nadzor in snemanje PCAP na voljo način filtriranja, ki temelji na seznamu MAC v glavah paketov.

Na primer, lahko sledite pojavu osebe v klubu/kavarni, preden sploh vstopi ali se pojavi na vidiku. Malokdo onemogoči WiFi in samodejne povezave z znanimi dostopnimi točkami. (Zdaj ga izklopim..)

Ogled posnetega prometa v Wiresharku je poučen in zanimiv za razumevanje zemljevidov – vse deluje.

Način za delo s paketi deauth

Privzeto je pošiljanje teh paketov prepovedano v knjižnici libnet80211.a, ki prihaja brez virov. Toda to je enostavno popraviti z nekaj prilagoditvami. Sprva sem dvomil, ali je vredno objaviti popravek. Ko pa sem hodil po različnih mestih z vklopljenim načinom skeniranja okvirja za deavtentikacijo, sem pomislil: "kaj za vraga." Poleg tega v esp8266 dostava teh paketov ni zaprta in na githubu obstajajo sklopi za esp8266.

Marsikje (ne bom rekel kje) se uporablja zatiranje neželenih AP s to metodo. In to niso "nasilneži" ...

Pa tudi mene je presenetilo, da mi internetna distribucija iz telefona ponekod ni delovala...

Način za sledenje številu in RSSI takšnih paketov je zelo koristen za razumevanje, "kje levim AP-jem ni všeč."

način usmerjevalnika

Ta funkcija je verjetno najbolj zanimiva za raziskovanje.

ESP32 podpira hkratno delovanje v načinu STA + SoftAP. Zato lahko na njem implementirate klasični usmerjevalnik NAT.

Za podporo omrežnega sklada Espressif uporablja razcep (skoraj nespremenjen) knjižnice lwip.

Toda knjižnica esp-lwip privzeto v standardni zgradbi ne zagotavlja posredovanja med vmesnikoma netif 'ap' (SoftAP) in 'st' (STA).

Seveda lahko to storite brez NAT, vendar obstaja težava pri hkratnem povezovanju dveh ali več STA na 'ap' vmesnik in sinhronizaciji IP naslovov iz 'st' omrežnega vmesnika v 'ap'. Torej težave niso vredne in je lažje prek NAT.

Poleg tega obstaja fork esp-lwip iz martin-gerja, ki doda preprosto implementacijo NAT za IP4.

Čeprav so me srbele roke, da bi ga predelal čisto kozmetično (po mojem mnenju je bilo lažje brez forka projekta, ampak preko LWIPHOOK funkcije, določene med sestavljanjem), vendar je prevladala lenoba in možnost iz martin-gerja je uporabljena, kot je.

V načinu usmerjevalnika je prikazan dohodni in odhodni promet IP4.

Iz nje je posebej ekstrahirano naslednje za prikaz na zaslonu in zbiranje statističnih podatkov v datoteko:

  • Ime naprave, ki se je povezala s SoftAP ESP32 (paketi DHCP)
  • URL iz zahtev DNS (vrata UDP 53) iz naprave, povezane s SoftAP ESP32.

Poleg tega lahko omogočite snemanje prometa v datoteko PCAP.

Ta način je zelo uporaben, da na primer razumete, kaj vaš telefon pošilja v omrežje in kam gre.

Lahko si omislite druge načine uporabe tega načina, ob upoštevanju zmožnosti popolnega nadzora dohodnega in odhodnega prometa softAP ESP32 na ravni omrežnega vmesnika: glava Ehernet (destMAC[6]+srcMAC[6]+type[2]) + nosilnost (tip IP4, IP6, DCHP itd.).

Načeloma se ESP32 precej dobro spopade s funkcijo WiFi->WiFi usmerjevalnika, ki prehaja skozi običajen promet brez posebnih zastojev. Subjektivno zamude pri telefonu, povezanem prek usmerjevalnika na ESP32, niso opazne.

Na žalost Espressif API ne more nastaviti filtra za MAC, povezan s SoftAP EPS32. Namesto tega je predlagano, da se reče "nasvidenje" (esp_wifi_deauth_sta) že povezanim STA, ki niso "zaželene".

Filtriranje po MAC za povezane STA je bilo treba izvesti s klicem esp_wifi_deauth_sta().

Na koncu

Čeprav nisem prišel do nič novega v okviru dela z ESP32, bo morda rezultat (izvorna koda) komu zanimiv.

Rad bi opozoril, da je bila koda napisana izključno v izobraževalne namene. Za »hekanje« itd. je bilo namerno narejeno, da ni zelo priročno.

Nisem naredil tiskanega vezja, ker je trajalo 1.5-2 ure za spajkanje končnih šalov z žico.

In če že, ga morate sestaviti ne iz že pripravljenih plošč, temveč iz posameznih komponent. Potem bodo dimenzije še manjše.

Vir: www.habr.com

Dodaj komentar