Leikur með Wifi á ESP32

Leikur með Wifi á ESP32

Það sem gaf mér hugmyndina um að búa til vasaverkfæri til að greina WiFi net var Þessi grein.

Þakka þeim fyrir hugmyndina. Ég hafði bara ekkert að gera.

Öll vinna var unnin sem hluti af áhugamáli í þeim tilgangi að skemmta mér og auka þekkingu mína á sviði nettækni. Hægt og rólega, 1..4 tímar á viku, frá áramótum.
Ég ætlaði ekki að nota neina hagnýta notkun. Þeir. Þetta er EKKI tól tölvuþrjóta.

Í augnablikinu er öll fyrirhuguð virkni að virka. Allar heimildir, alveg tilbúnar til samsetningar, sett hér inn. Það eru líka samsetningarleiðbeiningar osfrv. Í þessari athugasemd mun ég ekki afrita upplýsingarnar sem birtar eru á github. Ég mun aðeins segja þér það sem ég tel nauðsynlegt að lýsa sérstaklega.

Mín skoðun á „alhliða tólinu“ og ástæðan fyrir því að velja ESP32

Ég segist ekki vera sannleikurinn. Hver og einn hefur sitt. Ég mun reyna að rökstyðja val mitt á vélbúnaði.

Lagt er til í greininni notkunartilvikið af samsetningu af Linux (upphaflega Raspberry Pi) + "jaðartæki" í formi stjórnanda (STM32) + CC1110 (8051 kjarna) og áætlunin um að troða öllu mögulegu þarna inn (125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?) virtist ekki henta mér. Hins vegar, þetta verkefni Það lítur út fyrir að það verði áfram lokað og lokað (flipper-núll github „Þessi stofnun hefur engar opinberar geymslur.“) og fór í átt að ekki mjög algengum vélbúnaði.

Kannski hef ég rangt fyrir mér og í framtíðinni munu höfundar gera hugbúnaðarheimildirnar aðgengilegar almenningi. En ef ekki, þá myndi ég ekki kaupa svona vélbúnað án frumkóðans.

Kröfur mínar fyrir "tólið"

Kassinn ætti að vera lítill (því minni því betra).

Því:

  • Engin innbyggð rafhlaða þarf. Með straum > 100 mA þegar unnið er með Wifi verður innbyggða rafhlaðan annað hvort stór eða endist ekki lengi. Láttu því „kassann“ vera knúinn af venjulegum rafmagnsbanka. Allavega er ég alltaf með rafmagnsbanka í vasanum/bílnum.
  • Haltu Linux „kassa“ með verkfærum inni, skrifað í mörg ár á öllum tungumálum Með litlum skjá og fátæku setti af stjórntökkum er ekkert vit í því. Hægt er að skoða/vinna niðurstöðurnar á venjulegri fartölvu með fullu lyklaborði og skjá.
  • Íhlutir ættu að vera aðgengilegir og víða þekktir (tiltækt SDK, mörg dæmi og skjöl).

Þar af leiðandi, fyrir mig, var valið augljóst - ESP32.

Fyrir öll þau verkefni sem tilgreind eru í greininni sem kölluðu mig til að grípa til aðgerða, eru hæfileikar ESP32 alveg nægjanlegir. Þó það sem mig langar mest að gera er:

  • Leiktu þér með Bluetooth.
  • Leiktu þér með 433mHz sviðið með einfaldasta vélbúnaðinum (aðeins amplitude mótun, sem er nóg fyrir hagnýtar þarfir).

Fljúgðu í hausinn í ESP32

  • ESP32 SDK (IDF) er nokkuð klaufalegt.
  • Sumir af virkninni (WiFi stafla, til dæmis) kemur án frumkóða í formi samsettra truflana bóka.
  • 5gHz bandið er ekki stutt og það eru nokkrar takmarkanir og klaufaskapur við að vinna með WiFi.

En verðið/stærðin bætir alveg upp þessa annmarka.

Helstu hugbúnaðarvirkni

Ég mun lýsa virkninni í stuttu máli og áliti mínu um...

Stjórna stillingum og hlaða upp skrám frá SD

Öll ytri stjórnun fer fram í gegnum einfalda vefsíðu sem er opnuð í sérstöku valmyndaratriði. ESP32 byrjar í WiFi AP ham og birtir síðu á fastri IP tölu.

Þrátt fyrir að ESP32 kjarnarnir séu nokkuð hraðir, eins og tilraunir hafa sýnt, er samtímis rekstur innbyggðu vefþjónustunnar og til dæmis leiðarstillingin ekki mjög samhæfð. Þess vegna er engin kraftmikil stjórn og síðan er ekki tiltæk í öllum öðrum stillingum.
Þar að auki er ekki þörf á kraftmikilli stjórn í rannsóknarskyni.

Vinnuaðferð með Beacon pakka

Stillingarnar eru banale og ekki mjög áhugaverðar. Búið til "af því að það er mögulegt." Til athugunar.
Það eru dæmi í opinberu Espressif-dæmunum.

Skannahamur fyrir AP lista.
Reyndar getur hvaða snjallsími sem er gert þetta.
Jæja, í þessum ham verður AP listinn vistaður.
Beacon spammer.
ESP32 byrjar sem AP með falið SSID og handahófskennt MAC og byrjar að senda [beacon ramma] í samræmi við fyrirfram búið til lista yfir SSID (búið til handvirkt eða fengið fyrr með því að skanna AP listann)

WiFi pakka sniffing ham

Espressif forritarar hafa bætt við möguleikanum fyrir forritahugbúnað til að taka á móti öllum WiFi pakka „fljúga í loftinu“ í gegnum svarhringingaraðgerðina. Reyndar ekki allir, þar sem þú getur aðeins stillt ham fyrir eina fasta rás.

Mjög strangar tímatakmarkanir eru settar á vinnslu svarhringingaraðgerðar. Ef þetta veldur ekki vandamálum fyrir einfaldan tölfræðisöfnunarham, þá þurfti ég að fikta við PCAP skráarupptökuhaminn á SD-kortinu, skipuleggja upptökuna í gegnum biðröð í minni og semaphores. Að teknu tilliti til sérkennisins að ferlið sem kallar á svarhringingu keyrir á einum kjarna og ferlið sem skrifar til SD í öðrum.

Í „hávaðalofti“ glatast sumir pakkar (það er ekkert pláss í biðröðinni og þeim er hent), en með dæmigerðu „lofti“ íbúðar á kvöldin (5..7 AP innan skyggni), upptaka í PCAP er lokið án pakkataps.

Að auki, fyrir PCAP eftirlit og upptöku, er síunarhamur byggður á MAC listanum í pakkahausunum.

Til dæmis geturðu fylgst með útliti manns á klúbbi/kaffihúsi áður en hann kemur inn eða birtist í augsýn. Fáir slökkva á WiFi og sjálfvirkum tengingum við þekkt AP. (Ég er að slökkva núna..)

Að skoða skráða umferð í Wireshark er fræðandi og áhugavert til að skilja kort - þetta virkar allt.

Hamur til að vinna með deauth pakka

Sjálfgefið er að senda þessa pakka er bannað í libnet80211.a bókasafninu, sem kemur án heimilda. En það er auðvelt að laga það með því að laga nokkra bita. Í fyrstu efaðist ég um hvort það væri þess virði að senda plástur. En eftir að hafa gengið um mismunandi staði með kveikt á skönnunarstillingu fyrir afvottunarramma hugsaði ég: "hvað í fjandanum." Þar að auki, í esp8266 er afhendingu þessara pakka ekki lokað og það eru samsetningar á github fyrir esp8266.

Á mörgum stöðum (ég mun ekki segja hvar) er bæling á óæskilegum AP með þessari aðferð notuð. Og þetta eru ekki "hrekkjusvín"...

Og ég var líka hissa á því að internetdreifingin mín úr símanum mínum virkaði ekki sums staðar...

Hátturinn til að rekja fjölda og RSSI slíkra pakka er mjög gagnlegur til að skilja „hvar vinstri AP líkar það ekki.

leiðarstillingu

Þessi eiginleiki er líklega það áhugaverðasta af öllu að skoða.

ESP32 styður samtímis notkun í STA + SoftAP ham. Þess vegna geturðu innleitt klassískan NAT leið á það.

Til að styðja við netstaflann notar Espressif gaffal (nánast óbreytt) á lwip bókasafninu.

En sjálfgefið, í stöðluðu byggingunni, veitir esp-lwip bókasafnið ekki framsendingu á milli netif viðmótanna 'ap' (SoftAP) og 'st' (STA).

Auðvitað geturðu gert það án NAT, en það er vandamál með að tengja tvö eða fleiri STA samtímis við 'ap' viðmótið og samstilla IP tölur frá 'st' netviðmótinu við 'ap'. Svo erfiðleikarnir eru ekki þess virði og það er auðveldara í gegnum NAT.

Þar að auki er gaffal esp-lwip frá Martin-ger, sem bætir við einfaldri útfærslu á NAT fyrir IP4.

Þó að hendurnar mínar hafi klæjað að endurgera það eingöngu snyrtilega (að mínu mati var það auðveldara án gaffals verkefnisins, en í gegnum LWIPHOOK aðgerðir skilgreindar við samsetningu), en leti ríkti og valkosturinn frá Martin-ger er notaður eins og hann er.

Í beinarham er inn- og útleið IP4 umferð skoðuð.

Sérstaklega er eftirfarandi dregið úr því til að birtast á skjánum og safna tölfræði í skrá:

  • Nafn tækisins sem tengdist SoftAP ESP32 (DHCP pakkar)
  • Slóð frá DNS beiðnum (UDP tengi 53) frá tæki sem er tengt við SoftAP ESP32.

Að auki geturðu virkjað umferðarupptöku í PCAP skrá.

Þessi stilling er mjög gagnleg, til dæmis til að skilja hvað síminn þinn sendir á netið og hvert hann fer.

Þú getur hugsað þér aðrar leiðir til að nota þessa stillingu, að teknu tilliti til getu til að stjórna softAP ESP32 fullkomlega inn- og út umferð á netviðmótsstigi: Ehernet haus (destMAC[6]+srcMAC[6]+type[2]) + burðargeta (IP4, IP6, DCHP, o.fl. gerð).

Í grundvallaratriðum tekst ESP32 nokkuð vel við WiFi->WiFi leiðaraðgerðina, sem fer í gegnum venjulega umferð án sérstakra tafa. Huglægt séð eru tafir á síma sem tengdur er í gegnum beini á ESP32 ekki áberandi.

Því miður hefur Espressif API ekki getu til að stilla síu fyrir MAC tengt við SoftAP EPS32. Þess í stað er lagt til að segja „bless“ (esp_wifi_deauth_sta) við þegar tengdir STA sem eru „ekki óskað“.

Sía eftir MAC fyrir tengda STA þurfti að gera í gegnum esp_wifi_deauth_sta() símtalið

Að lokum

Þó að ég hafi ekki komist með neitt nýtt innan ramma þess að vinna með ESP32, gæti niðurstaðan (frumkóði) verið áhugaverð fyrir einhvern.

Ég vil taka það fram að kóðinn var eingöngu skrifaður í fræðsluskyni. Fyrir „hakk“ o.s.frv., var það vísvitandi gert ekki mjög þægilegt.

Ég bjó ekki til prentplötu vegna þess að það tók 1.5-2 klukkustundir að lóða klútana með vír.

Og ef þú gerir það þarftu að setja það saman ekki úr tilbúnum borðum, heldur úr einstökum íhlutum. Þá verða stærðirnar enn minni.

Heimild: www.habr.com

Bæta við athugasemd