ESP32-də Wi-Fi ilə oyunlar

ESP32-də Wi-Fi ilə oyunlar

Mənə WiFi şəbəkələrini təhlil etmək üçün cib aləti etmək fikrini verən şey oldu Bu məqalə.

İdeyaya görə onlara təşəkkür edirəm. Sadəcə işim yox idi.

Bütün işlər əylənmək və şəbəkə texnologiyaları sahəsində biliklərimi genişləndirmək məqsədi ilə hobbi çərçivəsində görülmüşdür. Yavaş-yavaş, bu ilin əvvəlindən həftədə 1..4 saat.
Mən heç bir praktik istifadə planlaşdırmadım. Bunlar. Bu haker aləti DEYİL.

Hazırda planlaşdırılmış bütün funksiyalar işləyir. Montaj üçün tamamilə hazır olan bütün mənbələr, burada yerləşdirilib. Quraşdırma təlimatları da var və s. Bu qeyddə mən github-da yerləşdirilən məlumatları təkrarlamayacağam. Mən sizə yalnız ayrıca təsvir etməyi zəruri hesab etdiyim şeyi söyləyəcəyəm.

"Universal alət" və ESP32-ni seçməyin səbəbi haqqında fikrim

Mən həqiqət olduğunu iddia etmirəm. Hər kəsin öz var. Aparat seçimimi əsaslandırmağa çalışacağam.

Məqalədə təklif olunur Linux (əvvəlcə Raspberry Pi) + nəzarətçi (STM32) + CC1110 (8051 nüvə) şəklində "periferik qurğular" birləşməsinin istifadəsi və orada mümkün olan hər şeyi (125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?) mənə uyğun gəlmədi. Bununla belə, bu layihə Deyəsən, o, özəl və qapalı qalacaq (sıfır-sıfır github “Bu təşkilatın ictimai depoları yoxdur.”) və çox da adi olmayan aparatlara doğru getdi.

Ola bilsin ki, səhv edirəm və gələcəkdə müəlliflər proqram təminatı mənbələrini ictimaiyyətə təqdim edəcəklər. Amma olmasaydı, mənbə kodu olmadan belə bir aparat almazdım.

"Alət" üçün tələblərim

Qutu kiçik olmalıdır (nə qədər kiçik olsa, bir o qədər yaxşıdır).

Buna görə:

  • Daxili batareyaya ehtiyac yoxdur. Wi-Fi ilə işləyərkən > 100 mA cərəyanla, daxili batareya ya böyük olacaq, ya da uzun sürməyəcək. Buna görə də, "qutu" standart bir güc bankı ilə təchiz olunsun. Hər halda, cibimdə/maşınımda həmişə güc bankım var.
  • İçində alətləri olan bir Linux "qutusu" saxlayın, uzun illər ərzində bütün dillərdə yazılmışdır Kiçik ekran və cüzi idarəetmə düymələri ilə bunun heç bir mənası yoxdur. Nəticələrə tam klaviatura və ekranı olan adi noutbukda baxmaq/emal etmək olar.
  • Komponentlər asanlıqla əldə edilə bilən və geniş şəkildə tanınmalıdır (mövcud SDK, çoxlu nümunələr və sənədlər).

Nəticədə, mənim üçün seçim açıq idi - ESP32.

Məni hərəkətə keçirməyə vadar edən məqalədə göstərilən bütün tapşırıqlar üçün ESP32-nin imkanları kifayət qədərdir. Baxmayaraq ki, hələ də ən çox etmək istəyirəm:

  • Bluetooth ilə oynayın.
  • Ən sadə avadanlıqla 433 mHz diapazonu ilə oynayın (yalnız amplituda modulyasiyası, praktik ehtiyaclar üçün kifayətdir).

ESP32-də məlhəmdə uçun

  • ESP32 SDK (IDF) bir qədər yöndəmsizdir.
  • Bəzi funksionallıqlar (məsələn, WiFi yığını) yığılmış statik kitabxanalar şəklində mənbə kodu olmadan gəlir.
  • 5 gHz diapazonu dəstəklənmir və WiFi ilə işləməkdə bəzi məhdudiyyətlər və yöndəmsizliklər var.

Lakin qiymət/ölçü bu çatışmazlıqları tamamilə kompensasiya edir.

Proqram təminatının əsas funksionallığı

Mən qısaca funksionallığı və haqqında fikirlərimi təsvir edəcəyəm...

Parametrlərin idarə edilməsi və SD-dən faylların yüklənməsi

Bütün xarici nəzarət ayrıca menyu elementində işə salınan sadə Veb səhifə vasitəsilə həyata keçirilir. ESP32 WiFi AP rejimində başlayır və sabit IP ünvanında bir səhifə göstərir.

Baxmayaraq ki, ESP32 nüvələri kifayət qədər sürətlidir, təcrübələr göstərdiyi kimi, quraşdırılmış Veb xidmətinin və məsələn, marşrutlaşdırıcının rejiminin eyni vaxtda işləməsi çox uyğun deyil. Buna görə dinamik nəzarət yoxdur və səhifə bütün digər rejimlərdə mövcud deyil.
Üstəlik, tədqiqat məqsədləri üçün dinamik nəzarətə ehtiyac yoxdur.

Beacon paketləri ilə iş rejimi

Rejimlər banaldır və çox da maraqlı deyil. "Mümkün olduğu üçün" edildi. Çek üçün.
Rəsmi Espressif nümunələrində nümunələr var.

AP siyahısı tarama rejimi.
Əslində, hər hansı bir smartfon bunu edə bilər.
Yaxşı, bu rejimdə AP siyahısı saxlanacaq.
Mayak spameri.
ESP32 gizli SSID və təsadüfi MAC ilə AP kimi başlayır və əvvəlcədən yaradılmış SSID siyahısına (əl ilə yaradılmış və ya əvvəllər AP siyahısını skan etməklə əldə edilmiş) uyğun olaraq [mayak çərçivəsi] göndərməyə başlayır.

WiFi paket iyləmə rejimi

Espressif tərtibatçıları tətbiqi proqram təminatına geri çağırış funksiyası vasitəsilə “havada uçan” bütün WiFi paketlərini qəbul etmək imkanı əlavə ediblər. Əslində hamısı deyil, çünki rejimi yalnız bir sabit kanal üçün təyin edə bilərsiniz.

Geri çağırış funksiyasının işlənməsinə çox ciddi vaxt məhdudiyyətləri qoyulur. Bu, sadə statistika toplama rejimi üçün problem yaratmırsa, o zaman SD kartdakı PCAP fayl qeyd rejimi üçün yaddaşda və semaforlarda bir növbə vasitəsilə qeydləri təşkil etməli oldum. Xüsusiyyəti nəzərə alsaq ki, geri çağırış prosesi bir nüvədə, digərində isə SD-yə yazılan proses işləyir.

"Səs-küylü hava" zamanı bəzi paketlər itirilir (növbədə yer yoxdur və onlar atılır), lakin axşam saatlarında mənzilin tipik "havası" ilə (görünürlük daxilində 5..7 AP), PCAP-da qeyd olunur. paket itkisi olmadan tamamlanır.

Əlavə olaraq, PCAP monitorinqi və qeydi üçün paket başlıqlarında MAC siyahısına əsaslanan filtrləmə rejimi mövcuddur.

Məsələn, bir adamın kluba/kafeyə girmədən və ya gözə görünməmişdən əvvəl onun görünüşünü izləyə bilərsiniz. Az adam WiFi-ni və məlum AP-lərə avtomatik bağlantıları söndürür. (İndi söndürürəm..)

Wireshark-da qeydə alınmış trafikə baxmaq maarifləndirici və xəritələri başa düşmək üçün maraqlıdır - hamısı işləyir.

Ölüm paketləri ilə işləmək üçün rejim

Defolt olaraq, mənbəsiz gələn libnet80211.a kitabxanasında bu paketlərin göndərilməsi qadağandır. Ancaq bir neçə bit düzəldərək düzəltmək asandır. Əvvəlcə yamağı yerləşdirməyə dəyər olub olmadığına şübhə etdim. Amma deautentifikasiya çərçivəsinin skan rejimi işə salınaraq müxtəlif yerləri gəzdikdən sonra düşündüm: “nə cəhənnəm”. Üstəlik, esp8266-da bu paketlərin çatdırılması bağlanmır və esp8266 üçün github-da montajlar var.

Bir çox yerlərdə (harada deməyəcəyəm) bu üsulla arzuolunmaz AP-lərin sıxışdırılmasından istifadə olunur. Həm də bunlar “qorba” deyil...

Və mən də təəccübləndim ki, mənim telefonumdan internet paylanması bəzi yerlərdə işləməyib...

Bu cür paketlərin sayını və RSSI-ni izləmək rejimi "sol AP-lərin bəyənmədiyi yerləri" başa düşmək üçün çox faydalıdır.

marşrutlaşdırıcı rejimi

Bu xüsusiyyət yəqin ki, araşdırmaq üçün ən maraqlıdır.

ESP32 STA + SoftAP rejimində eyni vaxtda işləməyi dəstəkləyir. Buna görə klassik NAT marşrutlaşdırıcısını tətbiq edə bilərsiniz.

Şəbəkə yığınını dəstəkləmək üçün Espressif lwip kitabxanasının çəngəlindən (faktiki olaraq dəyişməz) istifadə edir.

Ancaq standart olaraq, standart quruluşda esp-lwip kitabxanası "ap" (SoftAP) və "st" (STA) şəbəkə interfeysləri arasında ötürülməni təmin etmir.

Əlbəttə ki, siz bunu NAT olmadan edə bilərsiniz, lakin iki və ya daha çox STA-nın eyni vaxtda “ap” interfeysinə qoşulması və IP ünvanlarının “st” şəbəkəsindən “ap” şəbəkə interfeysinə sinxronlaşdırılması ilə bağlı problem var. Beləliklə, çətinliklər buna dəyməz və NAT vasitəsilə daha asandır.

Üstəlik, IP4 üçün sadə NAT tətbiqini əlavə edən martin-ger-dən esp-lwip fork var.

Əllərim sırf kosmetik olaraq yenidən düzəltmək üçün qaşınsa da (mənim fikrimcə, layihənin çəngəlləri olmadan daha asan idi, lakin LWIP vasitəsiləHOOK funksiyalar montaj zamanı müəyyən edilir), lakin tənbəllik üstünlük təşkil etdi və martin-ger variantı olduğu kimi istifadə edildi.

Router rejimində daxil olan və gedən IP4 trafikinə baxılır.

Xüsusilə, ekranda göstərmək və statistik məlumatları fayla toplamaq üçün ondan aşağıdakılar çıxarılır:

  • SoftAP ESP32 (DHCP paketləri) ilə qoşulan cihazın adı
  • SoftAP ESP53-ə qoşulmuş cihazdan DNS sorğularından (UDP port 32) URL.

Bundan əlavə, siz PCAP faylına trafik qeydini aktivləşdirə bilərsiniz.

Bu rejim, məsələn, telefonunuzun şəbəkəyə nə göndərdiyini və hara getdiyini başa düşmək üçün çox faydalıdır.

Şəbəkə interfeysi səviyyəsində softAP ESP32 daxil olan və gedən trafikə tam nəzarət etmək imkanını nəzərə alaraq bu rejimi istifadə etməyin başqa yollarını düşünə bilərsiniz: Ehernet başlığı (destMAC[6]+srcMAC[6]+tip[2]) + faydalı yük (IP4, IP6, DCHP və s. növü).

Prinsipcə, ESP32 heç bir xüsusi gecikmə olmadan normal trafikdən keçərək WiFi->WiFi router funksiyası ilə kifayət qədər yaxşı işləyir. Subyektiv olaraq, ESP32-də marşrutlaşdırıcı vasitəsilə qoşulmuş telefonda gecikmələr nəzərə çarpmır.

Təəssüf ki, Espressif API-nin SoftAP EPS32-ə qoşulmuş MAC üçün filtr təyin etmək imkanı yoxdur. Əvəzində “arzuolunmaz” artıq qoşulmuş STA-lara “əlvida” (esp_wifi_deauth_sta) demək təklif olunur.

Qoşulmuş STA-lar üçün MAC tərəfindən süzülmə esp_wifi_deauth_sta() zəngi vasitəsilə həyata keçirilməli idi.

Nəticədə

ESP32 ilə işləmək çərçivəsində yeni bir şey tapmasam da, bəlkə də nəticə (mənbə kodu) kimsə üçün maraqlı olacaq.

Qeyd etmək istərdim ki, kod yalnız maarifləndirmə məqsədi ilə yazılmışdır. "Hacking" və s. üçün, o, qəsdən çox əlverişli deyildi.

Hazır şərfləri məftillə lehimləmək 1.5-2 saat çəkdiyi üçün çap dövrə lövhəsi hazırlamadım.

Əgər bunu etsəniz, onu hazır lövhələrdən deyil, fərdi komponentlərdən yığmaq lazımdır. Sonra ölçülər daha da kiçik olacaq.

Mənbə: www.habr.com

Добавить комментарий