Gaming mei Wifi op ESP32

Gaming mei Wifi op ESP32

Wat my it idee joech om in pocket-ark te meitsjen foar it analysearjen fan WiFi-netwurken wie dit artikel.

Mei tank oan harren foar it idee. Ik hie gewoan neat te dwaan.

Alle wurk waard dien as ûnderdiel fan in hobby mei it doel om wille te hawwen en myn kennis út te wreidzjen op it mêd fan netwurktechnologyen. Stadich, 1,.4 oeren yn 'e wike, sûnt begjin dit jier.
Ik hie gjin praktysk gebrûk fan plan. Dy. Dit is NET in hacker-ark.

Op it stuit wurket alle plande funksjonaliteit. Alle boarnen, folslein klear foar montage, pleatst hjir. Der binne ek montage ynstruksjes, ensfh Yn dizze notysje, Ik sil net duplicate de ynformaasje pleatst op github. Ik sil jo allinich fertelle wat ik nedich fyn om apart te beskriuwen.

Myn miening oer it "universele ark" en de reden foar it kiezen fan 'e ESP32

Ik beweare net dat ik de wierheid bin. Elk hat syn eigen. Ik sil besykje te rjochtfeardigjen myn kar fan hardware.

Foarsteld yn it artikel it gebrûk fan in kombinaasje fan Linux (yn earste ynstânsje Raspberry Pi) + "peripherals" yn 'e foarm fan in controller (STM32) + CC1110 (8051 kearn) en it plan om dêr alles mooglik yn te proppen (125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?) like net geskikt foar my. Lykwols, dit projekt it liket derop dat it privee en sluten sil bliuwe (flipper-nul github "Dizze organisaasje hat gjin iepenbiere repositories.") en gie nei net heul gewoane hardware.

Miskien bin ik ferkeard, en yn 'e takomst meitsje de auteurs de softwareboarnen iepenbier beskikber. Mar sa net, dan soe ik sa'n stik hardware net keapje sûnder de boarnekoade.

Myn easken foar it "ark"

De doaze moat lyts wêze (hoe lytser hoe better).

Dêrom:

  • Gjin ynboude batterij nedich. Mei in stroom> 100 mA by it wurkjen mei Wifi, sil de ynboude batterij grut wêze of net lang duorje. Lit dêrom de "doaze" wurde oandreaun troch in standert powerbank. Hoe dan ek, ik haw altyd in powerbank yn myn bûse/auto.
  • Hâld in Linux "box" mei ark binnen, skreaun oer in protte jierren yn alle talen Mei in lyts skerm en in meager set kontrôleknoppen makket it gjin sin. De resultaten kinne wurde besjoen / ferwurke op in normale laptop mei in folslein toetseboerd en skerm.
  • Komponinten moatte maklik tagonklik en breed bekend wêze (beskikbere SDK, in protte foarbylden en dokumintaasje).

As gefolch, foar my wie de kar fanselssprekkend - ESP32.

Foar alle taken neamd yn it artikel dy't my frege om aksje te nimmen, binne de mooglikheden fan 'e ESP32 frij genôch. Hoewol it meast dat ik noch wol dwaan is:

  • Boartsje mei Bluetooth.
  • Spielje mei it 433mHz-berik mei de ienfâldichste hardware (allinich amplitudemodulaasje, wat genôch is foar praktyske behoeften).

Flean yn 'e salve yn ESP32

  • De ESP32 SDK (IDF) is wat onhandig.
  • Guon fan 'e funksjonaliteit (WiFi-stapel, bygelyks) komt sûnder boarnekoade yn' e foarm fan gearstalde statyske bibleteken.
  • De 5gHz-band wurdt net stipe en d'r binne wat beheiningen en ûnhandigens yn wurkjen mei WiFi.

Mar de priis / grutte kompensearret folslein foar dizze tekoarten.

Main software funksjonaliteit

Ik sil de funksjonaliteit koart beskriuwe en myn miening oer ...

Ynstellings beheare en bestannen uploade fan SD

Alle eksterne kontrôle wurdt dien fia in ienfâldige webside, lansearre yn in apart menu item. De ESP32 begjint yn WiFi AP-modus en toant in side op in fêst IP-adres.

Hoewol de ESP32-kearnen frij fluch binne, lykas eksperiminten hawwe sjen litten, binne de simultane operaasje fan 'e ynboude webtsjinst en bygelyks de routermodus net heul kompatibel. Dêrom is d'r gjin dynamyske kontrôle en is de side net beskikber yn alle oare modi.
Boppedat is dynamyske kontrôle net nedich foar ûndersyksdoelen.

Wurkwize mei Beacon-pakketten

De modi binne banaal en net heul ynteressant. Makke "omdat it mooglik is." Foar kontrôle.
D'r binne foarbylden yn 'e offisjele Espressif-foarbylden.

AP list scan modus.
Eins kin elke smartphone dit dwaan.
No, yn dizze modus sil de AP-list wurde bewarre.
Beacon spammer.
De ESP32 begjint as in AP mei in ferburgen SSID en in willekeurige MAC en begjint [beacon frame] te ferstjoeren neffens in foarôf oanmakke list mei SSID's (manueel makke of earder krigen troch it scannen fan de AP-list)

Wifi pakket sniffing modus

Espressif-ûntwikkelders hawwe de mooglikheid tafoege foar applikaasjesoftware om alle WiFi-pakketten "yn 'e loft te fleanen" te ûntfangen fia de werombelfunksje. Eins net allegear, om't jo de modus allinich kinne ynstelle foar ien fêst kanaal.

Hiel strange tiidbeperkingen wurde oplein foar it ferwurkjen fan in werombelfunksje. As dit gjin problemen feroarsaket foar de ienfâldige statistyksammelmodus, dan foar de PCAP-bestânsopnamemodus op 'e SD-kaart moast ik tink, organisearje de opname troch in wachtrige yn it ûnthâld en semafoaren. Mei it each op de eigenaardichheid dat it proses dat de callback ropt rint op ien kearn, en it proses dat skriuwt nei SD yn in oar.

Tidens "lawaaiige lucht" binne guon pakketten ferlern (d'r is gjin romte yn 'e wachtrige en se wurde wegere), mar mei in typyske "lucht" fan in appartemint yn 'e jûn (5..7 AP's binnen sichtberens), opname yn PCAP wurdt foltôge sûnder pakketferlies.

Derneist is d'r foar PCAP-monitoring en opname in filtermodus basearre op 'e MAC-list yn' e pakketkoppen.

Jo kinne bygelyks it uterlik fan in persoan yn in klup/kafee folgje foardat hy sels ynkomt of yn sicht ferskynt. In pear minsken skeakelje WiFi en automatyske ferbiningen mei bekende AP's út. (Ik skeakelje it no út..)

It besjen fan opnommen ferkear yn Wireshark is edukatyf en ynteressant foar it begripen fan kaarten - it wurket allegear.

Mode foar wurkjen mei deauth-pakketten

Standert is it ferstjoeren fan dizze pakketten ferbean yn 'e libnet80211.a-bibleteek, dy't sûnder boarnen komt. Mar it is maklik te reparearjen troch in pear bits oan te passen. Yn it earstoan twifele ik oft it it wurdich wie om patch te pleatsen. Mar nei't ik op ferskate plakken rûn rûn mei de scanmodus foar deautentikaasje frame ynskeakele, tocht ik: "wat de hel." Boppedat is yn esp8266 de levering fan dizze pakketten net sluten en binne d'r gearkomsten op github foar esp8266.

Op in protte plakken (ik sil net sizze wêr) wurdt ûnderdrukking fan net-winske AP's fia dizze metoade brûkt. En dit binne gjin "pesters" ...

En ik wie ek ferrast dat myn ynternetdistribúsje fan myn tillefoan op guon plakken net wurke ...

De modus foar it folgjen fan it oantal en RSSI fan sokke pakketten is heul nuttich om te begripen "wêr't de linker AP's it net leuk fine."

router modus

Dizze funksje is wierskynlik de meast ynteressante fan alles om te ferkennen.

ESP32 stipet simultane operaasje yn STA + SoftAP-modus. Dêrom kinne jo derop in klassike NAT-router ymplementearje.

Om de netwurkstapel te stypjen, brûkt Espressif in gabel (praktysk net feroare) fan 'e lwip-bibleteek.

Mar, standert, yn 'e standert build, leveret de esp-lwip-bibleteek gjin trochstjoering tusken de netif-ynterfaces 'ap' (SoftAP) en 'st' (STA).

Fansels kinne jo dwaan it sûnder NAT, mar der is in probleem mei in tagelyk ferbinen twa of mear STA oan de 'ap' ynterface en syngronisearje IP-adressen fan de 'st' netwurk ynterface nei 'ap'. Dat de swierrichheden binne it net wurdich en it is makliker fia NAT.

Boppedat is d'r in foarke esp-lwip fan martin-ger, dy't in ienfâldige ymplemintaasje fan NAT foar IP4 foeget.

Hoewol myn hannen jeuken om it suver kosmetysk te meitsjen (yn myn miening wie it makliker sûnder foarke fan it projekt, mar troch LWIPBAN funksjes definieare tidens de gearstalling), mar luiheid oerhearske en de opsje fan martin-ger wurdt brûkt sa't it is.

Yn routermodus wurdt ynkommende en útgeande IP4-ferkear besjoen.

Benammen it folgjende wurdt derút ekstrahearre foar werjefte op it skerm en it sammeljen fan statistiken yn in bestân:

  • Namme fan it apparaat dat ferbûn is mei SoftAP ESP32 (DHCP-pakketten)
  • URL fan DNS-oanfragen (UDP-poarte 53) fan in apparaat ferbûn mei SoftAP ESP32.

Derneist kinne jo ferkearsopname ynskeakelje nei in PCAP-bestân.

Dizze modus is heul nuttich, bygelyks om te begripen wat jo tillefoan nei it netwurk stjoert en wêr't it giet.

Jo kinne tinke oan oare manieren om dizze modus te brûken, rekken hâldend mei de mooglikheid om ynkommende en útgeande ferkear fan softAP ESP32 folslein te kontrolearjen op it nivo fan netwurkynterface: Ehernet-header (destMAC[6]+srcMAC[6]+type[2]) + lading (IP4, IP6, DCHP, ensfh type).

Yn prinsipe omgaat de ESP32 frij goed mei de WiFi->WiFi-routerfunksje, dy't troch normaal ferkear trochgiet sûnder spesjale fertragingen. Subjektyf binne fertragingen yn in tillefoan ferbûn fia in router op in ESP32 net merkber.

Spitigernôch hat de Espressif API net de mooglikheid om in filter yn te stellen foar MAC ferbûn mei SoftAP EPS32. Ynstee wurdt foarsteld om te sizzen "goodbye" (esp_wifi_deauth_sta) oan al ferbûn STAs dy't "net winske".

Filterjen troch MAC foar ferbûne STA's moast dien wurde fia de oprop esp_wifi_deauth_sta()

Yn ôfsluting

Hoewol ik yn it ramt fan wurkjen mei ESP32 neat nij kaam, miskien sil it resultaat (boarnekoade) ynteressant wêze foar immen.

Ik soe graach opmerke dat de koade is skreaun allinnich foar edukative doelen. Foar "hacking", ensfh., It waard bewust makke net hiel handich.

Ik makke gjin printe circuit board, om't it 1.5-2 oeren duorre om de fertige sjaals mei draad te solderjen.

En as jo dat dogge, moatte jo it net fan ready-made boards sammelje, mar fan yndividuele komponinten. Dan wurde de ôfmjittings noch lytser.

Boarne: www.habr.com

Add a comment