ESP32де Wifi менен оюн

ESP32де Wifi менен оюн

Мага WiFi тармактарын анализдөө үчүн чөнтөк куралын жасоо идеясын берген бул макалада.

Идея үчүн аларга рахмат. Жөн гана кыла турган эч нерсем жок болчу.

Бардык иштер көңүл ачуу жана тармактык технологиялар тармагындагы билимимди кеңейтүү максатында хоббинин бир бөлүгү катары жасалды. Акырындык менен, ушул жылдын башынан бери жумасына 1..4 саат.
Мен эч кандай практикалык колдонууну пландаган эмесмин. Ошол. Бул хакерлердин куралы ЭМЕС.

Учурда бардык пландалган функциялар иштеп жатат. Бардык булактар, чогултууга толугу менен даяр, бул жерде жайгаштырылган. Ошондой эле чогултуу көрсөтмөлөрү бар, ж.б. Бул эскертүүдө мен githubда жарыяланган маалыматты кайталабайм. Мен өзүнчө сүрөттөп берүү зарыл деп эсептеген нерселерди гана айтам.

"Универсалдуу курал" жөнүндө менин пикирим жана ESP32ди тандоонун себеби

Мен чындык деп эсептебейм. Ар кимдин өзүнүн бар. Мен аппараттык жабдууларды тандоону актоого аракет кылам.

Макалада сунушталган контроллер (STM32) + CC1110 (8051 ядро) түрүндөгү Linux (башында Raspberry Pi) + "перифериялык түзүлүштөр" айкалышынын колдонулушу жана ал жерде мүмкүн болгон нерселердин бардыгын жыйноо планы (125кГц, NFC, 433мГц, USB, iButton, bluetooth, ?) мага туура келбеди. Бирок, бул долбоор Ал жеке жана жабык бойдон калат окшойт (flipper-нөл github "Бул уюмдун коомдук репозиторийлери жок.") жана өтө кеңири таралбаган аппараттык жабдыктарга өттү.

Балким, мен жаңылып жаткандырмын жана келечекте авторлор программалык камсыздоо булактарын жалпыга жеткиликтүү кылат. Бирок, эгерде андай болбосо, мен баштапкы коду жок мындай жабдыкты сатып алмак эмесмин.

Менин талаптарым "куралга"

Куту кичинекей болушу керек (канчалык кичине болсо, ошончолук жакшы).

Ошондуктан:

  • Камтылган батареянын кереги жок. Wifi менен иштөөдө ток > 100 мА болгондо, орнотулган батарейка чоң болот же көпкө чыдабайт. Ошондуктан, "куту" стандарттык электр банкы менен иштетилсин. Эмнеси болсо да, менин чөнтөгүмдө/унаамда ар дайым электр банкым бар.
  • ичинде куралдары бар Linux "кутусун" сактаңыз, көп жылдар бою бардык тилдерде жазылган Кичинекей экран жана башкаруу баскычтарынын аз топтому менен анын мааниси жок. Натыйжаларды толук клавиатура жана экраны бар кадимки ноутбукта көрүүгө/иштеп чыгууга болот.
  • Компоненттер оңой жеткиликтүү жана кеңири белгилүү болушу керек (SDK, көптөгөн мисалдар жана документтер бар).

Натыйжада, мен үчүн тандоо ачык эле - ESP32.

Мени чара көрүүгө түрткү болгон макалада айтылган бардык тапшырмалар үчүн ESP32 мүмкүнчүлүктөрү жетиштүү. Мен дагы деле эң көп кылгым келет:

  • Bluetooth менен ойноңуз.
  • Эң жөнөкөй жабдык менен 433 мГц диапазонунда ойноңуз (практикалык муктаждыктар үчүн амплитудалык модуляция гана).

ESP32 менен май менен учуп кетиңиз

  • ESP32 SDK (IDF) бир аз олдоксон.
  • Кээ бир функциялар (мисалы, WiFi стек) чогулган статикалык китепканалар түрүндө баштапкы кодсуз келет.
  • 5 гГц диапазону колдоого алынбайт жана WiFi менен иштөөдө кээ бир чектөөлөр жана олдоксондор бар.

Бирок баасы / өлчөмү толугу менен бул кемчиликтердин ордун толтурат.

Программанын негизги функциялары

Мен кыскача функцияны жана менин оюмду сүрөттөп берейин ...

Орнотууларды башкаруу жана SDден файлдарды жүктөө

Бардык тышкы башкаруу өзүнчө менюда ишке киргизилген жөнөкөй веб-баракча аркылуу жүзөгө ашырылат. 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 жана белгилүү AP менен автоматтык туташууларды өчүрүшөт. (Мен азыр өчүрүп жатам ..)

Wiresharkта жазылган трафикти көрүү билим берүүчү жана карталарды түшүнүү үчүн кызыктуу - мунун баары иштейт.

Өлүм топтомдору менен иштөө режими

Демейки боюнча, бул пакеттерди жөнөтүү булактары жок келген libnet80211.a китепканасында тыюу салынган. Бирок аны бир нече бит өзгөртүү менен оңдоо оңой. Башында мен бул патчты жарыялоонун кереги барбы деп күмөн санадым. Бирок аутентификация кадрын сканерлөө режими күйгүзүлгөн ар кайсы жерлерди кыдыргандан кийин, мен: "кандай тозок" деп ойлодум. Мындан тышкары, esp8266да бул пакеттерди жеткирүү жабылган эмес жана esp8266 үчүн githubда жыйындар бар.

Көптөгөн жерлерде (кайсы жерин айтпай эле коёюн) бул ыкма аркылуу керексиз АПларды басуу колдонулат. А булар "бейбаштык" эмес...

Анан телефонумдан интернет бөлүштүрүү кээ бир жерлерде иштебей калганына таң калдым...

Мындай пакеттердин санына жана RSSIге көз салуу режими "сол APларга жаккан жок" дегенди түшүнүү үчүн абдан пайдалуу.

роутер режими

Бул өзгөчөлүк, балким, изилдөө үчүн баарынан кызыктуу.

ESP32 STA + SoftAP режиминде бир убакта иштөөнү колдойт. Ошондуктан, сиз ага классикалык NAT роутерин ишке ашыра аласыз.

Тармактык стекти колдоо үчүн Espressif lwip китепканасынын айрысын (дээрлик өзгөрүүсүз) колдонот.

Бирок, демейки боюнча, стандарттык түзүлүштө, esp-lwip китепканасы "ap" (SoftAP) жана "st" (STA) netif интерфейстеринин ортосунда жөнөтүүнү камсыз кылбайт.

Албетте, сиз муну NATсыз жасай аласыз, бирок бир эле учурда эки же андан көп STAны "ap" интерфейсине туташтыруу жана "st" тармак интерфейсинен "ap" менен IP даректерди синхрондоштуруу көйгөйү бар. Ошентип, кыйынчылыктарга татыктуу эмес жана NAT аркылуу оңой.

Мындан тышкары, IP4 үчүн NAT жөнөкөй ишке ашырууну кошо турган martin-gerден айры esp-lwip бар.

Колум аны таза косметикалык жактан кайра жасоо үчүн кычышса да (менин оюмча, долбоордун айрылары жок жеңил, бирок LWIP аркылууHook монтаж учурунда аныкталган функциялар), бирок жалкоолук басымдуулук кылып, Мартин-гердин варианты ошол бойдон колдонулат.

Роутер режиминде кирүүчү жана чыгуучу 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 саат талап кылынгандыктан, басма тактасын жасаган жокмун.

Ал эми эгер кылсаңыз, аны даяр тактайлардан эмес, айрым компоненттерден чогултушуңуз керек. Ошондо өлчөмдөрү дагы кичине болот.

Source: www.habr.com

Комментарий кошуу