Lusinghi cù Wifi nantu à ESP32

Lusinghi cù Wifi nantu à ESP32

Ciò chì m'hà datu l'idea di fà un strumentu di tasca per analizà e rete WiFi era st'articulu.

Grazie à elli per l'idea. Ùn avia solu nunda à fà.

Tuttu u travagliu hè statu fattu cum'è parte di un hobby per u scopu di divertisce è espansione a mo cunniscenza in u campu di e tecnulugia di rete. Pianu pianu, 1..4 ore à settimana, da u principiu di questu annu.
Ùn aghju micca pianificatu alcun usu praticu. Quelli. Questu ùn hè micca un strumentu di pirate.

À u mumentu, tutte e funziunalità pianificate sò travagliendu. Tutte e fonti, cumplettamente pronte per l'assemblea, publicatu quì. Ci hè ancu struzzioni di assemblea, etc. In questa nota, ùn dupliceraghju micca l'infurmazioni publicate in github. Vi dicu solu ciò chì mi pare necessariu di descriverà separatamente.

U mo parè nantu à u "strumentu universale" è u mutivu di sceglie l'ESP32

Ùn dicu micca esse a verità. Ognunu hà u so propiu. Pruvaraghju di ghjustificà a mo scelta di hardware.

Pruposta in l'articulu u casu d'usu di una cumminazione di Linux (inizialmente Raspberry Pi) + "periferiche" in forma di un controller (STM32) + CC1110 (8051 core) è u pianu di cram tuttu ciò chì hè pussibule in quì (125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?) ùn pareva micca adattatu per mè. Tuttavia, stu prughjettu Sembra chì fermarà privatu è chjusu (flipper-zero github "Questa urganizazione ùn hà micca repositori publichi") è andò versu un hardware pocu cumuni.

Forse mi sbagliu, è in u futuru l'autori renderanu publicamente i fonti di u software. Ma s'ellu ùn hè micca, allora ùn aghju micca cumprà un tali pezzu di hardware senza u codice fonte.

I mo esigenze per u "strumentu"

A scatula deve esse chjuca (u più chjucu u megliu).

Dunque:

  • Nisuna batteria integrata necessaria. Cù un currente> 100 mA quandu travaglia cù Wifi, a bateria integrata serà grande o ùn durà micca longu. Dunque, lasciate chì a "scatola" sia alimentata da un bancu di putenza standard. In ogni casu, aghju sempre un bancu di energia in a mo sacchetta / vittura.
  • Mantene una "scatola" Linux cù l'arnesi in l'internu, scrittu dapoi parechji anni in tutte e lingue Cù una piccula schermu è un pocu set di buttone di cuntrollu, ùn hà micca sensu. I risultati ponu esse veduti / processati nantu à un laptop normale cù un teclatu pienu è una schermu.
  • I cumpunenti devenu esse facilmente accessibili è largamente cunnisciuti (SDK dispunibule, assai esempi è documentazione).

In u risultatu, per mè, a scelta era evidenti - ESP32.

Per tutti i travaglii dichjarati in l'articulu chì m'hà incitatu à piglià l'azzione, e capacità di l'ESP32 sò abbastanza abbastanza. Ancu se u più chì vogliu ancu fà hè:

  • Ghjucà cù Bluetooth.
  • Ghjucate cù a gamma 433mHz cù u hardware più simplice (solu modulazione di amplitude, chì hè abbastanza per i bisogni pratichi).

Fly in l'unguentu in ESP32

  • L'ESP32 SDK (IDF) hè un pocu goffa.
  • Alcune di e funziunalità (stack WiFi, per esempiu) vene senza codice fonte in forma di biblioteche statiche assemblate.
  • A banda 5gHz ùn hè micca supportata è ci sò alcune limitazioni è goffa di travaglià cù WiFi.

Ma u prezzu / taglia cumpensu cumplettamente per queste mancanza.

Funziunalità principali di u software

Descriveraghju brevemente a funziunalità è a mo opinione nantu à ...

Gestisce i paràmetri è carica i fugliali da SD

Tuttu u cuntrollu esternu hè fattu per mezu di una pagina Web simplice, lanciata in una voce di menu separata. L'ESP32 principia in modu WiFi AP è mostra una pagina à un indirizzu IP fissu.

Ancu i nuclei ESP32 sò abbastanza veloci, cum'è l'esperimenti anu dimustratu, l'operazione simultanea di u serviziu Web integratu è, per esempiu, u modu di router ùn sò micca assai cumpatibili. Dunque, ùn ci hè micca un cuntrollu dinamicu è a pagina ùn hè micca dispunibule in tutti l'altri modi.
Inoltre, u cuntrollu dinamicu ùn hè micca necessariu per scopi di ricerca.

Modu di travaglià cù i pacchetti Beacon

I modi sò banali è micca assai interessanti. Fattu "perchè hè pussibule". Per verificà.
Ci sò esempi in l'esempii ufficiali Espressif.

Modu di scansione di lista AP.
In fatti, ogni smartphone pò fà questu.
Eppo, in questu modu, a lista AP serà salvata.
Beacon spammer.
L'ESP32 cumencia cum'è un AP cù un SSID oculatu è un MAC aleatoriu è cumencia à mandà [frame di faro] secondu una lista pre-creata di SSID (create manualmente o acquistate prima scannendu a lista AP)

Modu di sniffing di pacchetti WiFi

I sviluppatori di Espressif anu aghjustatu l'abilità di u software di l'applicazione per riceve tutti i pacchetti WiFi "volanu in l'aria" attraversu a funzione di callback. In realtà micca tutti, postu chì pudete stabilisce u modu solu per un canale fissu.

Limitazioni di tempu assai strette sò imposte à u processu di una funzione di callback. Se questu ùn causa micca prublemi per u modu simplice di cullizzioni di statistiche, allora per u modu di registrazione di u schedariu PCAP nantu à a carta SD, aghju avutu à tinker, urganizà a registrazione per una fila in memoria è semafori. Pigliendu in contu a peculiarità chì u prucessu chì chjama u callback corre nantu à un core, è u prucessu chì scrive à SD in un altru.

Durante "l'aria rumoroso", certi pacchetti sò persi (ùn ci hè micca spaziu in a fila è sò scartati), ma cù un "aria" tipicu di un appartamentu à a sera (5..7 AP in visibilità), arregistramentu in PCAP. hè cumpletu senza perdita di pacchetti.

Inoltre, per u monitoraghju è a registrazione PCAP, ci hè un modu di filtru basatu annantu à a lista MAC in l'intestazione di i pacchetti.

Per esempiu, pudete seguità l'aspettu di una persona in un club / caffè prima ch'ellu entre ancu o appare in vista. Pochi persone disattivanu WiFi è cunnessione automatica à AP cunnisciuti. (O spegneraghju avà..)

Vede u trafficu registratu in Wireshark hè educativu è interessante per capiscenu e carte - tuttu funziona.

Modu per travaglià cù pacchetti di morte

Per automaticamente, l'inviu di sti pacchetti hè pruibitu in a libreria libnet80211.a, chì vene senza fonti. Ma hè faciule di riparà tweaking un paru di bit. À u principiu, dubitava se valeva a pena di publicà patch. Ma dopu avè caminatu intornu à diversi lochi cù u modu di scansione di frame di deauthentication attivatu, aghju pensatu: "chì diavolo". Inoltre, in esp8266 a consegna di questi pacchetti ùn hè micca chjusa è ci sò assemblee in github per esp8266.

In parechji lochi (ùn diceraghju micca induve) hè aduprata a suppressione di AP indesiderati per mezu di stu metudu. È questi ùn sò micca "bullies" ...

È era ancu sorpresu chì a mo distribuzione Internet da u mo telefunu ùn hà micca travagliatu in certi lochi...

U modu per seguità u numeru è RSSI di tali pacchetti hè assai utile per capisce "induve l'AP di manca ùn piace micca".

modu router

Questa funzione hè probabilmente u più interessante di tutti per spiegà.

ESP32 supporta l'operazione simultanea in modu STA + SoftAP. Dunque, pudete implementà un router NAT classicu nantu à questu.

Per sustene a pila di rete, Espressif usa una furchetta (virtualmente invariata) di a biblioteca lwip.

Ma, per difettu, in a custruzzione standard, a biblioteca esp-lwip ùn furnisce micca l'invio trà l'interfacce netif 'ap' (SoftAP) è 'st' (STA).

Di sicuru, pudete fà senza NAT, ma ci hè un prublema per cunnette simultaneamente dui o più STA à l'interfaccia 'ap' è sincronizà l'indirizzi IP da l'interfaccia di rete 'st' à 'ap'. Allora e difficultà ùn valenu micca a pena è hè più faciule attraversu NAT.

Inoltre, ci hè un fork esp-lwip da martin-ger, chì aghjunghje una implementazione simplice di NAT per IP4.

Ancu s'è e mo mani eranu prurigite per rimettà puramente estetica (in u mo parè, era più faciule senza forchetta di u prugettu, ma attraversu LWIPganciu funzioni definite durante l'assemblea), ma a pigrizia hà prevatu è l'opzione da martin-ger hè aduprata cum'è.

In u modu di router, u trafficu IP4 in entrata è in uscita hè vistu.

In particulare, i seguenti sò estratti da ellu per a visualizazione nantu à u screnu è a cullizzioni di statistiche in un schedariu:

  • Nome di u dispusitivu chì hà cunnessu à SoftAP ESP32 (pacchetti DHCP)
  • URL da e dumande DNS (portu UDP 53) da un dispositivu cunnessu à SoftAP ESP32.

Inoltre, pudete attivà a registrazione di u trafficu à un schedariu PCAP.

Stu modu hè assai utile, per esempiu, per capisce, per esempiu, ciò chì u vostru telefunu manda à a reta è induve và.

Pudete pensà à altre manere di utilizà stu modu, tenendu in contu a capacità di cuntrullà cumpletamente u trafficu in entrata è in uscita di softAP ESP32 à u livellu di l'interfaccia di a rete: Ehernet header (destMAC[6]+srcMAC[6]+type[2]) + payload (IP4, IP6, DCHP, etc.).

In principiu, l'ESP32 face abbastanza bè cù a funzione di u router WiFi->WiFi, passendu per u trafficu normale senza ritardi speciali. Subjettivamenti, i ritardi in un telefunu cunnessu via un router in un ESP32 ùn sò micca notevuli.

Sfortunatamente, l'API Espressif ùn hà micca a capacità di stabilisce un filtru per MAC cunnessu à SoftAP EPS32. Invece, hè prupostu di dì "addiu" (esp_wifi_deauth_sta) à i STA digià cunnessi chì sò "micca desiderati".

U filtru per MAC per i STA cunnessi deve esse fattu attraversu a chjama esp_wifi_deauth_sta()

In cunclusioni

Ancu s'ellu ùn aghju micca avutu nunda di novu in u quadru di travaglià cù ESP32, forsi u risultatu (codice fonte) serà interessante per qualchissia.

Vogliu nutà chì u codice hè statu scrittu solu per scopi educativi. Per "pirate", etc., hè stata deliberatamente fatta micca assai còmuda.

Ùn aghju micca fattu un circuitu stampatu perchè hà pigliatu l'ora di 1.5-2 per saldà e sciarpe finite cù filu.

E se fate, avete bisognu di assemblellu micca da tavulini pronti, ma da cumpunenti individuali. Allora e dimensioni seranu ancu più chjuche.

Source: www.habr.com

Add a comment