ESP32 жүйесінде Wi-Fi арқылы ойын ойнау

ESP32 жүйесінде Wi-Fi арқылы ойын ойнау

Маған WiFi желілерін талдауға арналған қалта құралын жасау идеясын тудырған нәрсе Бұл мақала.

Оларға идея үшін рахмет. Менің шаруам жоқ еді.

Барлық жұмыстар көңіл көтеру және желілік технологиялар саласындағы білімімді кеңейту мақсатында хобби ретінде жасалды. Баяу, аптасына 1..4 сағат, осы жылдың басынан бері.
Мен практикалық пайдалануды жоспарлаған жоқпын. Анау. Бұл хакерлердің құралы ЕМЕС.

Қазіргі уақытта барлық жоспарланған функциялар жұмыс істеп тұр. Барлық көздер құрастыруға толығымен дайын, осында жарияланған. Сондай-ақ құрастыру нұсқаулары және т.б. бар. Бұл жазбада мен github сайтында жарияланған ақпаратты қайталамаймын. Мен сізге бөлек сипаттауды қажет деп санайтын нәрсені ғана айтамын.

«Әмбебап құрал» және ESP32 таңдау себебі туралы менің пікірім

Мен өзімді шындық деп санамаймын. Әркімнің өз бар. Мен жабдықты таңдауымды негіздеуге тырысамын.

Мақалада ұсынылған контроллер (STM32) + CC1110 (8051 ядросы) түріндегі Linux (бастапқыда Raspberry Pi) + «перифериялық құрылғылар» комбинациясын пайдалану жағдайы және онда мүмкін болатын барлық нәрсені жинау жоспары (125 кГц, NFC, 433 мГц, USB, iButton, bluetooth, ?) маған сәйкес келмеді. Дегенмен, бұл жоба ол жеке және жабық болып қалатын сияқты («Бұл ұйымда жалпыға қолжетімді репозиторийлер жоқ» github-нөлдік).

Мүмкін мен қателескен шығармын және болашақта авторлар бағдарламалық қамтамасыз ету көздерін жалпыға қолжетімді етеді. Бірақ егер олай болмаса, мен бастапқы кодсыз мұндай жабдықты сатып алмас едім.

Менің «құралға» қойылатын талаптарым

Қорап кішкентай болуы керек (неғұрлым кішірек болса, соғұрлым жақсы).

Сондықтан:

  • Кірістірілген батарея қажет емес. Wifi желісімен жұмыс істегенде ток күші > 100 мА болса, кірістірілген батарея үлкен болады немесе ұзақ қызмет етпейді. Сондықтан, «қорапты» стандартты қуат банкі қуаттайтын болсын. Қалай болғанда да, менің қалтамда/көлігімде әрқашан қуат банкі бар.
  • Құралдары бар Linux «қорапшасын» сақтаңыз, ұзақ жылдар бойы барлық тілдерде жазылған Кішкентай экран мен басқару түймелерінің аз жиынтығымен бұл мағынасы жоқ. Нәтижелерді толық пернетақтасы мен экраны бар кәдімгі ноутбукте қарауға/өңдеуге болады.
  • Компоненттер оңай қол жетімді және кеңінен танымал болуы керек (қол жетімді SDK, көптеген мысалдар және құжаттама).

Нәтижесінде, мен үшін таңдау анық болды - ESP32.

Мақалада айтылған барлық тапсырмалар үшін мені әрекет етуге итермеледі, ESP32 мүмкіндіктері жеткілікті. Мен әлі де жасағым келетін ең көп нәрсе:

  • Bluetooth арқылы ойнаңыз.
  • Ең қарапайым аппараттық құралмен 433 мГц диапазонында ойнаңыз (тек амплитудалық модуляция, бұл практикалық қажеттіліктер үшін жеткілікті).

ESP32-де жақпаға ұшыңыз

  • ESP32 SDK (IDF) біршама ыңғайсыз.
  • Кейбір функциялар (мысалы, WiFi стегі) жинақталған статикалық кітапханалар түріндегі бастапқы кодсыз келеді.
  • 5 гГц диапазонына қолдау көрсетілмейді және WiFi-мен жұмыс істеуде кейбір шектеулер мен ебедейсіздіктер бар.

Бірақ бағасы/өлшемі бұл кемшіліктерді толығымен өтейді.

Бағдарламалық қамтамасыз етудің негізгі қызметі

Мен функционалдылықты қысқаша сипаттаймын және бұл туралы өз пікірімді айтамын...

Параметрлерді басқару және SD файлдарын жүктеп салу

Барлық сыртқы басқару мәзірдің жеке пунктінде іске қосылған қарапайым Web-парақ арқылы жүзеге асырылады. ESP32 WiFi AP режимінде басталады және бекітілген IP мекенжайындағы бетті көрсетеді.

ESP32 өзектері айтарлықтай жылдам болғанымен, эксперименттер көрсеткендей, кірістірілген веб-қызметтің және, мысалы, маршрутизатор режимінің бір уақытта жұмыс істеуі өте үйлесімді емес. Сондықтан динамикалық басқару жоқ және бет барлық басқа режимдерде қол жетімді емес.
Сонымен қатар, зерттеу мақсатында динамикалық бақылау қажет емес.

Beacon пакеттерімен жұмыс істеу режимі

Режимдер қарапайым және өте қызықты емес. «Бұл мүмкін болғандықтан» жасалған. Тексеру үшін.
Ресми Espressif мысалдарында мысалдар бар.

AP тізімін сканерлеу режимі.
Шын мәнінде, мұны кез келген смартфон жасай алады.
Бұл режимде AP тізімі сақталады.
Маяк спамері.
ESP32 жасырын SSID және кездейсоқ MAC бар AP ретінде басталады және алдын ала жасалған SSID тізіміне сәйкес [маяк кадрын] жіберуді бастайды (қолмен жасалған немесе AP тізімін сканерлеу арқылы бұрын алынған)

WiFi пакетін иіскеу режимі

Espressif әзірлеушілері қолданбалы бағдарламалық жасақтамаға кері шақыру функциясы арқылы «ауада ұшатын» барлық WiFi пакеттерін қабылдау мүмкіндігін қосты. Іс жүзінде бәрі емес, өйткені режимді тек бір бекітілген арна үшін орнатуға болады.

Кері шақыру функциясын өңдеуге өте қатаң уақыт шектеулері қойылады. Егер бұл қарапайым статистиканы жинау режимінде қиындық тудырмаса, SD картасына PCAP файлдарын жазу режимі үшін жад пен семафордағы кезек арқылы жазуды ұйымдастырып, мұқият өңдеуге тура келді. Ерекшелігін ескере отырып, кері қоңырау шалу процесі бір ядрода, ал SD-ге жазылатын процесс екіншісінде жұмыс істейді.

«Шулы ауа» кезінде кейбір пакеттер жоғалады (кезекте орын жоқ және олар тасталады), бірақ кешкі уақытта пәтердің әдеттегі «ауасымен» (көріну шегінде 5..7 AP), PCAP жүйесінде жазу пакетті жоғалтпай аяқталады.

Сонымен қатар, PCAP бақылау және жазу үшін пакет тақырыптарындағы MAC тізіміне негізделген сүзу режимі бар.

Мысалы, сіз клубқа/кафеге кірген немесе көзге көрінген адамның сыртқы түрін бақылай аласыз. Кейбір адамдар WiFi және белгілі кіру нүктесіне автоматты қосылымды өшіреді. (Мен оны қазір өшіремін..)

Wireshark-те жазылған трафикті көру оқу және карталарды түсіну үшін қызықты - бәрі жұмыс істейді.

Өлім пакеттерімен жұмыс істеу режимі

Әдепкі бойынша, бұл бумаларды жіберу көздерсіз келетін libnet80211.a кітапханасында тыйым салынған. Бірақ бірнеше биттерді түзету арқылы оны түзету оңай. Басында мен патчты жариялауға тұрарлық па деп күмәндандым. Бірақ аутентификация кадрын сканерлеу режимі қосылған әр түрлі жерлерді аралап шыққаннан кейін мен: «Не болды?» деп ойладым. Сонымен қатар, esp8266-да бұл пакеттерді жеткізу жабылмайды және esp8266 үшін github-да жинақтар бар.

Көптеген жерлерде (қай жерде айтпай-ақ қояйын) осы әдіс арқылы қажетсіз АП-ны басу қолданылады. Және бұл «бұзақылар» емес...

Телефонымдағы интернет таратуымның кей жерлерде жұмыс істемейтіні мені де таң қалдырды...

Мұндай пакеттердің нөмірін және RSSI-ын қадағалау режимі «сол жақ AP-ге қай жерде ұнамайтынын» түсіну үшін өте пайдалы.

маршрутизатор режимі

Бұл мүмкіндік ең қызықты болуы мүмкін.

ESP32 STA + SoftAP режимінде бір уақытта жұмыс істеуді қолдайды. Сондықтан оған классикалық NAT маршрутизаторын енгізуге болады.

Желілік стекке қолдау көрсету үшін Espressif lwip кітапханасының шанышқысын (іс жүзінде өзгермеген) пайдаланады.

Бірақ, әдепкі бойынша, стандартты құрастыруда esp-lwip кітапханасы 'ap' (SoftAP) және 'st' (STA) нетиф интерфейстері арасында қайта жіберуді қамтамасыз етпейді.

Әрине, мұны NAT-сыз жасауға болады, бірақ екі немесе одан да көп STA-ны «ap» интерфейсіне бір уақытта қосу және «st» желілік интерфейсінен «ap» IP мекенжайларын синхрондау мәселесі бар. Сондықтан қиындықтарға тұрарлық емес және NAT арқылы оңайырақ.

Сонымен қатар, IP4 үшін NAT-тың қарапайым орындалуын қосатын martin-ger-ден esp-lwip шанышқысы бар.

Менің қолым оны таза косметикалық түрде қайта жасау үшін қышиды (менің ойымша, жобаның шанышқысысыз оңай болды, бірақ LWIP арқылыМАК құрастыру кезінде анықталған функциялар), бірақ жалқаулық басым болды және Мартин-Джер опциясы бұрынғыдай пайдаланылады.

Маршрутизатор режимінде кіріс және шығыс IP4 трафигі көрінеді.

Атап айтқанда, экранда көрсету және статистиканы файлға жинау үшін одан төмендегілер шығарылады:

  • SoftAP ESP32 (DHCP пакеттері) қосылған құрылғының атауы
  • SoftAP ESP53 жүйесіне қосылған құрылғыдан DNS сұрауларынан (UDP порты 32) URL мекенжайы.

Оған қоса, PCAP файлына трафикті жазуды қосуға болады.

Бұл режим, мысалы, телефоныңыз желіге не жіберетінін және қайда баратынын түсіну үшін өте пайдалы.

Желі интерфейсі деңгейінде softAP ESP32 кіріс және шығыс трафикті толығымен басқару мүмкіндігін ескере отырып, осы режимді пайдаланудың басқа жолдарын қарастыруға болады: Ehernet тақырыбы (destMAC[6]+srcMAC[6]+түрі[2]) + пайдалы жүктеме (IP4, IP6, DCHP және т.б. түрі).

Негізінде, ESP32 қалыпты трафиктен еш кідіріссіз өтіп, WiFi->WiFi маршрутизаторы функциясымен жақсы жұмыс істейді. Субъективті түрде ESP32 маршрутизаторы арқылы қосылған телефондағы кідіріс байқалмайды.

Өкінішке орай, Espressif API жүйесінде SoftAP EPS32 жүйесіне қосылған MAC үшін сүзгіні орнату мүмкіндігі жоқ. Оның орнына, «қажет емес» бұрыннан қосылған STA-ға «қош бол» (esp_wifi_deauth_sta) деп айту ұсынылады.

Қосылған STA үшін MAC арқылы сүзу esp_wifi_deauth_sta() қоңырауы арқылы жасалуы керек еді.

Қорытындылай келе

Мен ESP32-мен жұмыс істеу аясында жаңа ештеңе ойлап таппасам да, нәтиже (бастапқы код) біреуге қызықты болуы мүмкін.

Код тек білім беру мақсатында жазылғанын атап өткім келеді. «Бұзу» және т.б. үшін ол өте ыңғайлы емес әдейі жасалған.

Мен баспа платасын жасамадым, өйткені дайын шарфтарды сыммен дәнекерлеуге 1.5-2 сағат кетті.

Ал егер жасасаңыз, оны дайын тақталардан емес, жеке құрамдас бөліктерден құрастыру керек. Сонда өлшемдер одан да кішірек болады.

Ақпарат көзі: www.habr.com

пікір қалдыру