Wifi-rekin jolastu ESP32n

Wifi-rekin jolastu ESP32n

WiFi sareak aztertzeko poltsikoko tresna bat egiteko ideia eman zidana izan zen Artikulu hau.

Eskerrik asko ideiagatik. Ez nuen ezer egiteko.

Lan guztiak zaletasun baten barruan egin ziren, ondo pasatzeko eta sareko teknologien arloan nire ezagutzak zabaltzeko helburuarekin. Poliki-poliki, astean 1..4 ordu, urte honen hasieratik.
Ez nuen erabilera praktikorik aurreikusi. Horiek. Hau EZ da hackerren tresna.

Momentuz, aurreikusitako funtzionalitate guztiak funtzionatzen ari dira. Iturri guztiak, guztiz prest muntatzeko, hemen argitaratua. Muntatzeko argibideak eta abar ere badaude. Ohar honetan, ez dut github-en argitaratutako informazioa bikoiztuko. Bakarrik deskribatzea beharrezkotzat jotzen dudana bakarrik esango dizut.

Nire iritzia “tresna unibertsala”ri buruz eta ESP32 aukeratzearen arrazoia

Ez dut egia denik aldarrikatzen. Bakoitzak berea du. Nire hardware aukeraketa justifikatzen saiatuko naiz.

Artikuluan proposatuta Linux (hasieran Raspberry Pi) + "periferikoak" konbinazio baten erabilera kasua kontrolagailu moduan (STM32) + CC1110 (8051 nukleoa) eta bertan posible dena sartzeko plana (125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?) ez zitzaidan egokia iruditu. Hala ere, proiektu hau Pribatua eta itxia izango dela ematen du (flipper-zero github "Erakunde honek ez du biltegi publikorik") eta hardware ez oso arruntera joan da.

Agian oker nago, eta etorkizunean egileek software iturriak publikoki eskuragarri jarriko dituzte. Baina ez bada, orduan ez nuke horrelako hardwarerik erosiko iturburu-koderik gabe.

Nire eskakizunak "tresna"rako

Kutxa txikia izan behar da (zenbat eta txikiagoa hobeto).

Beraz:

  • Ez da bateria integratua behar. Wifi-rekin lan egiten duzunean > 100 mA-ko korrontearekin, integratutako bateria handia izango da edo ez du asko iraungo. Hori dela eta, utzi "kutxa" botere-banku estandar batekin elikatzen. Dena den, beti daukat power bank bat poltsikoan/kotxean.
  • Mantendu Linux "kutxa" bat tresnak barruan, urte askotan zehar hizkuntza guztietan idatzia Pantaila txiki batekin eta kontrol-botoien multzo eskas batekin, ez du zentzurik. Emaitzak ordenagailu eramangarri arrunt batean ikusi/prozesatu daitezke teklatu eta pantaila osoarekin.
  • Osagaiak erraz eskura daitezke eta oso ezagunak izan behar dira (SDK eskuragarri, adibide eta dokumentazio ugari).

Ondorioz, niretzat aukera nabaria zen - ESP32.

Ekintza egitera bultzatu ninduen artikuluan adierazitako zeregin guztietarako, nahikoa da ESP32ren gaitasunak. Nahiz eta oraindik egin nahi dudan gehien:

  • Jolastu Bluetooth bidez.
  • Jolastu 433mHz-ko gamarekin hardware sinpleenarekin (anplitude-modulazioa soilik, behar praktikoetarako nahikoa dena).

Hegan ukenduan ESP32n

  • ESP32 SDK (IDF) traketsa da.
  • Funtzionalitate batzuk (WiFi pila, adibidez) iturburu-koderik gabe datoz liburutegi estatiko muntatuen moduan.
  • 5gHz-ko banda ez da onartzen eta WiFi-rekin lan egitean muga eta trakets batzuk daude.

Baina prezio/tamainak guztiz konpentsatzen ditu gabezia horiek.

Softwarearen funtzionalitate nagusia

Funtzionalitatea eta nire iritzia labur deskribatuko ditut...

Ezarpenak kudeatzea eta fitxategiak kargatzea SDtik

Kanpoko kontrol guztiak Web orri soil baten bidez egiten dira, menuko elementu bereizi batean abiarazita. ESP32 WiFi AP moduan abiarazten da eta orri bat bistaratzen du IP helbide finko batean.

ESP32 nukleoak nahiko azkarrak diren arren, esperimentuek erakutsi dutenez, integratutako Web zerbitzuaren aldibereko funtzionamendua eta, adibidez, bideratzaile modua ez dira oso bateragarriak. Beraz, ez dago kontrol dinamikorik eta orria ez dago beste modu guztietan erabilgarri.
Gainera, kontrol dinamikoa ez da beharrezkoa ikerketa helburuetarako.

Beacon paketeekin lan egiteko modua

Moduak hutsalak dira eta ez oso interesgarriak. "Posible delako" egina. Egiaztatzeko.
Espressif adibide ofizialetan badira adibideak.

AP zerrenda eskaneatzeko modua.
Egia esan, edozein smartphonek egin dezake hau.
Beno, modu honetan AP zerrenda gordeko da.
Baliza spammera.
ESP32 ezkutuko SSID eta ausazko MAC batekin AP gisa hasten da eta [beacon frame] bidaltzen hasten da aurrez sortutako SSID zerrenda baten arabera (eskuz sortua edo lehenago lortutako AP zerrenda eskaneatuz)

WiFi paketeen sniff modua

Espressifeko garatzaileek aplikazio-softwarearen gaitasuna gehitu dute WiFi pakete guztiak "airean hegan" jasotzeko deia itzultzeko funtzioaren bidez. Egia esan, guztiak ez, kanal finko baterako modua soilik ezar dezakezu eta.

Denbora-murrizketa oso zorrotzak ezartzen dira deia itzultzeko funtzio bat prozesatzeko. Honek ez badu arazorik sortzen estatistika-bilketa modu sinplean, orduan SD txarteleko PCAP fitxategiak grabatzeko moduan moldatu behar izan dut, grabazioa memorian eta semaforoetan ilara baten bidez antolatuz. Dei-itzulera deitzen duen prozesua nukleo batean exekutatzen den berezitasuna kontuan hartuta, eta beste batean SDan idazten duen prozesua.

“Aire zaratatsuan”, pakete batzuk galtzen dira (ez dago lekurik ilaran eta baztertzen dira), baina arratsaldean apartamentu baten “aire” tipikoarekin (5..7 AP ikusgarritasunaren barruan), PCAPn grabatzen paketerik galdu gabe osatu da.

Gainera, PCAP monitorizatzeko eta grabatzeko, paketeen goiburuetako MAC zerrendan oinarritutako iragazketa modu bat dago.

Esate baterako, klub batean/kafetegi batean pertsona baten itxuraren jarraipena egin dezakezu bera sartu edo bistan agertu baino lehen. Jende gutxik desgaitzen du WiFi eta konexio automatikoak ezagutzen diren APetarako. (Orain itzaltzen ari naiz..)

Wireshark-en grabatutako trafikoa ikustea hezigarria eta interesgarria da mapak ulertzeko; denak funtzionatzen du.

Deauth paketeekin lan egiteko modua

Lehenespenez, pakete hauek bidaltzea debekatuta dago iturbururik gabe datorren libnet80211.a liburutegian. Baina erraza da konpontzea bit pare bat doituz. Hasieran zalantzan jarri nintzen adabakia argitaratzea merezi ote zuen. Baina desautentifikazio-markak eskaneatzeko modua aktibatuta leku ezberdinetan ibili ondoren, pentsatu nuen: "zer demontre". Gainera, esp8266-n pakete horien entrega ez dago itxita eta github-en muntaiak daude esp8266rako.

Leku askotan (ez dut esango non) metodo honen bidez nahi ez diren AP-ak kentzea erabiltzen da. Eta hauek ez dira "bullys"...

Eta harritu egin nintzen, gainera, nire telefonotik nire Interneteko banaketak leku batzuetan funtzionatzen ez zuelako...

Horrelako paketeen kopurua eta RSSI jarraitzeko modua oso erabilgarria da "ezkerreko AP-ek non ez duten gustatzen" ulertzeko.

bideratzaile modua

Ezaugarri hau da, ziurrenik, aztertzeko interesgarriena.

ESP32-k STA + SoftAP moduan aldibereko funtzionamendua onartzen du. Hori dela eta, NAT bideratzaile klasiko bat inplementa dezakezu bertan.

Sare-pila laguntzeko, Espressifek lwip liburutegiaren fork bat erabiltzen du (ia aldatu gabe).

Baina, lehenespenez, eraikuntza estandarrean, esp-lwip liburutegiak ez du 'ap' (SoftAP) eta 'st' (STA) netif interfazeen arteko birbidalketarik ematen.

Noski, NAT gabe egin dezakezu, baina arazo bat dago aldi berean bi STA edo gehiago 'ap' interfazera konektatzeko eta IP helbideak 'st' sare interfazetik 'ap'era sinkronizatzeko. Beraz, zailtasunek ez dute merezi eta errazagoa da NAT bidez.

Gainera, martin-ger-en esp-lwip fork bat dago, IP4rako NAT inplementazio sinple bat gehitzen duena.

Eskuak kosmetiko hutsa berregiteko azkura zeuden arren (nire ustez, proiektuaren sardexkarik gabe errazagoa zen, baina LWIP bidezHOOK muntaian definitutako funtzioak), baina alferkeria izan da nagusi eta martin-ger-en aukera dagoen moduan erabiltzen da.

Bideratzaile moduan, sarrerako eta irteerako IP4 trafikoa ikusten da.

Bereziki, honako hau ateratzen da pantailan bistaratzeko eta estatistikak fitxategi batean biltzeko:

  • SoftAP ESP32-ra konektatu den gailuaren izena (DHCP paketeak)
  • SoftAP ESP53-ra konektatutako gailu bateko DNS eskaeren URLa (UDP 32 ataka).

Gainera, trafikoaren grabaketa PCAP fitxategi batean gaitu dezakezu.

Modu hau oso erabilgarria da, adibidez, zure telefonoak sarera zer bidaltzen duen eta nora doan ulertzeko, adibidez.

Modu hau erabiltzeko beste modu batzuk pentsa ditzakezu, softAP ESP32 sarrerako eta irteerako trafikoa sareko interfaze mailan guztiz kontrolatzeko gaitasuna kontuan hartuta: Ehernet goiburua (destMAC[6]+srcMAC[6]+type[2]) + karga erabilgarria (IP4, IP6, DCHP, etab. mota).

Printzipioz, ESP32-k nahiko ondo egiten du WiFi->WiFi bideratzaile funtzioari, trafiko arruntetik atzerapen berezirik gabe igaroz. Subjektiboki, ESP32ko bideratzaile baten bidez konektatutako telefono baten atzerapenak ez dira nabaritzen.

Zoritxarrez, Espressif APIak ez du SoftAP EPS32-ra konektatutako MAC iragazkia ezartzeko gaitasunik. Horren ordez, "agur" esatea proposatzen da (esp_wifi_deauth_sta) "nahi ez diren" dagoeneko konektatuta dauden STAei.

Konektatutako STAetarako MAC-en iragazketa esp_wifi_deauth_sta() deiaren bidez egin behar zen

Ondorioz

ESP32rekin lan egiteko esparruan ezer berririk asmatu ez nuen arren, agian emaitza (iturburu kodea) interesgarria izango da norbaitentzat.

Kontuan izan nahi dut kodea hezkuntza-helburuetarako soilik idatzi dela. "Hacking" egiteko, etab., nahita ez zen oso erosoa egin.

Ez nuen zirkuitu inprimatuko plakarik egin, 1.5-2 ordu behar izan baitzituen amaitutako zapiak alanbrez soldatzeko.

Eta egiten baduzu, muntatu behar duzu ez prest dauden oholetatik, osagai indibidualetatik baizik. Orduan dimentsioak are txikiagoak izango dira.

Iturria: www.habr.com

Gehitu iruzkin berria