Lojëra me Wifi në ESP32

Lojëra me Wifi në ESP32

Ajo që më dha idenë për të krijuar një mjet xhepi për të analizuar rrjetet WiFi ishte ky artikull.

Faleminderit atyre për idenë. Unë thjesht nuk kisha çfarë të bëja.

E gjithë puna u krye si pjesë e një hobi me qëllim të argëtimit dhe zgjerimit të njohurive të mia në fushën e teknologjive të rrjetit. Ngadalë, 1..4 orë në javë, që nga fillimi i këtij viti.
Nuk kam planifikuar ndonjë përdorim praktik. ato. Ky NUK është mjet i një hakeri.

Për momentin, i gjithë funksionaliteti i planifikuar është duke funksionuar. Të gjitha burimet, plotësisht të gatshme për montim, postuar këtu. Ka edhe udhëzime për montimin, etj. Në këtë shënim, nuk do të kopjoj informacionin e postuar në github. Unë do t'ju tregoj vetëm atë që e konsideroj të nevojshme të përshkruaj veçmas.

Mendimi im për "mjetin universal" dhe arsyen e zgjedhjes së ESP32

Unë nuk pretendoj se jam e vërteta. Secili ka të vetin. Do të përpiqem të justifikoj zgjedhjen time të harduerit.

Propozuar në artikull rasti i përdorimit të një kombinimi të Linux (fillimisht Raspberry Pi) + "periferikësh" në formën e një kontrolluesi (STM32) + CC1110 (8051 bërthama) dhe plani për të grumbulluar gjithçka që është e mundur atje (125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?) nuk më dukej i përshtatshëm. Megjithatë, këtë projekt Duket se do të mbetet privat dhe i mbyllur (github flipper-zero "Kjo organizatë nuk ka depo publike.") dhe shkoi drejt harduerit jo shumë të zakonshëm.

Ndoshta e kam gabim dhe në të ardhmen autorët do t'i bëjnë të disponueshme publikisht burimet e softuerit. Por nëse jo, atëherë nuk do të blija një pajisje të tillë pa kodin burimor.

Kërkesat e mia për "mjetin"

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

Prandaj:

  • Nuk nevojitet bateri e integruar. Me një rrymë > 100 mA kur punoni me Wifi, bateria e integruar ose do të jetë e madhe ose nuk do të zgjasë shumë. Prandaj, lëreni "kutinë" të mundësohet nga një bankë standarde e energjisë. Gjithsesi, unë kam gjithmonë një power bank në xhep/makinë.
  • Mbani një "kuti" Linux me mjete brenda, shkruar për shumë vite në të gjitha gjuhët Me një ekran të vogël dhe një grup të pakët butonash kontrolli, nuk ka kuptim. Rezultatet mund të shikohen/përpunohen në një laptop normal me tastierë dhe ekran të plotë.
  • Komponentët duhet të jenë lehtësisht të aksesueshëm dhe të njohur gjerësisht (SDK e disponueshme, shumë shembuj dhe dokumentacion).

Si rezultat, për mua, zgjedhja ishte e qartë - ESP32.

Për të gjitha detyrat e përmendura në artikull që më shtynë të ndërmarr veprime, aftësitë e ESP32 janë mjaft të mjaftueshme. Edhe pse më së shumti që dua të bëj është:

  • Luaj me Bluetooth.
  • Luani me gamën 433 mHz me harduerin më të thjeshtë (vetëm modulim amplitudë, i cili mjafton për nevoja praktike).

Fluturoni në vaj në ESP32

  • ESP32 SDK (IDF) është disi i ngathët.
  • Disa nga funksionalitetet (për shembull, steka WiFi) vijnë pa kod burimor në formën e bibliotekave statike të montuara.
  • Brezi 5 gHz nuk mbështetet dhe ka disa kufizime dhe ngathtësi në punën me WiFi.

Por çmimi/madhësia kompenson plotësisht këto mangësi.

Funksionaliteti kryesor i softuerit

Unë do të përshkruaj shkurtimisht funksionalitetin dhe mendimin tim rreth ...

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

I gjithë kontrolli i jashtëm bëhet përmes një faqeje të thjeshtë ueb, të hapur në një artikull të veçantë të menysë. ESP32 fillon në modalitetin WiFi AP dhe shfaq një faqe në një adresë IP fikse.

Megjithëse bërthamat ESP32 janë mjaft të shpejta, siç kanë treguar eksperimentet, funksionimi i njëkohshëm i shërbimit të integruar të Uebit dhe, për shembull, mënyra e ruterit nuk janë shumë të përputhshme. Prandaj, nuk ka kontroll dinamik dhe faqja nuk është e disponueshme në të gjitha mënyrat e tjera.
Për më tepër, kontrolli dinamik nuk është i nevojshëm për qëllime kërkimore.

Mënyra e punës me paketat Beacon

Mënyrat janë banale dhe jo shumë interesante. Bërë "sepse është e mundur". Për kontroll.
Ka shembuj në shembujt zyrtarë të Espressif.

Modaliteti i skanimit të listës AP.
Në fakt, çdo smartphone mund ta bëjë këtë.
Epo, në këtë mënyrë lista e AP do të ruhet.
Beacon spammer.
ESP32 fillon si një AP me një SSID të fshehur dhe një 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ë herët duke skanuar listën AP)

Modaliteti i nuhatjes së paketave WiFi

Zhvilluesit e Espressif kanë shtuar mundësinë që softueri i aplikacionit të marrë të gjitha paketat WiFi që "fluturojnë në ajër" përmes funksionit të kthimit të thirrjes. Në fakt jo të gjitha, pasi mund të vendosni modalitetin vetëm për një kanal fiks.

Kufizime shumë të rrepta kohore vendosen në përpunimin e një funksioni të kthimit të thirrjes. Nëse kjo nuk shkakton probleme për mënyrën e thjeshtë të mbledhjes së statistikave, atëherë për mënyrën e regjistrimit të skedarëve PCAP në kartën SD më është dashur të ndërhyj, duke organizuar regjistrimin përmes një radhe në memorie dhe semaforë. Duke marrë parasysh veçorinë që procesi që thërret kthimin e thirrjes funksionon në një bërthamë, dhe procesi që shkruan në SD në një tjetër.

Gjatë "ajrit të zhurmshëm", disa pako humbasin (nuk ka vend në radhë dhe ato hidhen), por me një "ajër" tipik të një apartamenti në mbrëmje (5..7 AP brenda dukshmërisë), regjistrimi në PCAP plotësohet pa humbje të paketës.

Për më tepër, për monitorimin dhe regjistrimin PCAP, ekziston një modalitet filtrimi i bazuar në listën MAC në titujt e paketave.

Për shembull, ju mund të gjurmoni pamjen e një personi në një klub/kafe para se të hyjë ose të shfaqet në sy. Pak njerëz çaktivizojnë WiFi dhe lidhjet automatike me AP-të e njohura. (Po e fik tani..)

Shikimi i trafikut të regjistruar në Wireshark është edukativ dhe interesant për të kuptuar hartat - gjithçka funksionon.

Modaliteti për të punuar me paketat deauth

Si parazgjedhje, dërgimi i këtyre paketave është i ndaluar në bibliotekën libnet80211.a, e cila vjen pa burime. Por është e lehtë të rregullohet duke ndryshuar disa pjesë. Në fillim dyshova nëse ia vlente të postoja patch. Por pasi eca nëpër vende të ndryshme me modalitetin e skanimit të kuadrit të deautentikimit të aktivizuar, mendova: "çfarë dreqin". Për më tepër, në esp8266 shpërndarja e këtyre paketave nuk është e mbyllur dhe ka montime në github për esp8266.

Në shumë vende (nuk do të them se ku) përdoret shtypja e AP-ve të padëshiruara përmes kësaj metode. Dhe këta nuk janë “ngacmues”...

Dhe gjithashtu u habita që shpërndarja ime e internetit nga telefoni im nuk funksionoi në disa vende ...

Mënyra e gjurmimit të numrit dhe RSSI të paketave të tilla është shumë e dobishme për të kuptuar "aty ku AP-të e majtë nuk e pëlqejnë".

modaliteti i ruterit

Kjo veçori është ndoshta më interesante nga të gjitha për t'u eksploruar.

ESP32 mbështet funksionimin e njëkohshëm në modalitetin STA + SoftAP. Prandaj, mund të zbatoni një ruter klasik NAT në të.

Për të mbështetur grupin e rrjetit, Espressif përdor një fork (praktikisht të pandryshuar) të bibliotekës lwip.

Por, si parazgjedhje, në ndërtimin standard, biblioteka esp-lwip nuk ofron përcjellje ndërmjet ndërfaqeve netif 'ap' (SoftAP) dhe 'st' (STA).

Sigurisht, mund ta bëni pa NAT, por ka një problem me lidhjen e njëkohshme të dy ose më shumë STA me ndërfaqen 'ap' dhe sinkronizimin e adresave IP nga ndërfaqja e rrjetit 'st' në 'ap'. Pra, vështirësitë nuk ia vlejnë dhe është më e lehtë përmes NAT.

Për më tepër, ekziston një fork esp-lwip nga martin-ger, i cili shton një zbatim të thjeshtë të NAT për IP4.

Megjithëse duart më kruheshin për ta ribërë atë thjesht kozmetikisht (për mendimin tim, ishte më e lehtë pa pirun e projektit, por përmes LWIPHOOK funksionet e përcaktuara gjatë montimit), por përtacia mbizotëroi dhe opsioni nga martin-ger përdoret siç është.

Në modalitetin e ruterit, shikohet trafiku IP4 në hyrje dhe në dalje.

Në veçanti, sa vijon nxirret prej tij për t'u shfaqur në ekran dhe për të mbledhur statistika në një skedar:

  • Emri i pajisjes që është lidhur me SoftAP ESP32 (paketat DHCP)
  • URL nga kërkesat DNS (porta UDP 53) nga një pajisje e lidhur me SoftAP ESP32.

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

Kjo mënyrë është shumë e dobishme, për shembull, për të kuptuar, për shembull, çfarë dërgon telefoni juaj në rrjet dhe ku shkon.

Mund të mendoni për mënyra të tjera për të përdorur këtë modalitet, duke marrë parasysh aftësinë për të kontrolluar plotësisht trafikun hyrës dhe dalës të softAP ESP32 në nivelin e ndërfaqes së rrjetit: kokën e Ehernet (destMAC[6]+srcMAC[6]+lloj[2]) + ngarkesë (lloji IP4, IP6, DCHP, etj.).

Në parim, ESP32 përballet mjaft mirë me funksionin e ruterit WiFi->WiFi, duke kaluar nëpër trafikun normal pa vonesa të veçanta. Në mënyrë subjektive, vonesat në një telefon të lidhur nëpërmjet një ruteri në një ESP32 nuk janë të dukshme.

Fatkeqësisht, API Espressif nuk ka aftësinë për të vendosur një filtër për MAC të lidhur me SoftAP EPS32. Në vend të kësaj, propozohet t'u thuash "lamtumirë" (esp_wifi_deauth_sta) STA-ve tashmë të lidhura që "nuk janë të dëshiruar".

Filtrimi nga MAC për STA të lidhura duhej të bëhej përmes thirrjes esp_wifi_deauth_sta()

Në përfundim

Edhe pse nuk dola me asgjë të re brenda kornizës së punës me ESP32, ndoshta rezultati (kodi burimor) do të jetë interesant për dikë.

Dua të vërej se kodi është shkruar vetëm për qëllime edukative. Për "hakim", etj., u bë qëllimisht jo shumë i përshtatshëm.

Unë nuk bëra një tabelë të qarkut të printuar sepse u deshën 1.5-2 orë për të bashkuar shallet e përfunduara me tel.

Dhe nëse e bëni këtë, duhet ta montoni jo nga dërrasat e gatshme, por nga përbërës individualë. Atëherë dimensionet do të jenë edhe më të vogla.

Burimi: www.habr.com

Shto një koment