Играње со Wifi на ESP32

Играње со Wifi на ESP32

Она што ми даде идеја да направам џебна алатка за анализа на WiFi мрежи беше Оваа статија.

Им благодариме за идејата. Едноставно немав што да правам.

Целата работа беше направена како дел од хоби со цел да се забавувам и да го проширам моето знаење во областа на мрежните технологии. Полека, 1..4 часа неделно, од почетокот на оваа година.
Не планирав никаква практична употреба. Оние. Ова НЕ е хакерска алатка.

Во моментов функционира целата планирана функционалност. Сите извори, целосно подготвени за склопување, објавено овде. Има и инструкции за склопување итн. Во оваа белешка, нема да ги дуплирам информациите објавени на github. Ќе ви кажам само она што сметам дека е неопходно да се опише одделно.

Мое мислење за „универзалната алатка“ и причината за изборот на ESP32

Не тврдам дека сум вистина. Секој има свое. Ќе се обидам да го оправдам мојот избор на хардвер.

Предложено во статијата случајот на употреба на комбинација од Linux (првично Raspberry Pi) + „периферни уреди“ во форма на контролер (STM32) + CC1110 (8051 јадро) и планот да се натрупа сè што е можно таму (125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?) не ми се чинеше соодветни. Сепак, овој проект се чини дека ќе остане приватен и затворен (flipper-zero github „Оваа организација нема јавни складишта“) и отиде кон не многу вообичаен хардвер.

Можеби грешам и во иднина авторите ќе ги направат изворите на софтверот јавно достапни. Но, ако не, тогаш не би купил таков хардвер без изворниот код.

Моите барања за „алатката“

Кутијата треба да биде мала (колку е помала, толку подобро).

Затоа:

  • Не е потребна вградена батерија. Со струја > 100 mA кога работите со Wifi, вградената батерија или ќе биде голема или нема да трае долго. Затоа, нека „кутијата“ се напојува со стандардна банка за напојување. Како и да е, секогаш имам power bank во џеб/автомобил.
  • Чувајте „кутија“ на Линукс со алатки внатре, пишувано во текот на многу години на сите јазици Со мал екран и слаб сет на контролни копчиња, нема смисла. Резултатите може да се гледаат/обработуваат на обичен лаптоп со целосна тастатура и екран.
  • Компонентите треба да бидат лесно достапни и широко познати (достапна SDK, многу примери и документација).

Како резултат на тоа, за мене, изборот беше очигледен - ESP32.

За сите задачи наведени во статијата што ме поттикнаа да преземам акција, можностите на ESP32 се сосема доволни. Иако најмногу што сакам да направам е:

  • Играјте наоколу со Bluetooth.
  • Играјте наоколу со опсегот од 433 mHz со наједноставниот хардвер (само модулација на амплитуда, што е доволно за практични потреби).

Летај во маст во ESP32

  • ESP32 SDK (IDF) е малку несмасна.
  • Некои од функционалноста (оџакот WiFi, на пример) доаѓаат без изворен код во форма на собрани статични библиотеки.
  • Опсегот од 5 gHz не е поддржан и има одредени ограничувања и несмасност во работата со WiFi.

Но, цената/големината целосно ги компензира овие недостатоци.

Главната функционалност на софтверот

Накратко ќе ја опишам функционалноста и моето мислење за...

Управување со поставките и поставување датотеки од SD

Целата надворешна контрола се врши преку едноставна веб-страница, лансирана во посебна ставка од менито. ESP32 започнува во режим на WiFi AP и прикажува страница на фиксна IP адреса.

Иако јадрата ESP32 се доста брзи, како што покажаа експериментите, истовременото работење на вградената веб-услуга и, на пример, режимот на рутерот не се многу компатибилни. Затоа, нема динамична контрола и страницата не е достапна во сите други режими.
Покрај тоа, динамичката контрола не е потребна за истражувачки цели.

Начин на работа со Beacon пакети

Режимите се банални и не многу интересни. Направено „затоа што е можно“. За проверка.
Има примери во официјалните примери на Espressif.

Режим на скенирање на список со АП.
Всушност, секој паметен телефон може да го направи ова.
Па, во овој режим, списокот со АП ќе биде зачуван.
Спамер на светилникот.
ESP32 започнува како AP со скриен SSID и случаен MAC и почнува да испраќа [beacon frame] според претходно креирана листа на SSID (создадена рачно или добиена порано со скенирање на листата на AP)

Режим на душкање на WiFi пакети

Програмерите на Espressif додадоа можност за апликативен софтвер да ги прима сите WiFi пакети „летаат во воздух“ преку функцијата за повратен повик. Всушност, не сите, бидејќи можете да го поставите режимот само за еден фиксен канал.

Се наметнуваат многу строги временски ограничувања за обработка на функцијата за повратен повик. Ако ова не предизвикува проблеми за едноставниот режим на собирање статистика, тогаш за режимот за снимање датотеки PCAP на SD-картичката морав да нескопосникувам, организирајќи го снимањето преку редица во меморијата и семафорите. Имајќи ја предвид особеноста дека процесот на повикување на повратен повик работи на едно јадро, а процесот што запишува на SD во друго.

За време на „бучен воздух“, некои пакети се губат (нема место во редот и се фрлаат), но со типичен „воздух“ на стан во вечерните часови (5..7 АП во рамките на видливост), снимање во PCAP е завршен без загуба на пакети.

Дополнително, за следење и снимање на PCAP, постои режим на филтрирање базиран на списокот MAC во заглавијата на пакетите.

На пример, можете да го следите изгледот на некоја личност во клуб/кафуле уште пред да влезе или да се појави на повидок. Малкумина оневозможуваат WiFi и автоматско поврзување со познати АП. (Сега го исклучувам..)

Гледањето снимен сообраќај во Wireshark е едукативно и интересно за разбирање на мапите - сето тоа функционира.

Режим за работа со Deauth пакети

Стандардно, испраќањето на овие пакети е забрането во библиотеката libnet80211.a, која доаѓа без извори. Но, лесно е да се поправи со дотерување неколку битови. Отпрвин се сомневав дали вреди да се објави лепенка. Но, откако шетав на различни места со вклучен режим на скенирање рамка за деавтентикација, си помислив: „што, по ѓаволите“. Покрај тоа, во esp8266 испораката на овие пакети не е затворена и има склопови на github за esp8266.

На многу места (нема да кажам каде) се користи сузбивање на несакани АП преку овој метод. И ова не се „насилници“...

И јас бев изненаден што мојата интернет дистрибуција од мојот телефон не работеше на некои места ...

Режимот за следење на бројот и RSSI на таквите пакети е многу корисен за да се разбере „каде тоа не им се допаѓа на левите АП“.

режим на рутер

Оваа карактеристика е веројатно најинтересната од сите за истражување.

ESP32 поддржува истовремена работа во режимот STA + SoftAP. Затоа, можете да имплементирате класичен NAT рутер на него.

За поддршка на мрежниот стек, Espressif користи вилушка (практично непроменета) од библиотеката lwip.

Но, стандардно, во стандардната верзија, библиотеката esp-lwip не обезбедува проследување помеѓу netif интерфејсите 'ap' (SoftAP) и 'st' (STA).

Се разбира, можете да го направите без NAT, но има проблем со истовремено поврзување на две или повеќе STA на интерфејсот „ap“ и синхронизирање на IP адреси од мрежниот интерфејс „st“ до „ap“. Значи, тешкотиите не вредат и полесно е преку NAT.

Покрај тоа, постои вилушка esp-lwip од martin-ger, која додава едноставна имплементација на NAT за IP4.

Иако рацете ми се чешаа за да го преправам чисто козметички (според мене, полесно беше без вилушка на проектот, но преку LWIPКУКА функции дефинирани при склопување), но преовладуваше мрзеливоста и опцијата од мартингер се користи како што е.

Во режимот на рутер, се гледа влезниот и појдовниот IP4 сообраќај.

Особено, следново е извлечено од него за прикажување на екранот и собирање статистика во датотека:

  • Име на уредот што се поврза на SoftAP ESP32 (DHCP пакети)
  • URL од барања за DNS (UDP порта 53) од уред поврзан на SoftAP ESP32.

Дополнително, можете да овозможите снимање на сообраќај во датотека PCAP.

Овој режим е многу корисен, на пример, за да се разбере, на пример, што испраќа вашиот телефон до мрежата и каде оди.

Можете да размислите за други начини за користење на овој режим, земајќи ја предвид можноста за целосно контролирање на softAP ESP32 дојдовниот и појдовниот сообраќај на ниво на мрежен интерфејс: заглавие на Ehernet (destMAC[6]+srcMAC[6]+тип[2]) + носивост (IP4, IP6, DCHP, итн. тип).

Во принцип, ESP32 доста добро се справува со функцијата WiFi->WiFi рутер, поминувајќи низ нормален сообраќај без никакви посебни одложувања. Субјективно, доцнењата во телефонот поврзан преку рутер на ESP32 не се забележливи.

За жал, Espressif API нема можност да постави филтер за MAC поврзан со SoftAP EPS32. Наместо тоа, се предлага да се каже „збогум“ (esp_wifi_deauth_sta) на веќе поврзаните STA кои се „не посакувани“.

Филтрирањето по MAC за поврзаните STA мораше да се направи преку повикот esp_wifi_deauth_sta()

Во заклучок

Иако не најдов ништо ново во рамките на работата со ESP32, можеби резултатот (изворниот код) ќе биде интересен за некого.

Би сакал да забележам дека кодот е напишан исклучиво за едукативни цели. За „хакирање“ итн., намерно беше направено не многу погодно.

Не направив печатено коло бидејќи беа потребни 1.5-2 часа за лемење на готовите марами со жица.

И ако го направите, треба да го соберете не од готови табли, туку од поединечни компоненти. Тогаш димензиите ќе бидат уште помали.

Извор: www.habr.com

Додадете коментар