Kucheza na Wifi kwenye ESP32

Kucheza na Wifi kwenye ESP32

Kilichonipa wazo la kutengeneza zana ya mfukoni ya kuchambua mitandao ya WiFi ilikuwa Makala hii.

Asante kwao kwa wazo. Sikuwa na la kufanya.

Kazi zote zilifanywa kama sehemu ya hobby kwa madhumuni ya kujifurahisha na kupanua ujuzi wangu katika uwanja wa teknolojia ya mtandao. Polepole, saa 1..4 kwa wiki, tangu mwanzo wa mwaka huu.
Sikupanga matumizi yoyote ya vitendo. Wale. Hiki SI chombo cha mdukuzi.

Kwa sasa, utendaji wote uliopangwa unafanya kazi. Vyanzo vyote, tayari kabisa kwa mkusanyiko, imechapishwa hapa. Pia kuna maagizo ya kusanyiko, nk Katika kumbuka hii, sitarudia maelezo yaliyotumwa kwenye github. Nitakuambia tu kile ninachoona ni muhimu kuelezea tofauti.

Maoni yangu juu ya "chombo cha ulimwengu wote" na sababu ya kuchagua ESP32

Sidai kuwa ukweli. Kila mtu ana yake. Nitajaribu kuhalalisha uchaguzi wangu wa vifaa.

Imependekezwa katika makala kesi ya matumizi ya mchanganyiko wa Linux (hapo awali Raspberry Pi) + "viungo" katika mfumo wa kidhibiti (STM32) + CC1110 (8051 msingi) na mpango wa kubana kila kitu kinachowezekana huko (125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?) haikuonekana kufaa kwangu. Hata hivyo, mradi huu Inaonekana itasalia kuwa ya faragha na imefungwa (flipper-zero github "Shirika hili halina hazina za umma.") na ilienda kwenye vifaa visivyo vya kawaida sana.

Labda nimekosea, na katika siku zijazo waandishi watafanya vyanzo vya programu kupatikana kwa umma. Lakini ikiwa sivyo, basi singenunua kipande kama hicho cha vifaa bila nambari ya chanzo.

Mahitaji yangu ya "chombo"

Sanduku linapaswa kuwa ndogo (ndogo bora).

Kwa hivyo:

  • Haihitaji betri iliyojengewa ndani. Kwa sasa > 100 mA unapofanya kazi na Wifi, betri iliyojengewa ndani itakuwa kubwa au haidumu kwa muda mrefu. Kwa hiyo, basi "sanduku" lipatiwe na benki ya kawaida ya nguvu. Hata hivyo, mimi huwa na benki ya umeme kwenye mfuko/gari langu.
  • Weka "sanduku" la Linux na zana ndani, imeandikwa kwa miaka mingi katika lugha zote Kwa skrini ndogo na seti ndogo ya vitufe vya kudhibiti, haina maana. Matokeo yanaweza kutazamwa/kuchakatwa kwenye kompyuta ndogo ya kawaida na kibodi kamili na skrini.
  • Vipengele vinapaswa kupatikana kwa urahisi na kujulikana sana (SDK inayopatikana, mifano mingi na nyaraka).

Kama matokeo, kwangu, chaguo lilikuwa dhahiri - ESP32.

Kwa kazi zote zilizotajwa katika kifungu ambacho kilinisukuma kuchukua hatua, uwezo wa ESP32 unatosha kabisa. Ingawa zaidi ninachotaka kufanya ni:

  • Cheza karibu na Bluetooth.
  • Cheza karibu na masafa ya 433mHz na maunzi rahisi zaidi (urekebishaji wa amplitude pekee, ambao unatosha kwa mahitaji ya vitendo).

Kuruka katika marashi katika ESP32

  • ESP32 SDK (IDF) ni tata kwa kiasi fulani.
  • Baadhi ya utendakazi (safu ya WiFi, kwa mfano) huja bila msimbo wa chanzo katika mfumo wa maktaba tuli zilizokusanywa.
  • Mkanda wa 5gHz hautumiki na kuna vikwazo na uchangamfu katika kufanya kazi na WiFi.

Lakini bei/ukubwa hufidia kabisa mapungufu haya.

Utendaji kuu wa programu

Nitaelezea kwa ufupi utendaji na maoni yangu kuhusu...

Kusimamia mipangilio na kupakia faili kutoka kwa SD

Udhibiti wote wa nje unafanywa kupitia ukurasa rahisi wa Wavuti, uliozinduliwa katika kipengee tofauti cha menyu. ESP32 huanza katika modi ya WiFi AP na huonyesha ukurasa kwenye anwani ya IP isiyobadilika.

Ingawa cores za ESP32 ni za haraka sana, kama majaribio yameonyesha, utendakazi wa wakati mmoja wa huduma ya Wavuti iliyojengwa na, kwa mfano, hali ya kipanga njia haiendani sana. Kwa hiyo, hakuna udhibiti wa nguvu na ukurasa haupatikani katika njia nyingine zote.
Aidha, udhibiti wa nguvu hauhitajiki kwa madhumuni ya utafiti.

Njia ya kufanya kazi na vifurushi vya Beacon

Njia ni banal na sio ya kuvutia sana. Imetengenezwa "kwa sababu inawezekana." Kwa kuangalia.
Kuna mifano katika mifano rasmi ya Espressif.

Hali ya kuchanganua orodha ya AP.
Kweli, smartphone yoyote inaweza kufanya hivyo.
Kweli, katika hali hii orodha ya AP itahifadhiwa.
Beacon spammer.
ESP32 huanza kama AP ikiwa na SSID iliyofichwa na MAC nasibu na huanza kutuma [fremu ya beacon] kulingana na orodha iliyoundwa awali ya SSID (iliyoundwa kwa mikono au kupatikana mapema kwa kuchanganua orodha ya AP)

Hali ya kunusa pakiti ya WiFi

Watengenezaji wa Espressif wameongeza uwezo wa programu ya programu kupokea pakiti zote za WiFi "zinazoruka angani" kupitia kitendaji cha kurudi nyuma. Kweli sio yote, kwani unaweza kuweka tu hali ya kituo kimoja kilichowekwa.

Vizuizi vikali sana vya muda vimewekwa katika kuchakata kitendakazi cha kupiga simu tena. Ikiwa hii haileti shida kwa hali rahisi ya ukusanyaji wa takwimu, basi kwa hali ya kurekodi faili ya PCAP kwenye kadi ya SD ilibidi nicheze, nikiandaa kurekodi kupitia foleni kwenye kumbukumbu na semaphores. Kwa kuzingatia upekee kwamba mchakato wa kupiga simu tena unaendeshwa kwenye msingi mmoja, na mchakato unaoandikia SD katika mwingine.

Wakati wa "hewa yenye kelele", baadhi ya pakiti hupotea (hakuna nafasi kwenye foleni na hutupwa), lakini kwa "hewa" ya kawaida ya ghorofa jioni (5..7 APs ndani ya kuonekana), kurekodi katika PCAP. imekamilika bila upotezaji wa pakiti.

Zaidi ya hayo, kwa ufuatiliaji na kurekodi kwa PCAP, kuna hali ya kuchuja kulingana na orodha ya MAC katika vichwa vya pakiti.

Kwa mfano, unaweza kufuatilia mwonekano wa mtu kwenye klabu/mkahawa kabla hata hajaingia au kuonekana mbele yake. Watu wachache huzima WiFi na miunganisho ya kiotomatiki kwa AP zinazojulikana. (Ninaizima sasa ..)

Kuangalia trafiki iliyorekodiwa huko Wireshark ni ya kuelimisha na ya kuvutia kwa kuelewa ramani - yote hufanya kazi.

Hali ya kufanya kazi na vifurushi vya deauth

Kwa chaguomsingi, kutuma vifurushi hivi ni marufuku katika maktaba ya libnet80211.a, ambayo huja bila vyanzo. Lakini ni rahisi kurekebisha kwa kurekebisha bits kadhaa. Mwanzoni nilitilia shaka ikiwa inafaa kutuma kiraka. Lakini baada ya kuzunguka sehemu mbalimbali huku hali ya kuchanganua fremu ya uthibitishaji ikiwa imewashwa, nilifikiri: "mambo gani." Kwa kuongezea, katika esp8266 uwasilishaji wa vifurushi hivi haujafungwa na kuna makusanyiko kwenye github ya esp8266.

Katika maeneo mengi (sitasema wapi) ukandamizaji wa AP zisizohitajika kupitia njia hii hutumiwa. Na hawa sio "wanyanyasaji"...

Na pia nilishangaa kuwa usambazaji wangu wa Mtandao kutoka kwa simu yangu haukufanya kazi katika sehemu zingine ...

Njia ya kufuatilia nambari na RSSI ya pakiti kama hizo ni muhimu sana kuelewa "ambapo AP za kushoto hazipendi."

mode ya router

Kipengele hiki pengine ndicho cha kuvutia zaidi kuliko vyote kuchunguza.

ESP32 inasaidia utendakazi wa wakati mmoja katika hali ya STA + SoftAP. Kwa hiyo, unaweza kutekeleza router ya NAT ya classic juu yake.

Ili kuauni mrundikano wa mtandao, Espressif hutumia uma (haijabadilika) wa maktaba ya lwip.

Lakini, kwa chaguo-msingi, katika muundo wa kawaida, maktaba ya esp-lwip haitoi usambazaji kati ya miingiliano ya netif 'ap' (SoftAP) na 'st' (STA).

Bila shaka, unaweza kuifanya bila NAT, lakini kuna tatizo la kuunganisha STA mbili au zaidi kwa kiolesura cha 'ap' na kusawazisha anwani za IP kutoka kiolesura cha 'st' hadi 'ap'. Kwa hivyo ugumu haufai na ni rahisi kupitia NAT.

Zaidi ya hayo, kuna uma esp-lwip kutoka martin-ger, ambayo inaongeza utekelezaji rahisi wa NAT kwa IP4.

Ingawa mikono yangu ilikuwa inawasha kuifanya tena kwa urembo (kwa maoni yangu, ilikuwa rahisi bila uma wa mradi, lakini kupitia LWIP.HOOK kazi zilizofafanuliwa wakati wa mkusanyiko), lakini uvivu ulitawala na chaguo kutoka kwa martin-ger hutumiwa kama ilivyo.

Katika hali ya kipanga njia, trafiki ya IP4 inayoingia na inayotoka inatazamwa.

Hasa, ifuatayo hutolewa kutoka kwake ili kuonyeshwa kwenye skrini na kukusanya takwimu kwenye faili:

  • Jina la kifaa kilichounganishwa kwa SoftAP ESP32 (pakiti za DHCP)
  • URL kutoka kwa maombi ya DNS (UDP port 53) kutoka kwa kifaa kilichounganishwa kwenye SoftAP ESP32.

Zaidi ya hayo, unaweza kuwezesha kurekodi trafiki kwa faili ya PCAP.

Hali hii ni muhimu sana, kwa mfano, kuelewa, kwa mfano, kile simu yako inatuma kwenye mtandao na wapi inakwenda.

Unaweza kufikiria njia zingine za kutumia modi hii, ukizingatia uwezo wa kudhibiti kikamilifu trafiki laini yaAP ESP32 inayoingia na kutoka katika kiwango cha kiolesura cha mtandao: Ehernet header (destMAC[6]+srcMAC[6]+type[2]) + upakiaji wa malipo (IP4, IP6, DCHP, nk. aina).

Kimsingi, ESP32 inashughulika vizuri na kazi ya kipanga njia cha WiFi->WiFi, ikipitia trafiki ya kawaida bila ucheleweshaji wowote maalum. Kimsingi, ucheleweshaji katika simu iliyounganishwa kupitia kipanga njia kwenye ESP32 hauonekani.

Kwa bahati mbaya, API ya Espressif haina uwezo wa kuweka kichujio cha MAC iliyounganishwa kwenye SoftAP EPS32. Badala yake, inapendekezwa kusema "kwaheri" (esp_wifi_deauth_sta) kwa STA ambazo tayari zimeunganishwa ambazo "hazitakiwi".

Kuchuja kwa MAC kwa STA zilizounganishwa ilibidi kufanywe kupitia simu ya esp_wifi_deauth_sta()

Kwa kumalizia

Ingawa sikuja na kitu chochote kipya ndani ya mfumo wa kufanya kazi na ESP32, labda matokeo (msimbo wa chanzo) yatapendeza mtu.

Ningependa kutambua kwamba kanuni iliandikwa kwa madhumuni ya elimu pekee. Kwa "hacking", nk, ilifanywa kwa makusudi sio rahisi sana.

Sikutengeneza bodi ya mzunguko iliyochapishwa kwa sababu ilichukua masaa 1.5-2 ili kuuza mitandio iliyokamilishwa na waya.

Na ikiwa unafanya hivyo, unahitaji kuikusanya sio kutoka kwa bodi zilizopangwa tayari, lakini kutoka kwa vipengele vya mtu binafsi. Kisha vipimo vitakuwa vidogo zaidi.

Chanzo: mapenzi.com

Kuongeza maoni