Game karo Wifi ing ESP32

Game karo Wifi ing ESP32

Sing menehi ide kanggo nggawe alat saku kanggo nganalisa jaringan WiFi yaiku artikel iki.

Thanks kanggo wong-wong mau kanggo idea. Aku mung ora duwe apa-apa.

Kabeh karya wis rampung minangka bagéan saka hobi kanggo tujuan seneng-seneng lan ngembangaken kawruh ing bidang teknologi jaringan. Alon-alon, 1..4 jam seminggu, wiwit awal taun iki.
Aku ora ngrancang panggunaan praktis. Sing. Iki dudu alat peretas.

Saiki, kabeh fungsi sing direncanakake bisa digunakake. Kabeh sumber, rampung siap kanggo perakitan, dikirim kene. Ana uga instruksi perakitan, dsb. Ing cathetan iki, aku ora bakal duplikat informasi sing dikirim ing github. Aku mung bakal pitutur marang kowe apa aku nganggep perlu kanggo njlèntrèhaké kapisah.

Pendapatku babagan "alat universal" lan alasan kanggo milih ESP32

Aku ora ngaku sing bener. Saben uwong duwe dhewe. Aku bakal nyoba kanggo mbenerake pilihan hardware.

Disaranake ing artikel kasebut kasus panggunaan kombinasi Linux (pisanan Raspberry Pi) + "peripheral" ing wangun controller (STM32) + CC1110 (8051 inti) lan rencana kanggo cram kabeh bisa ing kono (125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?) koyone ora cocok kanggo kula. Nanging, proyek iki Katon bakal tetep pribadi lan ditutup (flipper-zero github "Organisasi iki ora duwe repositori umum.") Lan pindhah menyang hardware sing ora umum.

Mbok menawa aku salah, lan ing mangsa ngarep penulis bakal nyedhiyakake sumber piranti lunak kanggo publik. Nanging yen ora, banjur aku ora bakal tuku kuwi Piece saka hardware tanpa kode sumber.

Persyaratanku kanggo "alat"

Kothak kudu cilik (sing cilik luwih apik).

Mulane:

  • Ora perlu baterei sing dibangun. Kanthi arus> 100 mA nalika nggarap Wifi, baterei sing dibangun bakal gedhe utawa ora tahan suwe. Mulane, supaya "kothak" didhukung dening bank daya standar. Oalah, aku tansah duwe bank daya ing kanthong / mobil.
  • Simpen "kotak" Linux kanthi alat ing njero, ditulis liwat pirang-pirang taun ing kabeh basa Kanthi layar cilik lan tombol kontrol sing sithik, ora ana gunane. Asil bisa dideleng / diproses ing laptop normal kanthi keyboard lan layar lengkap.
  • Komponen kudu gampang diakses lan dikenal akeh (SDK kasedhiya, akeh conto lan dokumentasi).

Akibaté, kanggo kula, pilihan iku ketok - ESP32.

Kanggo kabeh tugas sing kasebut ing artikel sing nyebabake aku tumindak, kemampuan ESP32 cukup cukup. Senajan sing paling aku isih pengin:

  • Muter-muter nganggo Bluetooth.
  • Muter-muter nganggo kisaran 433mHz kanthi hardware sing paling gampang (mung modulasi amplitudo, sing cukup kanggo kabutuhan praktis).

Fly ing ointment ing ESP32

  • ESP32 SDK (IDF) rada kikuk.
  • Sawetara fungsi (WiFi tumpukan, contone) teka tanpa kode sumber ing wangun perpustakaan statis nglumpuk.
  • Pita 5gHz ora didhukung lan ana sawetara watesan lan clumsiness nalika nggarap WiFi.

Nanging rega / ukuran rampung ngimbangi kekurangan kasebut.

Fungsi piranti lunak utama

Aku bakal njlèntrèhaké kanthi ringkes fungsi lan pendapatku babagan ...

Ngatur setelan lan ngunggah file saka SD

Kabeh kontrol external wis rampung liwat kaca Web prasaja, dibukak ing item menu kapisah. ESP32 diwiwiti ing mode WiFi AP lan nampilake kaca ing alamat IP tetep.

Sanajan inti ESP32 cukup cepet, kaya sing ditampilake eksperimen, operasi simultan saka layanan Web sing dibangun lan, contone, mode router ora kompatibel banget. Mulane, ora ana kontrol dinamis lan kaca ora kasedhiya ing kabeh mode liyane.
Kajaba iku, kontrol dinamis ora dibutuhake kanggo tujuan riset.

Mode nggarap paket Beacon

Mode sing banal lan ora menarik banget. Digawe "amarga bisa." Kanggo mriksa.
Ana conto ing conto Espressif resmi.

Mode pemindaian dhaptar AP.
Bener, smartphone apa wae bisa nindakake iki.
Ya, ing mode iki dhaptar AP bakal disimpen.
Beacon spammer.
ESP32 diwiwiti minangka AP kanthi SSID sing didhelikake lan MAC acak lan wiwit ngirim [bingkai beacon] miturut dhaptar SSID sing wis digawe (digawe kanthi manual utawa dipikolehi sadurunge kanthi mindhai dhaptar AP)

Mode sniffing paket WiFi

Pangembang Espressif wis nambah kemampuan kanggo piranti lunak aplikasi kanggo nampa kabeh paket WiFi "mabur ing udhara" liwat fungsi callback. Bener ora kabeh, amarga sampeyan mung bisa nyetel mode siji saluran tetep.

Watesan wektu sing ketat banget dileksanakake kanggo ngolah fungsi callback. Yen iki ora nyebabake masalah kanggo mode koleksi statistik prasaja, banjur kanggo mode rekaman file PCAP ing kertu SD aku kudu tinker, ngatur rekaman liwat antrian ing memori lan semaphore. Njupuk menyang akun peculiarity sing proses nelpon callback mlaku ing siji inti, lan proses sing nulis kanggo SD ing liyane.

Sajrone "udhara rame", sawetara paket ilang (ora ana papan ing antrian lan dibuwang), nanging kanthi "udhara" khas apartemen ing wayah sore (5..7 AP ing visibilitas), ngrekam ing PCAP wis rampung tanpa mundhut paket.

Kajaba iku, kanggo ngawasi lan ngrekam PCAP, ana mode nyaring adhedhasar dhaptar MAC ing header paket.

Contone, sampeyan bisa nglacak penampilan wong ing klub / kafe sadurunge dheweke mlebu utawa katon. Sawetara wong mateni WiFi lan sambungan otomatis menyang AP sing dikenal. (Aku mateni saiki..)

Ndeleng lalu lintas sing direkam ing Wireshark minangka pendidikan lan menarik kanggo mangerteni peta - kabeh bisa digunakake.

Mode kanggo nggarap paket deauth

Kanthi gawan, ngirim paket iki dilarang ing libnet80211.a perpustakaan, kang teka tanpa sumber. Nanging gampang kanggo ndandani kanthi ngapiki sawetara bit. Ing kawitan aku mangu apa iku worth posting patch. Nanging sawise mlaku-mlaku ing macem-macem papan kanthi mode pemindaian pigura deauthentication, aku mikir: "Apa sih." Kajaba iku, ing esp8266 pangiriman paket kasebut ora ditutup lan ana rakitan ing github kanggo esp8266.

Ing akeh panggonan (Aku ora bakal ngomong ngendi) dipatèni APs bayangan liwat cara iki digunakake. Lan iki dudu "pengganggu" ...

Lan aku uga kaget amarga distribusi Internet saka telpon ora bisa digunakake ing sawetara panggonan...

Mode kanggo nelusuri nomer lan RSSI saka paket kasebut migunani banget kanggo ngerti "ing endi AP kiwa ora seneng."

mode router

Fitur iki mbokmenawa paling menarik kanggo njelajah.

ESP32 ndhukung operasi simultan ing mode STA + SoftAP. Mulane, sampeyan bisa ngleksanakake router NAT klasik.

Kanggo ndhukung tumpukan jaringan, Espressif nggunakake garpu (sakbenere ora owah) saka perpustakaan lwip.

Nanging, kanthi standar, ing bangunan standar, perpustakaan esp-lwip ora nyedhiyakake penerusan antarane antarmuka netif 'ap' (SoftAP) lan 'st' (STA).

Mesthi, sampeyan bisa nindakake iku tanpa NAT, nanging ana masalah karo bebarengan nyambungake loro utawa luwih STA kanggo antarmuka 'ap' lan nyinkronake alamat IP saka antarmuka jaringan 'st' kanggo 'ap'. Dadi kangelan ora worth iku lan luwih gampang liwat NAT.

Kajaba iku, ana garpu esp-lwip saka martin-ger, sing nambah implementasi NAT sing gampang kanggo IP4.

Sanajan tanganku gatel kanggo nggawe maneh kanthi kosmetik (miturut pendapatku, luwih gampang tanpa garpu proyek kasebut, nanging liwat LWIPpancing fungsi sing ditetepake sajrone perakitan), nanging kesed menang lan pilihan saka martin-ger digunakake.

Ing mode router, lalu lintas IP4 mlebu lan metu dideleng.

Utamane, ing ngisor iki diekstrak kanggo ditampilake ing layar lan ngumpulake statistik menyang file:

  • Jeneng piranti sing nyambung menyang SoftAP ESP32 (paket DHCP)
  • URL saka panjalukan DNS (port UDP 53) saka piranti sing disambungake menyang SoftAP ESP32.

Kajaba iku, sampeyan bisa ngaktifake rekaman lalu lintas menyang file PCAP.

Mode iki migunani banget, contone, kanggo ngerti, contone, apa telpon dikirim menyang jaringan lan menyang ngendi.

Sampeyan bisa mikir cara liya kanggo nggunakake mode iki, kanthi nganggep kemampuan kanggo ngontrol lalu lintas mlebu lan metu softAP ESP32 ing tingkat antarmuka jaringan: Header Ehernet (destMAC[6]+srcMAC[6]+type[2]) + payload (tipe IP4, IP6, DCHP, lsp).

Ing asas, ESP32 copes cukup apik karo WiFi-> fungsi router WiFi, liwat lalu lintas normal tanpa wektu tundha khusus. Subyektif, telat ing telpon sing disambungake liwat router ing ESP32 ora katon.

Sayange, API Espressif ora nduweni kemampuan kanggo nyetel saringan kanggo MAC sing disambungake menyang SoftAP EPS32. Nanging, disaranake ngucapake "pamit" (esp_wifi_deauth_sta) menyang STA sing wis disambungake sing "ora dikarepake".

Nyaring dening MAC kanggo STA sing disambungake kudu ditindakake liwat telpon esp_wifi_deauth_sta ()

Ing kesimpulan

Senajan aku ora teka munggah karo apa-apa anyar ing framework nggarap ESP32, mbok menawa asil (kode sumber) bakal menarik kanggo wong.

Aku pengin Wigati sing kode iki ditulis mung kanggo tujuan pendidikan. Kanggo "hacking", lan liya-liyane, sengaja digawe ora trep banget.

Aku ora nggawe papan sirkuit dicithak amarga njupuk 1.5-2 jam kanggo solder scarves rampung karo kabel.

Lan yen sampeyan nindakake, sampeyan kudu ngumpulake ora saka papan sing wis siap, nanging saka komponen individu. Banjur dimensi bakal luwih cilik.

Source: www.habr.com

Add a comment