Jocs amb Wifi a ESP32

Jocs amb Wifi a ESP32

La idea de fer una eina de butxaca per analitzar les xarxes WiFi em va impulsar aquest article.

Gràcies a ells per la idea. Simplement no tenia res a fer.

Tot el treball es va fer com un hobby amb la finalitat de divertir-me i ampliar els meus coneixements en el camp de les tecnologies de xarxa. A poc a poc, 1..4 hores setmanals, des de principis d'aquest any.
L'ús de l'aplicació no estava previst. Aquells. NO és una eina de pirates informàtics.

De moment, totes les funcionalitats previstes funcionen. Totes les fonts, completament llestes per al muntatge, publicat aquí. També hi ha instruccions de muntatge, etc. En aquesta nota, no duplicaré la informació publicada a github. Només us diré el que considero necessari descriure per separat.

La meva opinió sobre l'"eina universal" i el motiu per triar l'ESP32

No reclamo la veritat. Cadascú té el seu. Intentaré justificar la meva elecció del "ferro".

Suggerit a l'article l'opció d'utilitzar una combinació de Linux (originalment Raspberry Pi) + "perifèrics" en forma de controlador (STM32) + CC1110 (nucli 8051) i un pla per amuntegar tot el que és possible (125 kHz, NFC, 433 mHz, USB, iButton, bluetooth, ?) no em va semblar adequat. Malgrat això, aquest projecte sembla que romandrà privat i tancat (flipper-zero github "Aquesta organització no té repositoris públics") i es va dirigir cap a un maquinari no massa comú.

Potser m'equivoco i, en el futur, els autors exposaran el codi font del programari en el domini públic. Però si no, no compraria una peça de ferro sense els codis font.

Els meus requisits d'eina

La caixa ha de ser petita (com més petita millor).

Per tant:

  • No es necessita bateria incorporada. Amb un corrent > 100 mA quan es treballa amb Wifi, la bateria incorporada serà gran o no durarà gaire. Per tant, deixeu que la "caixa" sigui alimentada per un banc d'energia estàndard. Tot i així, sempre tinc un banc d'energia a la butxaca/cotxe.
  • Mantingueu-vos dins de la "caixa" de Linux amb eines, escrit durant molts anys en totes les llengües en presència d'una pantalla petita i un conjunt escàs de botons de control, no té sentit. Els resultats es poden veure/processar en un ordinador portàtil normal amb un teclat i una pantalla complets.
  • Els components haurien d'estar disponibles i àmpliament coneguts (SDK disponible, molts exemples i documentació).

Com a resultat, per a mi, l'elecció era òbvia: ESP32.

Per a totes les tasques indicades a l'article, que em van impulsar a prendre mesures, les capacitats de l'ESP32 són suficients. Tot i que el que més vull fer és això:

  • Juga amb Bluetooth.
  • Juga amb el rang de 433 mHz amb el maquinari més senzill (només modulació d'amplitud, que és suficient per a necessitats pràctiques).

Vola a la pomada en ESP32

  • SDK (IDF) ESP32 és una mica maldestre.
  • Part de la funcionalitat (la pila WiFi, per exemple) ve sense codis font en forma de biblioteques estàtiques ensamblades.
  • La banda de 5 GHz no és compatible i hi ha algunes limitacions i maldestreses en treballar amb WiFi.

Però el preu / mida compensa completament aquestes mancances.

La funcionalitat principal del programari

Descriuré breument la funcionalitat i la meva opinió sobre...

Gestioneu la configuració i pengeu fitxers des de SD

Tot el control extern es fa a través d'una pàgina web senzilla llançada en un element de menú independent. ESP32 s'inicia en mode WiFi AP i mostra una pàgina amb una adreça IP fixa.

Tot i que els nuclis ESP32 són força ràpids, però, com han demostrat els experiments, el funcionament simultani del servei web integrat i, per exemple, el mode d'encaminador no es barregen bé. Per tant, no hi ha control dinàmic i en tots els altres modes la pàgina no està disponible.
A més, el control dinàmic no és necessari per a la investigació.

Treballant amb paquets Beacon

Els modes són banals i poc interessants. Fet "perquè pots". Per comprovar.
Hi ha exemples als exemples oficials d'Espressif.

Mode d'exploració de la llista AP.
De fet, qualsevol telèfon intel·ligent ho pot fer.
Bé, en aquest mode, es desarà la llista d'AP.
Spammer de balises.
ESP32 comença com un AP amb un SSID ocult i un MAC aleatori i comença a enviar [marc de balisa] en una llista de SSID creada prèviament (creada manualment o obtinguda abans escanejant la llista AP)

Mode d'olor de WiFi

Els desenvolupadors d'Espressif han afegit la possibilitat que el programari d'aplicacions rebi tots els paquets WiFi "volant a l'aire" mitjançant una funció de devolució de trucada. De fet, no tots, ja que només podeu configurar el mode per a un canal fix.

S'imposen límits de temps molt estrictes en el processament d'una trucada de funció de devolució de trucada. Si per al mode de recopilació d'estadístiques simples això no causa problemes, llavors per al mode d'escriptura d'un fitxer PCAP a una targeta SD, vaig haver de retocar, organitzant l'enregistrament mitjançant una cua de memòria i semàfors. Tenint en compte la peculiaritat que el procés que crida la devolució de trucada gira en un nucli i el procés que escriu a SD en un altre.

Amb un "aire sorollós" es perden alguns paquets (no hi ha espai a la cua i es descarten), però amb un "aire" típic d'un apartament al vespre (5..7 AP a la vista), escrivint a PCAP té temps per completar-se sense perdre paquets.

A més, per al seguiment i enregistrament de PCAP, hi ha un mode de filtrat basat en la llista MAC de les capçaleres dels paquets.

Per exemple, podeu fer un seguiment de l'aparició d'una persona en un club/cafeteria, fins i tot abans que entrés o aparegués al camp de visió. Poques persones desactiven WiFi i connexions automàtiques als AP coneguts. (Ara l'estic apagant..)

Veure el trànsit registrat a Wireshark és informatiu i interessant per entendre els mapes, tot funciona.

Mode de funcionament amb paquets de deauth

Per defecte, l'enviament d'aquests paquets està prohibit a la biblioteca libnet80211.a, que ve sense fonts. Però això és fàcil d'aturar corregint un parell d'esquers. Al principi, vaig dubtar si valia la pena pujar el pedaç. Però després de caminar per diferents llocs amb el mode d'escaneig [marc de desautenticació] activat, vaig pensar: "què dimonis". A més, en esp8266 l'enviament d'aquests paquets no està tancat i hi ha muntatges a github sota esp8266.

En molts llocs (no diré on) s'utilitza la supressió AP no desitjada mitjançant aquest mètode. I no són "hooligans"...

I encara em va sorprendre que fos la meva distribució d'Internet des del meu telèfon que no funcionava en llocs...

El mode de seguiment del nombre i RSSI d'aquests paquets és molt útil per entendre "on no els agrada als AP de l'esquerra".

mode d'encaminador

Aquesta característica és probablement la més interessant de totes per explorar.

ESP32 admet el funcionament simultània en mode STA + SoftAP. Per tant, és possible implementar-hi un encaminador NAT clàssic.

Per donar suport a la pila de xarxes, Espressif utilitza una bifurcació (pràcticament sense canvis) de la biblioteca lwip.

Però, per defecte, a l'assemblatge estàndard, a la biblioteca esp-lwip, no hi ha cap reenviament entre les interfícies netif 'ap' (SoftAP) i 'st' (STA).

Per descomptat, podeu fer-ho sense NAT, però hi ha un problema amb la connexió simultània de dos o més STA a la interfície 'ap' i la sincronització d'adreces IP des de la interfície de xarxa 'st' a 'ap'. Així que la complexitat no val la pena i és més fàcil mitjançant NAT.

A més, hi ha una forquilla esp-lwip de marting-ger que afegeix una implementació senzilla de NAT per a IP4.

Tot i que les meves mans em van picar per refer-ho purament estèticament (al meu entendre, era més fàcil sense un projecte de forquilla, però mitjançant LWIPHOOK funcions definides per compilació), però la mandra va guanyar i la versió marting-ger s'utilitza tal qual.

En mode d'encaminador, es visualitza el trànsit IP4 entrant i sortint.

En particular, s'extreu d'ell per mostrar-lo a la pantalla i recopilar estadístiques en un fitxer:

  • Nom del dispositiu connectat a SoftAP ESP32 (paquets DHCP)
  • URL de consultes DNS (port UDP 53) des d'un dispositiu connectat a SoftAP ESP32.

A més, podeu habilitar l'enregistrament del trànsit en un fitxer PCAP.

Aquest mode és molt útil, per exemple, per entendre, per exemple, què envia el vostre telèfon a la xarxa i cap a on va.

Podeu pensar en altres maneres d'utilitzar aquest mode, tenint en compte la capacitat de controlar completament programàticament el trànsit entrant i sortint de SoftAP ESP32 a nivell d'interfície de xarxa: capçalera Ehernet (destMAC[6]+srcMAC[6]+type[2]) + càrrega útil (tipus IP4, IP6, DCHP, etc.).

En principi, l'ESP32 s'adapta força bé a la funció d'encaminador WiFi->WiFi, passant el trànsit regular per si mateix sense gaire demora. Subjectivament, els retards en un telèfon connectat mitjançant un encaminador a l'ESP32 no es noten.

Malauradament, a l'API Espressif no hi ha manera d'establir un filtre per MAC connectat a SoftAP EPS32. En lloc d'això, es recomana dir "adéu" (esp_wifi_deauth_sta) a les STA ja connectades que "no es volen".

El filtratge per MAC per a les STA connectades s'havia de fer mitjançant una trucada a esp_wifi_deauth_sta()

en conclusió

Tot i que no vaig plantejar res de nou en el marc del treball amb ESP32, potser algú s'interessarà pel resultat (fonts).

M'agradaria assenyalar que el codi va ser escrit únicament amb finalitats educatives. Per a "pirateig", etc., es va fer especialment no molt convenient.

No vaig fer una placa de circuit imprès, perquè va trigar entre 1.5 i 2 hores a soldar les bufandes acabades amb un cable.

I si ho feu, haureu de muntar-lo no a partir de taulers ja fets, sinó de components individuals. Aleshores les dimensions seran encara més petites.

Font: www.habr.com

Afegeix comentari