MĂ€ngud Wifi-lt ESP32-l

MĂ€ngud Wifi-lt ESP32-l

MĂ”te luua taskuanalĂŒĂŒsi tööriist WiFi-vĂ”rkude jaoks tuli mulle see artikkel.

TĂ€nan neid idee eest. Mul ei olnud just midagi teha.

Kogu töö tehti hobi raames eesmÀrgiga saada naudingut ja laiendada oma teadmisi vÔrgu tehnoloogiate valdkonnas. Aeglaselt, 1..4 tundi nÀdalas, alates selle aasta algusest.
Ma ei kavatsenud seda praktiliselt kasutada. See EI OLE tööriist hÀkkeritele.

Praeguseks on kogu ette nĂ€htud funktsionaalsus töökorras. KĂ”ik lĂ€htekoodi failid, tĂ€ielikult valmis kokkupanekuks, on ĂŒles pandud siia. Seal on ka kokku panemise juhised ja muu. Selles mĂ€rkuses ma ei kordaks teavet, mis on ĂŒles pandud githubis. RÀÀgin vaid sellest, mida pean vajalikuks eraldi kirjeldada.

Minu arvamus "ĂŒldsusele suunatud tööriistast" ja pĂ”hjus, miks valisin ESP32

Ma ei pretendeeri tĂ”ele. IgaĂŒhel on oma tĂ”de. PĂŒĂŒan pĂ”hjendada oma valikut "rauda".

Artiklis pakutud kasutamisvariant Linux (algselt Raspberry Pi) + "perifeeria" nagu kontroller (STM32) + CC1110 (8051 tuum) ja plaan panna sinna kÔik, mis vÔimalik (125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?) tundus mulle sobimatu. Kui aga, see projekt tundub jÀÀvat eratukseks ja suletuks (flipper-zero github "Sellel organisatsioonil pole avalikke reposid.") ja suundusin vÀhem levinud rauda poole.

VÔib-olla ma ei ole Ôige, ja edaspidi jagavad autorid tarkvara lÀhtekoodi avalikkuse ees. Aga kui ei, siis ma ei ostaks sellist rauda ilma lÀhtekoodita.

Minu nÔuded "tööriistale"

Karp peab olema vÀike (mida vÀiksem, seda parem).

Seega:

  • Integreeritud akufunktsioon ei ole vajalik. Üle 100 mA voolu puhul WiFi kasutamisel on integreeritud aku kas liiga suur vĂ”i ei pea kaua. Seega las "karp" töötab tavalise power bank'i pealt. Power bank on mul igal juhul taskus/auto taga alati olemas.
  • Hoidke "karbi" sees Linux koos tööriistadega, mis on kirjutatud aastate jooksul kĂ”ikide keeltega olemasoleva vĂ€ikese ekraani ja vaese juhtnuppude komplektiga pole mĂ”tet. Tulemusi saab vaadata/töötleda ka normaalsel sĂŒlearvutil koos tĂ€is klaviatuuriga ja ekraaniga.
  • Komponendid peavad olema kergesti kĂ€ttesaadavad ja laialdaselt tuntud (saadaval SDK, palju nĂ€iteid ja dokumentatsiooni).

KokkuvĂ”ttes oli minu jaoks valik ilmselge — ESP32.

KĂ”ikide artiklis esitatud ĂŒlesannete jaoks, mis tĂ”ukavad mind tegutsema, on ESP32 vĂ”imekus tĂ€iesti piisav. Kuigi maksimum, mida ma veel teha tahan, on:

  • MĂ€ngida Bluetoothiga.
  • MĂ€ngida 433mHz sageduse baasil kĂ”ige lihtsama riistvaraga (ainult amplituudimodulatsioon, mis on praktiliste vajalikkuste jaoks piisav).

ESP32-s on ĂŒks mustus.

  • ESP32 SDK (IDF) on veidi kohmakas.
  • MĂ”nede funktsioonide (nĂ€iteks WiFi stack) jaoks ei ole allikaid, vaid need on koostatud staatilisteks teegiteks.
  • 5gHz sagedusala ei ole toetatud ja WiFi töö osas on teatud piirangud ja ebamugavused.

Kuid hind/suurused kompenseerivad need puudused tÀielikult.

Peamine tarkvara funktsionaalsus

KĂ€in lĂŒhidalt ĂŒle funktsionaalsuse ja oma arvamuse


Seadete haldamine ja failide laadimine SD-lt

KĂ”ik vĂ€line haldus toimub kĂ”ige lihtsama veebilehe kaudu, mida kĂ€ivitatakse eraldi menĂŒĂŒs. ESP32 kĂ€ivitatakse WiFi AP reĆŸiimis ja vĂ€ljastab lehe statsionaarsel IP-aadressil.

Kuigi ESP32 sisemised tuumad on ĂŒsna kiired, nĂ€itasid katsed, et sisseehitatud veebiteenuse ja nĂ€iteks ruuteri reĆŸiimi samaaegne töö ei ĂŒhildu hĂ€sti. SeetĂ”ttu pole dĂŒnaamilist haldust ja kĂ”igis teistes reĆŸiimides leht ei ole kĂ€ttesaadav.
Eriti kuna uurimistööde eesmĂ€rkidel dĂŒnaamiline haldus ei ole vajalik.

ReĆŸiim Beacon-pakettidega

ReĆŸiimid on banaalsed ja mitte eriti huvitavad. Tehtud „sest saab“. Vormistuseks.
NÀidiseid on ametlikes Espressifi nÀidetes.

AP-de skaneerimise reĆŸiim.
Tegelikult oskab seda teha iga nutitelefon.
Ja selles reĆŸiimis salvestatakse AP-de nimekiri.
Beacon spÀmmija.
ESP32 kÀivitub kui AP peidetud SSID ja juhusliku MAC-iga ning hakkab saatma [beacon frame] eelnevalt loodud SSID-de nimekirjast (kas kÀsitsi loodud vÔi varasematest skaneerimistest saadud).

WiFi pakettide nuhkimise reĆŸiim

Espressifi arendajad lisasid rakendustarkvarale vĂ”imaluse saada callback-funktsiooni kaudu kĂ”ik WiFi paketid, mis „lendavad Ă”hus“. Tegelikult ei saa kĂ”iki, kuna saavad seadistada reĆŸiimi ainult ĂŒhel kindlal kanalil.

Callback funktsiooni töötlemisel kehtivad vĂ€ga ranged ajapiirangud. Kui lihtsa statistika kogumise reĆŸiim ei tekita probleeme, siis PCAP-faili salvestamise reĆŸiimi korral SD-kaardile tuli vaeva nĂ€ha, et organiseerida salvestamine mĂ€lu kaudu jĂ€rjekorras ja semaforide abil. Arvestades, et protsess, mis kutsub esile callback'i, töötab ĂŒhel tuumal, ja protsess, mis teeb salvestamist SD-le, töötab teisel.

Kuna „mĂŒrarikkal Ă”hkul” kaotatakse mĂ”ned paketid (jĂ€rjekorras ei ole ruumi ja need visatakse Ă€ra), siis tĂŒĂŒpilise Ă”hku tĂ€is korteri (5..7 AP nĂ€htavuses) korral toimub PCAP salvestamine ilma pakettide kadudeta.

Lisaks on PCAP-i jĂ€lgimiseks ja salvestamiseks reĆŸiim, mis filtreerib MAC nimekirja pakettide pealkirjades.

NĂ€iteks saab jĂ€lgida, kuidas keegi edasi tuleb klubisse/kohvikusse, enne kui ta ĂŒldse sisse astub vĂ”i silmapiirile ilmub. VĂ€hemalt keegi ei lĂŒlita WiFi-d ja automaatse ĂŒhenduse loomist teadlike AP-dega vĂ€lja. (Mina lĂŒlitan nĂŒĂŒd vĂ€lja..)

Salvestatud liiklust Wiresharkis vaadata on hariv ja huvitav, et mÔista, kuidas see kÔik töötab.

TööreĆŸiim deauth pakettidega

Vaikimisi on nende pakettide saatmine keelatud raamatukogus libnet80211.a, mis tuleb ilma allikaid. Kuid seda pole keeruline kopeerida, parandades paari baitit. Alguses kahtlesin, kas tasub patchi vÀlja anda. Kuid seigeldes erinevates kohtades skaneerimisseisundis [deauthentication frame], mÔtlesin: 'miks mitte'. Eriti kuna esp8266 pakettide saatmine pole suletud ja esp8266-le mÔeldud kogumid on githubis.

Paljudes kohtades (ei hakka ĂŒtlema kus) kasutatakse soovimatute AP-de summutamiseks seda meetodit. Ja need pole „linnud”...

Ja ma imestasin, miks mul mÔnes kohas interneti jagamine telefonist ei toimi...

Pakettide arvu ja RSSI jĂ€lgimise reĆŸiim on vĂ€ga kasulik, et mĂ”ista, „kus ei armastata vale AP-de”

Routeri reĆŸiim

See funktsioon on ilmselt kÔige huvitavam kÔigist uurimiseks.

ESP32 toetab samaaegset töötamist STA + SoftAP reĆŸiimis. Seega saab sellel ellu viia klassikalise NAT ruuteri.

Espressif kasutab vÔrgu stack'i toetamiseks fork'i (peaaegu ilma muutusteta) lwip raamatukogu.

Kuid vaikimisi, standardkogumites ei ole esp-lwip raamatukogus 'ap' (SoftAP) ja 'st' (STA) vahel vĂ”rguĂŒhenduste edastamist ette nĂ€htud.

Muidugi on vĂ”imalik teha ka ilma NAT, kuid tekib probleem kahe vĂ”i enama STA samaaegse ĂŒhenduse loomisega liidese ‘ap’ kaudu ja IP-aadresside sĂŒnkroniseerimisega vĂ”rgu liideselt ‘st’ liidesesse ‘ap’. Seega, vaeva ei tasu ja on lihtsam lĂ€bi NAT.

Eriti, et on olemas martin-geri fork esp-lwip, milles on lisatud lihtne NAT teostus IP4 jaoks.

Kuigi mul oli tahtmine seda puhtalt kosmeetiliselt ĂŒmber teha (minu arvates oli lihtsam ilma fork projektita, vaid lĂ€bi LWIP),HOOK kogutud funktsioonide mÀÀratlemiseks ehitamisel), kuid laiskus vĂ”itis ja martin-geri variant jÀÀb kasutusele.

RuuterireĆŸiimis on nĂ€ha sisenevat ja vĂ€ljuvat IP4 liiklust.

EelkÔige saab sellest ekraanil kuvamiseks ja statistika kogumiseks faili:

  • Seade nimega, mis on ĂŒhendatud SoftAP ESP32 (DHCP paketid)
  • URL DNS-pĂ€ringutest (UDP port 53) ĂŒhendatud SoftAP ESP32 seadmetelt.

Lisaks saab sisse lĂŒlitada liikluse salvestamise PCAP faili.

See reĆŸiim on vĂ€ga kasulik, nĂ€iteks et mĂ”ista, mida teie telefon vĂ”rku saadab ja kuhu ta sellega ĂŒhendub.

VĂ”ib vĂ€lja mĂ”elda ka teisi viise, kuidas seda reĆŸiimi kasutada, arvestades vĂ”imalust tĂ€ielikult programmeerimislikult hallata SoftAP ESP32 sisenemist ja vĂ€ljumist liiklust vĂ”rgu liidese tasemel: Etherneti pealkiri (destMAC[6]+srcMAC[6]+type[2]) + koormus (IP4, IP6, DCHP jne).

PĂ”himĂ”tteliselt suudab ESP32 normaalselt hakkama saada WiFi->WiFi ruuteri funktsiooniga, edastades tavalist liiklust ilma eriliste viivitusteta. Subjektiivselt ei ole ESP32 ruuteri kaudu ĂŒhendatud telefonis viivitusi tunda.

Kahjuks ei ole Espressifi API-s vĂ”imalik seada MAC filtrit SoftAP EPS32'ga ĂŒhendatud seadmete jaoks. Selle asemel pakutakse lahendada „head aega” (esp_wifi_deauth_sta) juba ĂŒhendatud STA-de jaoks, mis on „soovimatud”.

MAC filtreerimine ĂŒhendatavate STA-de jaoks tuli teha kutsudes esp_wifi_deauth_sta()

KokkuvÔtteks

Kuigi ma ei leidnud midagi uut ESP32 töö kÀigus, vÔiks tulemus (allikakood) huvi pakkuda kellelegi.

Tahaksin mĂ€rkida, et koodi kirjutati rangelt hariduslikel eesmĂ€rkidel. „Murdmiseks” ja muuks tehtud see tahtlikult mitte eriti mugavaks.

Ma ei teinud trĂŒkkplatset, sest selleks, et valmis plaate juhtmega joota, kulus 1,5-2 tundi.

Ja kui seda teha, siis ei tuleks kokku panna valmis plaatidest, vaid eraldi komponentidest. Siis oleks mÔÔtmed veel vÀiksemad.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster