
MĂ”te luua taskuanalĂŒĂŒsi tööriist WiFi-vĂ”rkude jaoks tuli mulle .
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, . 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".
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, 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
