Igranje s Wifi na ESP32

Igranje s Wifi na ESP32

Ono što mi je dalo ideju da napravim džepni alat za analizu WiFi mreža je ovaj članak.

Hvala im na ideji. Jednostavno nisam imao što raditi.

Sav rad rađen je iz hobija u svrhu zabave i proširenja znanja iz područja mrežnih tehnologija. Polako, 1..4 sata tjedno, od početka ove godine.
Nisam planirao nikakvu praktičnu upotrebu. Oni. Ovo NIJE hakerski alat.

Trenutno sve planirane funkcionalnosti rade. Svi izvori, potpuno spremni za montažu, objavljeno ovdje. Tu su i upute za sastavljanje itd. U ovoj bilješci neću duplicirati informacije objavljene na githubu. Reći ću vam samo ono što smatram potrebnim posebno opisati.

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

Ne tvrdim da sam istina. Svatko ima svoje. Pokušat ću opravdati svoj odabir hardvera.

Predloženo u članku slučaj upotrebe kombinacije Linuxa (u početku Raspberry Pi) + “periferija” u obliku kontrolera (STM32) + CC1110 (8051 jezgra) i plan da se tu nagura sve što je moguće (125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?) nisu mi se činili prikladnim. Međutim, Ovaj projekt izgleda da će ostati privatan i zatvoren (flipper-zero github "Ova organizacija nema javnih repozitorija.") i krenuo prema ne baš uobičajenom hardveru.

Možda sam u krivu, au budućnosti će autori izvore softvera učiniti javno dostupnima. Ali ako ne, onda ne bih kupio takav komad hardvera bez izvornog koda.

Moji zahtjevi za "alat"

Kutija treba biti mala (što manja to bolje).

Stoga:

  • Nije potrebna ugrađena baterija. Sa strujom > 100 mA pri radu s Wifijem, ugrađena baterija će ili biti velika ili neće dugo trajati. Stoga neka “kutiju” napaja standardni power bank. Svejedno, power bank uvijek imam u džepu/automu.
  • Držite Linux "kutiju" s alatima unutra, pisani godinama na svim jezicima S malim zaslonom i oskudnim skupom kontrolnih gumba, to nema smisla. Rezultati se mogu pregledati/obraditi na normalnom prijenosnom računalu s punom tipkovnicom i zaslonom.
  • Komponente bi trebale biti lako dostupne i široko poznate (dostupan SDK, mnogo primjera i dokumentacije).

Kao rezultat toga, za mene je izbor bio očit - ESP32.

Za sve zadatke navedene u članku koji su me potaknuli na akciju, mogućnosti ESP32 sasvim su dovoljne. Iako je najviše što još želim učiniti:

  • Igrajte se s Bluetoothom.
  • Poigrajte se s rasponom od 433mHz s najjednostavnijim hardverom (samo amplitudna modulacija, što je dovoljno za praktične potrebe).

Uvjerite se u ESP32

  • ESP32 SDK (IDF) je pomalo nespretan.
  • Neke od funkcionalnosti (WiFi stack, na primjer) dolaze bez izvornog koda u obliku sklopljenih statičkih biblioteka.
  • Opseg od 5gHz nije podržan i postoje određena ograničenja i nespretnosti u radu s WiFi-jem.

Ali cijena/veličina u potpunosti kompenzira te nedostatke.

Glavna funkcija softvera

Ukratko ću opisati funkcionalnost i svoje mišljenje o...

Upravljanje postavkama i prijenos datoteka sa SD-a

Sva vanjska kontrola vrši se putem jednostavne web stranice, koja se pokreće u zasebnoj stavci izbornika. ESP32 pokreće se u WiFi AP načinu rada i prikazuje stranicu na fiksnoj IP adresi.

Iako su jezgre ESP32 prilično brze, kao što su eksperimenti pokazali, istovremeni rad ugrađene web usluge i, na primjer, način usmjerivača nisu baš kompatibilni. Stoga nema dinamičke kontrole i stranica nije dostupna u svim drugim načinima.
Štoviše, dinamička kontrola nije potrebna u istraživačke svrhe.

Način rada s Beacon paketima

Modovi su banalni i ne baš zanimljivi. Napravljeno "jer je moguće". Za provjeru.
Postoje primjeri u službenim Espressif primjerima.

Način skeniranja popisa AP.
Zapravo, svaki pametni telefon to može.
Pa, u ovom načinu popis AP će biti spremljen.
Beacon spammer.
ESP32 počinje kao AP sa skrivenim SSID-om i nasumičnim MAC-om i počinje slati [beacon okvir] u skladu s unaprijed izrađenim popisom SSID-ova (stvorenim ručno ili dobivenim ranije skeniranjem popisa AP)

Način njuškanja WiFi paketa

Programeri Espressifa dodali su mogućnost da aplikacijski softver prima sve WiFi pakete koji “lete u zraku” putem funkcije povratnog poziva. Zapravo ne sve, jer možete postaviti način rada samo za jedan fiksni kanal.

Za obradu funkcije povratnog poziva nametnuta su vrlo stroga vremenska ograničenja. Ako to ne uzrokuje probleme za jednostavan način prikupljanja statistike, onda sam za PCAP način snimanja datoteke na SD kartici morao petljati, organizirajući snimanje kroz red u memoriji i semafore. Uzimajući u obzir osobitost da se proces koji poziva povratni poziv izvodi na jednoj jezgri, a proces koji piše u SD na drugoj.

Tijekom "bučnog zraka", neki paketi su izgubljeni (nema mjesta u redu i odbačeni su), ali s tipičnim "zrakom" stana navečer (5..7 AP unutar vidljivosti), snimanje u PCAP je završen bez gubitka paketa.

Dodatno, za PCAP nadzor i snimanje, postoji način filtriranja na temelju MAC liste u zaglavljima paketa.

Na primjer, možete pratiti pojavu osobe u klubu/kafiću prije nego što uopće uđe ili se pojavi u vidokrugu. Malo ljudi onemogućuje WiFi i automatske veze s poznatim AP-ovima. (Sada ga gasim..)

Pregledavanje snimljenog prometa u Wiresharku je edukativno i zanimljivo za razumijevanje karata – sve radi.

Način za rad s paketima smrti

Prema zadanim postavkama, slanje ovih paketa je zabranjeno u biblioteci libnet80211.a, koja dolazi bez izvora. Ali to je lako popraviti podešavanjem nekoliko bitova. Isprva sam sumnjao isplati li se objavljivati ​​zakrpu. Ali nakon što sam hodao po raznim mjestima s uključenim načinom skeniranja okvira za deautentifikaciju, pomislio sam: "Što, dovraga." Štoviše, u esp8266 isporuka ovih paketa nije zatvorena i postoje sklopovi na githubu za esp8266.

Na mnogim mjestima (neću reći gdje) se koristi suzbijanje neželjenih AP-ova ovom metodom. I nisu to "nasilnici"...

A iznenadilo me i da mi distribucija Interneta s telefona na nekim mjestima nije radila...

Način za praćenje broja i RSSI takvih paketa vrlo je koristan za razumijevanje "gdje se lijevim AP-ovima ne sviđa."

način usmjerivača

Ova značajka je vjerojatno najzanimljivija od svih za istraživanje.

ESP32 podržava istovremeni rad u STA + SoftAP modu. Stoga na njemu možete implementirati klasični NAT router.

Kako bi podržao mrežni stog, Espressif koristi račvanje (gotovo nepromijenjeno) knjižnice lwip.

Ali prema zadanim postavkama, u standardnoj verziji, biblioteka esp-lwip ne pruža prosljeđivanje između netif sučelja 'ap' (SoftAP) i 'st' (STA).

Naravno, možete to učiniti bez NAT-a, ali postoji problem s istovremenim povezivanjem dva ili više STA-a na 'ap' sučelje i sinkronizacijom IP adresa sa 'st' mrežnog sučelja na 'ap'. Dakle, poteškoće se ne isplati i lakše je kroz NAT.

Štoviše, postoji fork esp-lwip od martin-gera, koji dodaje jednostavnu implementaciju NAT-a za IP4.

Iako su me svrbjele ruke da ga preradim čisto kozmetički (po mom mišljenju, bilo je lakše bez forka projekta, ali kroz LWIPHOOK funkcije definirane tijekom asemblera), ali je lijenost prevladala i opcija iz martin-gera se koristi kakva jest.

U načinu usmjerivača, pregledava se dolazni i odlazni IP4 promet.

Konkretno, sljedeće se izdvaja iz njega za prikaz na zaslonu i prikupljanje statistike u datoteku:

  • Naziv uređaja koji se spojio na SoftAP ESP32 (DHCP paketi)
  • URL iz DNS zahtjeva (UDP port 53) s uređaja spojenog na SoftAP ESP32.

Osim toga, možete omogućiti snimanje prometa u PCAP datoteku.

Ovaj način je vrlo koristan, na primjer, za razumijevanje, na primjer, što vaš telefon šalje mreži i kamo to ide.

Možete smisliti druge načine korištenja ovog načina rada, uzimajući u obzir mogućnost potpune kontrole softverskog dolaznog i odlaznog SoftAP ESP32 prometa na razini mrežnog sučelja: Ehernet zaglavlje (destMAC[6]+srcMAC[6]+type[2]) + nosivost (tip IP4, IP6, DCHP, itd.).

U principu, ESP32 se prilično dobro nosi s funkcijom WiFi->WiFi router, prolazeći kroz normalan promet bez posebnih zastoja. Subjektivno, kašnjenja u telefonu spojenom putem rutera na ESP32 nisu primjetna.

Nažalost, Espressif API nema mogućnost postavljanja filtra za MAC spojen na SoftAP EPS32. Umjesto toga, predlaže se reći "zbogom" (esp_wifi_deauth_sta) već povezanim STA-ovima koji "nisu poželjni".

Filtriranje prema MAC-u za povezane STA-ove moralo se izvršiti putem esp_wifi_deauth_sta() poziva

U zaključku

Iako nisam smislio ništa novo u okviru rada s ESP32, možda će rezultat (izvorni kod) nekome biti zanimljiv.

Želio bih napomenuti da je kod napisan isključivo u obrazovne svrhe. Za "hakiranje" itd., namjerno je napravljeno neprikladnim.

Nisam napravio tiskanu ploču jer je za lemljenje gotovih šalova žicom trebalo 1.5-2 sata.

A ako to učinite, morate ga sastaviti ne od gotovih ploča, već od pojedinačnih komponenti. Tada će dimenzije biti još manje.

Izvor: www.habr.com

Dodajte komentar