Spēles ar Wi-Fi uz ESP32

Spēles ar Wi-Fi uz ESP32

Man radās ideja izveidot kabatas rīku WiFi tīklu analīzei Šis raksts.

Paldies viņiem par ideju. Man vienkārÅ”i nebija ko darÄ«t.

Visi darbi tika veikti hobija ietvaros, lai izklaidētos un paplaÅ”inātu zināŔanas tÄ«kla tehnoloÄ£iju jomā. Lēnām, 1..4 stundas nedēļā, kopÅ” Ŕī gada sākuma.
Nekādu praktisku pielietojumu neplānoju. Tie. Šis NAV hakeru rīks.

Å obrÄ«d darbojas visa plānotā funkcionalitāte. Visi avoti, pilnÄ«bā gatavi montāžai, ievietots Å”eit. Ir arÄ« montāžas instrukcijas utt. Å ajā piezÄ«mē es nedublÄ“Å”u github ievietoto informāciju. Es jums pastāstÄ«Å”u tikai to, ko uzskatu par vajadzÄ«gu aprakstÄ«t atseviŔķi.

Mans viedoklis par ā€œuniversālo rÄ«kuā€ un ESP32 izvēles iemeslu

Es nepretendēju uz patiesÄ«bu. Katram savs. MēģināŔu pamatot savu aparatÅ«ras izvēli.

Ierosināts rakstā Linux (sākotnēji Raspberry Pi) + "perifēro ierīču" kombinācijas izmantoÅ”ana kontroliera (STM32) + CC1110 (8051 kodols) veidā un plāns tur sabāzt visu iespējamo (125 kHz, NFC, 433 mHz, USB, iButton, bluetooth, ?) man neŔķita piemērots. tomēr Å”is projekts Å Ä·iet, ka tā paliks privāta un slēgta (flipper-zero github ā€œÅ ai organizācijai nav publisko repozitoriju.ā€) un tika izmantota ne pārāk izplatÄ«ta aparatÅ«ra.

VarbÅ«t es kļūdos, un nākotnē autori padarÄ«s programmatÅ«ras avotus publiski pieejamus. Bet ja nē, tad es nepirktu Ŕādu aparatÅ«ru bez pirmkoda.

Manas prasības "rīkam"

Kastītei jābūt mazai (jo mazāka, jo labāk).

Tāpēc:

  • Nav nepiecieÅ”ams iebÅ«vēts akumulators. Ja strāva ir > 100 mA, strādājot ar Wifi, iebÅ«vētais akumulators bÅ«s vai nu liels, vai arÄ« nedarbosies ilgi. Tāpēc ļaujiet ā€œkastÄ«teiā€ darboties ar standarta jaudas banku. Lai nu kā, man vienmēr kabatā/maŔīnā ir jaudas banka.
  • Saglabājiet Linux ā€œkastÄ«tiā€ ar rÄ«kiem iekŔā, rakstÄ«ts daudzu gadu garumā visās valodās Ar mazo ekrānu un niecÄ«go vadÄ«bas pogu komplektu tam nav jēgas. Rezultātus var apskatÄ«t/apstrādāt parastā klēpjdatorā ar pilnu tastatÅ«ru un ekrānu.
  • Komponentiem jābÅ«t viegli pieejamiem un plaÅ”i zināmiem (pieejams SDK, daudzi piemēri un dokumentācija).

Rezultātā man izvēle bija acīmredzama - ESP32.

Visiem rakstā minētajiem uzdevumiem, kas lika man rīkoties, ESP32 iespējas ir pilnīgi pietiekamas. Lai gan visvairāk es vēlos darīt:

  • Spēlējiet ar Bluetooth.
  • Spēlējiet ar 433 mHz diapazonu ar visvienkārŔāko aparatÅ«ru (tikai amplitÅ«das modulācija, kas ir pietiekama praktiskām vajadzÄ«bām).

ESP32

  • ESP32 SDK (IDF) ir nedaudz neveikls.
  • Dažas funkcionalitātes (piemēram, Wi-Fi kaudze) tiek nodroÅ”inātas bez pirmkoda montētu statisku bibliotēku veidā.
  • 5 gHz josla netiek atbalstÄ«ta, un darbā ar WiFi ir daži ierobežojumi un neveiklÄ«ba.

Bet cena/izmērs pilnÄ«bā kompensē Å”os trÅ«kumus.

Galvenā programmatūras funkcionalitāte

ÄŖsi aprakstÄ«Å”u funkcionalitāti un savu viedokli par...

Iestatījumu pārvaldība un failu augŔupielāde no SD

Visa ārējā vadÄ«ba tiek veikta, izmantojot vienkārÅ”u Web lapu, kas tiek palaista atseviŔķā izvēlnes vienumā. ESP32 darbojas WiFi AP režīmā un parāda lapu ar fiksētu IP adresi.

Lai gan ESP32 kodoli ir diezgan ātri, kā liecina eksperimenti, iebÅ«vētā Web servisa vienlaicÄ«ga darbÄ«ba un, piemēram, marÅ”rutētāja režīms nav Ä«paÅ”i savietojami. Tāpēc nav dinamiskas vadÄ«bas, un lapa nav pieejama visos citos režīmos.
Turklāt pētniecÄ«bas nolÅ«kos dinamiskā kontrole nav nepiecieÅ”ama.

Darba režīms ar Beacon pakotnēm

Režīmi ir banāli un ne pārāk interesanti. Izgatavots, "jo tas ir iespējams". Pārbaudei.
Ir piemēri oficiālajos Espressif piemēros.

AP saraksta skenÄ“Å”anas režīms.
Faktiski to var izdarīt jebkurŔ viedtālrunis.
Nu, Ŕajā režīmā AP saraksts tiks saglabāts.
Bākas surogātpasta izplatītājs.
ESP32 sākas kā AP ar slēptu SSID un nejauÅ”u MAC un sāk sÅ«tÄ«t [bākas rāmi] saskaņā ar iepriekÅ” izveidotu SSID sarakstu (izveidots manuāli vai iegÅ«ts agrāk, skenējot AP sarakstu).

WiFi pakeÅ”u ŔņaukÅ”anas režīms

Espressif izstrādātāji ir pievienojuÅ”i iespēju lietojumprogrammatÅ«rai saņemt visas WiFi paketes, kas ā€œlido gaisāā€, izmantojot atzvanÄ«Å”anas funkciju. PatiesÄ«bā ne visi, jo režīmu var iestatÄ«t tikai vienam fiksētam kanālam.

AtzvanÄ«Å”anas funkcijas apstrādei ir noteikti ļoti stingri laika ierobežojumi. Ja tas nesagādā problēmas vienkārÅ”ajam statistikas vākÅ”anas režīmam, tad PCAP failu ierakstÄ«Å”anas režīmam SD kartē nācās Ä·erties, organizējot ierakstu, izmantojot rindu atmiņā un semaforos. Ņemot vērā Ä«patnÄ«bu, ka atzvanÄ«Å”anas process darbojas vienā kodolā, bet process, kas raksta uz SD, citā.

ā€œTrokŔņainā gaisaā€ laikā tiek pazaudētas dažas paketes (rindā nav vietas un tās tiek izmestas), bet ar tipisku dzÄ«voklim ā€œgaisuā€ vakarā (redzamÄ«bas robežās 5..7 AP), ierakstot PCAP. tiek pabeigta bez pakeÅ”u zuduma.

Turklāt PCAP uzraudzÄ«bai un ierakstÄ«Å”anai ir filtrÄ“Å”anas režīms, kura pamatā ir MAC saraksts pakeÅ”u galvenēs.

Piemēram, jÅ«s varat izsekot personas izskatam klubā/kafejnÄ«cā, pirms viņŔ pat ienāk vai parādās redzeslokā. Tikai daži cilvēki atspējo WiFi un automātiskos savienojumus ar zināmiem AP. (Es to tagad izslēdzu..)

ReÄ£istrētās satiksmes apskate Wireshark ir izglÄ«tojoÅ”a un interesanta karÅ”u izpratnei ā€“ tas viss darbojas.

Režīms darbam ar deauth pakotnēm

Pēc noklusējuma Å”o pakotņu sÅ«tÄ«Å”ana ir aizliegta bibliotēkā libnet80211.a, kas tiek piegādāta bez avotiem. Bet to ir viegli salabot, pielāgojot pāris bitus. Sākumā Å”aubÄ«jos, vai ir vērts izlikt ielāpu. Bet pēc tam, kad staigāju pa dažādām vietām ar ieslēgtu deautentifikācijas kadru skenÄ“Å”anas režīmu, es domāju: "kas pie velna." Turklāt esp8266 Å”o paku piegāde nav slēgta, un esp8266 github ir komplekti.

Daudzās vietās (neteikÅ”u, kur) tiek izmantota nevēlamu AP nomākÅ”ana, izmantojot Å”o metodi. Un tie nav nekādi "bullÄ«Å”i"...

Un vēl biju pārsteigts, ka mana interneta izplatÄ«Å”ana no telefona vietām nestrādāja...

Šādu pakeŔu skaita un RSSI izsekoŔanas režīms ir ļoti noderīgs, lai saprastu, "kur kreisajiem piekļuves punktiem tas nepatīk".

marÅ”rutētāja režīms

Šī funkcija, iespējams, ir visinteresantākā no visām, ko izpētīt.

ESP32 atbalsta vienlaicÄ«gu darbÄ«bu STA + SoftAP režīmā. Tāpēc tajā varat ieviest klasisko NAT marÅ”rutētāju.

Lai atbalstÄ«tu tÄ«kla steku, Espressif izmanto lwip bibliotēkas dakÅ”iņu (praktiski nemainÄ«gu).

Bet pēc noklusējuma standarta bÅ«vējumā esp-lwip bibliotēka nenodroÅ”ina pārsÅ«tÄ«Å”anu starp netif saskarnēm ā€œapā€ (SoftAP) un ā€œstā€ (STA).

Protams, to var izdarīt arī bez NAT, taču rodas problēma, vienlaikus savienojot divus vai vairākus STA ar 'ap' interfeisu un sinhronizējot IP adreses no 'st' tīkla interfeisa uz 'ap'. Tāpēc grūtības nav tā vērtas, un tas ir vieglāk, izmantojot NAT.

Turklāt no martin-ger ir dakŔa esp-lwip, kas pievieno vienkārŔu NAT ievieŔanu IP4.

Lai gan rokas niezēja pārtaisīt tīri kosmētiski (manuprāt, vieglāk bija bez fork of project, bet caur LWIPHOOK montāžas laikā definētās funkcijas), taču slinkums ņēma virsroku un martin-ger opcija tiek izmantota tāda, kāda tā ir.

MarÅ”rutētāja režīmā tiek skatÄ«ta ienākoŔā un izejoŔā IP4 trafika.

Jo īpaŔi no tā tiek izvilkts tālāk norādītais, lai parādītu ekrānā un apkopotu statistiku failā:

  • IerÄ«ces nosaukums, kas savienota ar SoftAP ESP32 (DHCP paketes)
  • URL no DNS pieprasÄ«jumiem (UDP 53. ports) no ierÄ«ces, kas savienota ar SoftAP ESP32.

Turklāt varat iespējot satiksmes ierakstÄ«Å”anu PCAP failā.

Šis režīms ir ļoti noderīgs, piemēram, lai saprastu, piemēram, ko tālrunis sūta tīklam un kur tas nonāk.

Varat izdomāt citus veidus, kā izmantot Å”o režīmu, ņemot vērā iespēju pilnÄ«bā kontrolēt softAP ESP32 ienākoÅ”o un izejoÅ”o trafiku tÄ«kla saskarnes lÄ«menÄ«: Ehernet galvene (destMAC[6]+srcMAC[6]+type[2]) + kravnesÄ«ba (IP4, IP6, DCHP utt. tips).

ESP32 principā diezgan labi tiek galā ar WiFi->WiFi marÅ”rutētāja funkciju, izbraucot cauri normālai satiksmei bez Ä«paÅ”iem aizÄ·erÅ”anās. SubjektÄ«vi aizkavÄ“Å”anās tālrunÄ«, kas savienots ar marÅ”rutētāju ESP32, nav pamanāma.

Diemžēl Espressif API nevar iestatÄ«t filtru MAC, kas savienots ar SoftAP EPS32. Tā vietā tiek piedāvāts pateikt ā€œardievuā€ (esp_wifi_deauth_sta) jau pievienotajiem STA, kas nav ā€œvēlamiā€.

Pieslēgto STA filtrÄ“Å”ana pēc MAC bija jāveic, izmantojot izsaukumu esp_wifi_deauth_sta()

Noslēgumā

Lai gan, strādājot ar ESP32, es neko jaunu neizdomāju, iespējams, rezultāts (avota kods) kādam būs interesants.

Es vēlos atzÄ«mēt, ka kods tika uzrakstÄ«ts tikai izglÄ«tÄ«bas nolÅ«kos. ā€œUzlauÅ”anaiā€ utt. tas tika apzināti padarÄ«ts ne pārāk ērts.

Es netaisÄ«ju iespiedshēmas plati, jo gatavās Å”alles ar stiepli pielodēja 1.5-2 stundas.

Un, ja jÅ«s to darāt, jums tas ir jāsamontē nevis no gataviem dēļiem, bet gan no atseviŔķām sastāvdaļām. Tad izmēri bÅ«s vēl mazāki.

Avots: www.habr.com

Pievieno komentāru