Lojërat me Wifi në ESP32

Lojërat me Wifi në ESP32

Dola e krijimit një instrumenti të vogël për analizimin e rrjeteve WiFi më shtyu këtij artikulli.

Faleminderit atyre për idenë. Pashë se po më mbetej pa punë.

E gjithë puna u realizua në kuadër të një hobi me qëllim që të përfitoja kënaqësi dhe të zgjeroja njohuritë e mia në fushën e teknologjive të rrjetit. Me ngadalë, 1 deri në 4 orë në javë, që nga fillimi i këtij viti.
Nuk e kisha planifikuar përdorimin praktik. Domethënë, ky nuk është një instrument për hakerë.

Derimë tani, gjithçka që ishte menduar funksionon. Të gjitha skedarët burimorë, plotësisht të gatshëm për ndërtim, janë publikuar këtu. Po ashtu atje do të gjeni udhëzimet për ndërtimin dhe të tjera. Në këtë shënim nuk do të kopjoj informacionin e publikuar në github. Do të flas vetëm për atë që mendoj se është e nevojshme të përshkruhet veçmas.

Mendimi im rreth "instrumentit universali" dhe arsyeja për zgjedhjen e ESP32

Nuk pretendon të kem të vërtetën. Ajo është ndryshe për secilin. Do të përpiqem të arsyetoj zgjedhjen time të "harduerit".

Opsioni i propozuar në artikull kombinimi i Linux (origjinalisht Raspberry Pi) + "periferikë" si kontroler (STM32) + CC1110 (në bërthamën 8051) dhe plani për të futur aty gjithçka që është e mundur (125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?) më dukej i papërshtatshëm për mua. Megjithatë, ky projekt duket se do të mbetet privat dhe i mbyllur (flipper-zero github "Kjo organizatë nuk ka depo publike.") dhe kam kaluar në një harduer më pak të zakonshëm.

Ndoshta nuk kam të drejtë, dhe në të ardhmen autorët do të publikojnë skedarët burimorë të softuerit në akses të hapur. Por nëse jo, atëherë unë nuk do ta bleja një harduer të tillë pa skedarët burimorë.

Kërkesat e mia për "instrumentin"

Kutia duhet të jetë e vogël (sa më e vogël, aq më mirë).

Prandaj:

  • NjĂ« bateri e brendshme nuk Ă«shtĂ« e nevojshme. Me njĂ« rrymĂ« > 100 mA gjatĂ« punĂ«s me Wifi, bateria e brendshme do tĂ« jetĂ« e madhe ose nuk do tĂ« zgjasĂ« pĂ«r gjatĂ«. Prandaj, le tĂ« ushqehet "kutia" nga njĂ« bankĂ« energjie standarde. PavarĂ«sisht, banka e energjisĂ« gjithmonĂ« ndodhet nĂ« xhep/automobilin tim.
  • TĂ« mbaj brenda "kutisĂ«" njĂ« Linux me vegla, tĂ« shkruara gjatĂ« shumĂ« viteve nĂ« tĂ« gjitha gjuhĂ«t nĂ« praninĂ« e njĂ« ekrani tĂ« vogĂ«l dhe njĂ« seti tĂ« kufizuar butonash, nuk ka shumĂ« kuptim. Rezultatet mund tĂ« shihen/pĂ«rpunohen nĂ« njĂ« laptop normal me njĂ« tastierĂ« dhe ekran tĂ« plotĂ«.
  • KomponentĂ«t duhet tĂ« jenĂ« tĂ« lehtĂ« pĂ«r tu pasur dhe tĂ« njohur gjerĂ«sisht (SDK-i i arritshĂ«m, shumĂ« shembuj dhe dokumentacion).

Si pĂ«rfundim, pĂ«r mua, zgjedhja ishte e qartĂ« — ESP32.

Për të gjitha detyrat e deklaruara në artikullin që më çoi në veprime, mundësitë e ESP32 janë plotësisht të mjaftueshme. Megjithatë, maksimumi që dua të bëj është:

  • TĂ« luaj me Bluetooth.
  • TĂ« luaj me diapazonin 433mHz me hardware tĂ« thjeshtĂ« (vetĂ«m modulimi i amplitudĂ«s, çka Ă«shtĂ« e mjaftueshme pĂ«r nevojat praktike).

Një lugë e hidhur në ESP32

  • SDK (IDF) i ESP32 Ă«shtĂ« paksa i çrregullt.
  • Pjesa e funksionalitetit (stoku WiFi, pĂ«r shembull) vjen pa burime nĂ« formĂ«n e biblioteka statike tĂ« ndĂ«rtuara.
  • Diapazoni 5gHz nuk mbĂ«shtetet dhe ka disa kufizime dhe çrregulltĂ«si nĂ« funksionimin e WiFi.

Por çmimi/dimensionet kompensojnë plotësisht këto disavantazhe.

Funksionaliteti kryesor i softuerit

Shkurt do ta përshkruaj funksionalitetin dhe mendimin tim për


Menaxhimi i cilësimeve dhe shkarkimi i skedarëve nga SD

Të gjitha menaxhimet e jashtme bëhen përmes një faqe interneti të thjeshtë, e cila aktivizohet në një pikë të veçantë të menusë. ESP32 aktivizohet në modin WiFi AP dhe jep një faqe në një adresë IP të fiksuar.

Megjithë faktin se bërthamat e ESP32 janë mjaft të shpejta, eksperimentet treguan se funksionimi i shërbimit të brendshëm të web-it dhe, për shembull, modelet e router-it nuk janë shumë në përputhje me njëra-tjetrën. Prandaj, menaxhimi dinamik nuk është i mundur dhe në të gjitha modet e tjera, faqja nuk është e disponueshme.
Për më tepër, për qëllime kërkimore, menaxhimi dinamik nuk është i nevojshëm.

Mënyra e punës me paketat Beacon

Modet janë banale dhe nuk janë shumë interesante. Janë bërë "sepse është e mundur". Për shenjë.
Shembuj ka në shembujt zyrtarë të Espressif.

Mënyra e skanimit të listave AP.
Vërtet, çdo smartphone mund ta bëjë këtë.
Edhe në këtë mod, ruhet lista e AP.
Beacon spammer.
ESP32 starton si AP me SSID të fshehur dhe MAC të rastësishëm dhe fillon të dërgojë [beacon frame] sipas një liste të krijuar paraprakisht të SSID-ve (krijuar manualisht ose marrë më parë gjatë skanimit të listës AP).

Mënyra e sniffing të paketave WiFi

Zhvilluesit e Espressif kanë shtuar mundësinë që softueri aplikativ të marrë përmes funksionit callback të gjitha paketat WiFi "në ajër". Në të vërtetë, jo të gjitha, pasi mund të vendosni mënyrën vetëm për një kanal të caktuar.

Kallimi i funksionit callback është i kufizuar nga një afat shumë të ngushtë. Ndërsa për modin e thjeshtë të mbledhjes së statistikave kjo nuk paraqet ndonjë problem, për modin e regjistrimit të skedarëve PCAP në kartën SD duhej të punohej, duke organizuar regjistrimin përmes një radhë në memorje dhe semaforëve. Meqenëse procesi që thërret callback rrotullohet në një bërthamë, ndërsa procesi që kryen regjistrimin në SD në një tjetër.

NĂ« kushte tĂ« ‘erĂ«s me zhurmë’, disa paketa humbasin (nuk ka vend nĂ« radhĂ« dhe ato hidhen poshtĂ«), por nĂ« ‘erĂ«n’ tipike tĂ« apartamenteve gjatĂ« mbrĂ«mjes (5..7 AP nĂ« pĂ«rputhje) regjistrimi nĂ« PCAP arrin tĂ« realizohet pa humbje paketash.

Për më tepër, për monitorim dhe regjistrim PCAP ekziston një mod për filtrimin e listave MAC në titujt e paketimeve.

Për shembull, mund të ndjekësh shfaqjen e një personi në një klub/kafene para se ai të hyjë apo të shfaqet në fushën e parë të pamjes. Pabarazisht se pak njerëz e çaktivizojnë WiFi dhe lidhjet automatike me AP të njohura. (Tani unë e çaktivizoj...)

Të shqyrtosh trafikun e regjistruar në Wireshark është ndihmuese dhe interesante për të kuptuar mënyrën se si funksionon gjithçka.

Mënyra e punës me paketat deauth

PĂ«r default, dĂ«rgimi i kĂ«tyre paketimeve Ă«shtĂ« i ndaluar nĂ« bibliotekĂ«n libnet80211.a, e cila vjen pa burimet. Por nuk Ă«shtĂ« e vĂ«shtirĂ« tĂ« modifikosh disa byte. NĂ« fillim dyshoja nĂ«se duhet tĂ« publikoj patch-in. Por pasi kam shĂ«titur nĂ« vende tĂ« ndryshme me modin e skanimit tĂ« burimeve pĂ«r dĂ«rgimin e [deauthentication frame], mendoja: ‘çfarĂ« *******’. VeçanĂ«risht, qĂ« nĂ« esp8266 dĂ«rgimi i kĂ«tyre paketimeve nuk Ă«shtĂ« i bllokuar dhe ka ndĂ«rtime nĂ« github pĂ«r esp8266.

NĂ« shumĂ« vende (nuk do tĂ« them ku) pĂ«rdoret shuarja e AP-ve tĂ« padĂ«shiruar pĂ«rmes kĂ«tij metode. Dhe kjo nuk janĂ« ‘hooligans’...

Dhe unë ende isha i habitur që ndarja e internetit nga telefoni im në disa raste nuk funksionon...

MĂ«nyra pĂ«r tĂ« ndjekur numrin dhe RSSI tĂ« kĂ«tyre paketimeve Ă«shtĂ« shumĂ« e dobishme pĂ«r tĂ« kuptuar ‘ku nuk i pĂ«lqejnĂ« AP-tĂ« e huaja’.

Mënyra router

Kjo funksion është ndoshta më interesante nga të gjitha për hulumtim.

ESP32 mbështet punën e njëkohshme në modin STA + SoftAP. Prandaj, në të mund të realizohet një router NAT klasik.

Për mbështetje të plotë të stakut rrjetor, Espressif përdor fork (praktikisht pa ndryshime) të bibliotekës lwip.

Por, pĂ«r default, nĂ« ndĂ«rtimin standard, nĂ« bibliotekĂ«n esp-lwip nuk Ă«shtĂ« parashikuar ndĂ«rmjetĂ«simi mes interface-netif ‘ap’ (SoftAP) dhe ‘st’ (STA).

Sigurisht qĂ« mund ta bĂ«ni edhe pa NAT, por shfaqet problemi i lidhjes sĂ« njĂ«kohshme tĂ« dy ose mĂ« shumĂ« STA nĂ« ndĂ«rfaqen ‘ap’ dhe harmonizimit tĂ« adresave IP nga ndĂ«rfaqja rrjetore ‘st’ nĂ« ‘ap’. KĂ«shtu qĂ« vĂ«shtirĂ«sitĂ« nuk ja vlen, dhe Ă«shtĂ« mĂ« e thjeshtĂ« pĂ«rmes NAT.

Dhe më shumë, ekziston fork esp-lwip nga martin-ger në të cilin është shtuar një realizim i thjeshtë i NAT për IP4.

Megjithatë, duart e mia e donin ta ripërpunonin atë thjesht për arsye estetike (për mendimin tim, ishte më e thjeshtë pa fork projekti, por përmes LWIP.HOOK funksioneve të përcaktuara gjatë ndërtimit), por lenia fitoi dhe varianti nga martin-ger përdoret siç është.

Në modin router, monitorohet trafik IP4 i ardhshëm dhe të dalshëm.

Në veçanti, nga ai nxirret për të shfaqur në ekran dhe për të mbledhur statistika në skedar:

  • Emri i pajisjes qĂ« Ă«shtĂ« lidhur me SoftAP ESP32 (paket DHCP)
  • URL nga kĂ«rkesat DNS (porti UDP 53) nga pajisja e lidhur me SoftAP ESP32.

Për më tepër, mund të aktivizoni regjistrimin e trafikut në skedarin PCAP.

Ky mod është shumë i dobishëm, për shembull, për të kuptuar se çfarë dërgon telefoni juaj në rrjet dhe ku shkon gjatë kësaj.

Mund të mendoni edhe mënyra të tjera për të përdorur këtë mod duke marrë parasysh mundësinë për të menaxhuar plotësisht trafikun e ardhshëm dhe të dalshëm të SoftAP ESP32 në nivelin e ndërfaqes rrjetore: Titulli Ehernet (destMAC[6]+srcMAC[6]+type[2]) + ngarkesa (IP4, IP6, DCHP, etj. tip).

Në thelb, ESP32 përmbush mjaft mirë funksionin e ruterit WiFi->WiFi, duke kaluar përmes vetes trafikun normal pa vonesa të mëdha. Subjektivisht, nuk janë të dukshme vonesat në telefonin e lidhur përmes ruterit në ESP32.

Fatkeqësisht, në API-në Espressif nuk ka mundësi për të vendosur një filtrin sipas MAC për STA-të e lidhura me SoftAP EPS32. Në vend të kësaj, sugjerohet të thuhet "lamtumirë" (esp_wifi_deauth_sta) për STA-të që janë lidhur dhe "nuk janë të dëshiruara".

Filtrimi sipas MAC për STA-të e lidhura u zhvillua përmes thirrjes esp_wifi_deauth_sta()

Në përfundim

Megjithëse nuk kam shpikur asgjë të re në kuadër të punës me ESP32, ndoshta dikujt do t'i interesojnë rezultatet (burimet).

Dëshiroj të theksoj se kodi u shkrua ekskluzivisht për arsye arsimore. Për "hacker" dhe të tilla, ai u krijua qëllimisht jo shumë të rehatshëm.

Nuk bëra një pllakë printimi, pasi m'u deshën rreth 1.5-2 orë për të lidhur plakat e gatshme me tel.

Dhe nëse do të bëja, duhet të mblidhet jo nga pllaka të gatshme, por nga komponente të veçanta. Atëherë përmasat do të ishin edhe më të vogla.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster