WiFi ãããã¯ãŒã¯ãåæããããã®ãã±ãã ããŒã«ãäœæãããšããã¢ã€ãã¢ãç§ã«äžããã®ã¯ã
ã¢ã€ãã¢ãããã圌ãã«æè¬ããŸãã ãã äœãããããšããªãã£ããã§ãã
ãã¹ãŠã®äœæ¥ã¯ããããã¯ãŒã¯ ãã¯ãããžã®åéã§æ¥œããã§ç¥èãåºããããšãç®çãšãã趣å³ã®äžç°ãšããŠè¡ãããŸããã ä»å¹Žã®åãããããã£ãããšãé±ã«1..4æéã
å®çšåããäºå®ã¯ãããŸããã§ããã ãããã®ã ããã¯ããã«ãŒã®ããŒã«ã§ã¯ãããŸããã
çŸæç¹ã§ã¯ãèšç»ãããŠãããã¹ãŠã®æ©èœãåäœããŠããŸãã ãã¹ãŠã®ãœãŒã¹ã¯å®å
šã«çµã¿ç«ãŠã®æºåãã§ããŠããã
ãäžèœããŒã«ãã«å¯Ÿããç§ã®èããšESP32ãéžãã çç±
ç§ã¯çå®ã§ãããšã¯äž»åŒµããŸããã 誰ããèªåã®ãã®ãæã£ãŠããŸãã ç§ã¯ããŒããŠã§ã¢ã®éžæãæ£åœåããããšããŸãã
ããããç§ã¯ééã£ãŠãããšæããŸãããå°æ¥çã«ã¯äœæè ããœãããŠã§ã¢ ãœãŒã¹ãäžè¬ã«å ¬éããäºå®ã§ãã ããããããã§ãªãå Žåãç§ã¯ãœãŒã¹ã³ãŒããªãã§ãã®ãããªããŒããŠã§ã¢ãè³Œå ¥ããŸããã
ç§ã®ãéå ·ãã«æ±ãããã®
ç®±ã¯å°ããã»ããããã§ãïŒå°ãããã°å°ããã»ã©è¯ãã§ãïŒã
ãããã£ãŠã次ã®ããã«
- å èµããããªãŒã¯å¿ èŠãããŸããã Wi-Fi ã§åäœããå Žåãé»æµã 100 mA ãè¶ ãããšãå èµããããªãŒã倧ãããªãããããããªãŒãé·ãæããªããªããŸãã ãããã£ãŠããããã¯ã¹ãã«ã¯æšæºã®ã¢ãã€ã«ããããªãŒããé»åãäŸçµŠããŠãã ããã ãšã«ãããç§ã¯ãã€ããã±ãããè»ã®äžã«ã¢ãã€ã«ããããªãŒãå ¥ããŠããŸãã
- ããŒã«ãå ¥ã£ã Linux ã®ãããã¯ã¹ããä¿ç®¡ãã é·å¹Žã«ããã£ãŠããããèšèªã§æžããã ç»é¢ãå°ãããæäœãã¿ã³ã®æ°ãå°ãªããããæå³ããããŸããã çµæã¯ããã«ããŒããŒããšã¹ã¯ãªãŒã³ãåããéåžžã®ã©ãããããã§è¡šç€º/åŠçã§ããŸãã
- ã³ã³ããŒãã³ãã¯ç°¡åã«ã¢ã¯ã»ã¹ã§ããåºãç¥ãããŠããå¿ èŠããããŸã (å©çšå¯èœãª SDKãå€ãã®äŸãšããã¥ã¡ã³ã)ã
ãã®çµæãç§ã«ãšã£ãŠ ESP32 ã®éžæã¯æçœã§ããã
ãã®èšäºã«èšèŒãããŠãããã¹ãŠã®ã¿ã¹ã¯ã«å¯ŸããŠãç§ãè¡åãèµ·ãããã£ãããšãªã£ãã®ã¯ãESP32 ã®æ©èœã§ååã§ãã ç§ããŸã äžçªããããããšã¯æ¬¡ã®ãšããã§ãã
- Bluetooth ã䜿ã£ãŠéãã§ã¿ãŸãããã
- æãåçŽãªããŒããŠã§ã¢ (å®çšçãªããŒãºã«ã¯ååãªæ¯å¹ å€èª¿ã®ã¿) ã䜿çšã㊠433mHz ã®ç¯å²ãè©ŠããŠã¿ãŸãããã
ESP32ã®è»èã§é£ã¶
- ESP32 SDK (IDF) ã¯ããæ±ãã«ããã§ãã
- äžéšã®æ©èœ (WiFi ã¹ã¿ãã¯ãªã©) ã¯ãçµã¿ç«ãŠãããéçã©ã€ãã©ãªã®åœ¢åŒã§ãœãŒã¹ ã³ãŒããªãã§æäŸãããŸãã
- 5GHz 垯åã¯ãµããŒããããŠããããWiFi ã®äœ¿çšã«ã¯ããã€ãã®å¶éãšäžäŸ¿ãããããŸãã
ããããäŸ¡æ Œãšãµã€ãºã¯ãããã®æ¬ ç¹ãå®å šã«è£ã£ãŠããŸãã
ãœãããŠã§ã¢ã®äž»ãªæ©èœ
æ©èœãšç§ã®æèŠãç°¡åã«èª¬æããŸã...
èšå®ã®ç®¡çãšSDããã®ãã¡ã€ã«ã®ã¢ããããŒã
ãã¹ãŠã®å€éšå¶åŸ¡ã¯ãå¥ã®ã¡ãã¥ãŒé ç®ã§èµ·åãããåçŽãª Web ããŒãžãéããŠè¡ãããŸãã ESP32 㯠WiFi AP ã¢ãŒãã§èµ·åããåºå® IP ã¢ãã¬ã¹ã§ããŒãžã衚瀺ããŸãã
ESP32 ã³ã¢ã¯éåžžã«é«éã§ãããå®éšã§ç€ºãããŠããããã«ãçµã¿èŸŒã¿ Web ãµãŒãã¹ãšã«ãŒã¿ãŒ ã¢ãŒããªã©ã®åææäœã«ã¯ããŸãäºææ§ããããŸããã ãããã£ãŠãåçå¶åŸ¡ã¯ãªããããŒãžã¯ä»ã®ãã¹ãŠã®ã¢ãŒãã§ã¯äœ¿çšã§ããŸããã
ããã«ãç 究ç®çã«ã¯åçå¶åŸ¡ã¯å¿
èŠãããŸããã
Beacon ããã±ãŒãžã䜿çšããã¢ãŒã
ã¢ãŒãã¯å¹³å¡ã§ããŸãé¢çœããããŸããã ãã§ãããããäœã£ãã ãã§ãã¯çšã
Espressif ã®å
¬åŒãµã³ãã«ã«ãµã³ãã«ããããŸãã
AP ãªã¹ã ã¹ãã£ã³ ã¢ãŒãã
å®ã¯ãã©ã®ã¹ããŒããã©ã³ã§ããããå¯èœã§ãã
ãã®ã¢ãŒãã§ã¯ãAP ãªã¹ããä¿åãããŸãã
ããŒã³ã³ã¹ãããŒã
ESP32 ã¯ãé衚瀺㮠SSID ãšã©ã³ãã 㪠MAC ãæ〠AP ãšããŠéå§ããäºåã«äœæããã SSID ã®ãªã¹ã (æåã§äœæãããããAP ãªã¹ããã¹ãã£ã³ããŠäºåã«ååŸããã) ã«åŸã£ãŠ [ããŒã³ã³ ãã¬ãŒã ] ã®éä¿¡ãéå§ããŸãã
WiFiãã±ããã¹ãããã£ã³ã°ã¢ãŒã
Espressif éçºè ã¯ãã¢ããªã±ãŒã·ã§ã³ ãœãããŠã§ã¢ãã³ãŒã«ããã¯é¢æ°ãéããŠã空äžãé£ã¶ããã¹ãŠã® WiFi ãã±ãããåä¿¡ã§ããæ©èœãè¿œå ããŸããã ã¢ãŒããèšå®ã§ããã®ã¯ XNUMX ã€ã®åºå®ãã£ã³ãã«ã®ã¿ã§ãããããå®éã«ã¯ãã¹ãŠã§ã¯ãããŸããã
ã³ãŒã«ããã¯é¢æ°ã®åŠçã«ã¯éåžžã«å³ããæéå¶éã課ãããŸãã ãããåçŽãªçµ±èšåéã¢ãŒãã§åé¡ãåŒãèµ·ãããªãå ŽåãSD ã«ãŒãäžã® PCAP ãã¡ã€ã«èšé²ã¢ãŒãã§ã¯ãã¡ã¢ãªå ã®ãã¥ãŒãšã»ããã©ãä»ããŠèšé²ãæŽçããå¿ èŠããããŸããã ã³ãŒã«ããã¯ãåŒã³åºãããã»ã¹ã¯ XNUMX ã€ã®ã³ã¢ã§å®è¡ãããSD ã«æžã蟌ãããã»ã¹ã¯å¥ã®ã³ã¢ã§å®è¡ããããšããç¹æ®æ§ãèæ ®ããŸãã
ãéšã ãã空æ°ãã®éãäžéšã®ãã±ããã倱ãããŸããïŒãã¥ãŒã«ç©ºãããªããç Žæ£ãããŸãïŒãå€æ¹ã®ã¢ããŒãã®å žåçãªã空æ°ãïŒèŠçå ã« 5..7 å°ã® APïŒããããPCAP ã§èšé²ãããŸãããã±ããæ倱ãªãã§å®äºããŸãã
ããã«ãPCAP ã®ç£èŠãšèšé²ã«ã¯ããã±ãã ããããŒã® MAC ãªã¹ãã«åºã¥ããã£ã«ã¿ãªã³ã° ã¢ãŒãããããŸãã
ããšãã°ãã¯ã©ã/ã«ãã§ã«ãã人ã®å€èŠ³ãããã®äººãå ¥ã£ãŠããåããŸãã¯èŠçã«çŸããåã«è¿œè·¡ã§ããŸãã WiFi ãæ¢ç¥ã® AP ãžã®èªåæ¥ç¶ãç¡å¹ã«ãã人ã¯ã»ãšãã©ããŸããã (ä»ã¯æ¶ããŠãŸããã)
Wireshark ã§èšé²ããããã©ãã£ãã¯ã衚瀺ããããšã¯æè²çã§ãããããããç解ããäžã§èå³æ·±ããã®ã§ããããã¹ãŠæ©èœããŸãã
èªèšŒè§£é€ããã±ãŒãžãæäœããããã®ã¢ãŒã
ããã©ã«ãã§ã¯ããœãŒã¹ãªãã§æäŸããã libnet80211.a ã©ã€ãã©ãªã§ã¯ããããã®ããã±ãŒãžã®éä¿¡ãçŠæ¢ãããŠããŸãã ããããããã€ãã®ãããã埮調æŽããã ãã§ç°¡åã«ä¿®æ£ã§ããŸãã æåã¯ããããæçš¿ãã䟡å€ããããã©ããçåã«æããŸããã ããããèªèšŒè§£é€ãã¬ãŒã ã¹ãã£ã³ã¢ãŒãããªã³ã«ããŠããŸããŸãªå Žæãæ©ãåã£ãåŸããäœã ããããšæããŸããã ããã«ãesp8266 ã§ã¯ããããã®ããã±ãŒãžã®é ä¿¡ã¯çµäºããŠããããesp8266 çšã®ã¢ã»ã³ããªã github ã«ãããŸãã
å€ãã®å Žæ (ã©ããšã¯èšããŸããã) ã§ããã®æ¹æ³ã«ããäžèŠãª AP ã®æå¶ã䜿çšãããŠããŸãã ãããŠã圌ãã¯ãããããã§ã¯ãããŸãã...
ãããŠãæºåž¯é»è©±ããã®ã€ã³ã¿ãŒãããé ä¿¡ãäžéšã®å Žæã§æ©èœããªãããšã«ãé©ããŸããâŠã
ãã®ãããªãã±ããã®æ°ãš RSSI ã远跡ããã¢ãŒãã¯ããå·ŠåŽã® AP ãã©ãã奜ãŸãªãã®ãããç解ããã®ã«éåžžã«åœ¹ç«ã¡ãŸãã
ã«ãŒã¿ãŒã¢ãŒã
ãã®æ©èœã¯ãããããæ¢çŽ¢ããã®ã«æãèå³æ·±ãæ©èœã§ãã
ESP32 ã¯ãSTA + SoftAP ã¢ãŒãã§ã®åæåäœããµããŒãããŸãã ãããã£ãŠãåŸæ¥ã® NAT ã«ãŒã¿ãŒãå®è£ ã§ããŸãã
ãããã¯ãŒã¯ ã¹ã¿ãã¯ããµããŒãããããã«ãEspressif 㯠lwip ã©ã€ãã©ãªã®ãã©ãŒã¯ (å®è³ªçã«å€æŽãããŠããªã) ã䜿çšããŸãã
ãã ããããã©ã«ãã§ã¯ãæšæºãã«ãã§ã¯ãesp-lwip ã©ã€ãã©ãªã¯ netif ã€ã³ã¿ãŒãã§ã€ã¹ãapã (SoftAP) ãšãstã (STA) éã®è»¢éãæäŸããŸããã
ãã¡ãããNAT ãªãã§ãå®è¡ã§ããŸãããXNUMX ã€ä»¥äžã® STA ãåæã«ãapãã€ã³ã¿ãŒãã§ã€ã¹ã«æ¥ç¶ãããstããããã¯ãŒã¯ ã€ã³ã¿ãŒãã§ã€ã¹ãããapãã« IP ã¢ãã¬ã¹ãåæãããšåé¡ãçºçããŸãã ãããã£ãŠãå°é£ã¯ç¡é§ã§ãããNAT ã䜿çšãããšç°¡åã«ãªããŸãã
ããã«ãmartin-ger ããã®ãã©ãŒã¯ esp-lwip ããããIP4 çšã® NAT ã®ç°¡åãªå®è£ ãè¿œå ãããŠããŸãã
çŽç²ã«èŠãç®ã ããèããŠäœãçŽããããŠããããããŠããŸããã (ç§ã®æèŠã§ã¯ããããžã§ã¯ãããã©ãŒã¯ããã«ãLWIP ã䜿çšããæ¹ãç°¡åã ã£ããšæããŸã)HOOK ã¢ã»ã³ããªäžã«å®çŸ©ãããé¢æ°) ã§ãããé 延ãè延ããŠãããmartin-ger ã®ãªãã·ã§ã³ããã®ãŸãŸäœ¿çšãããŸãã
ã«ãŒã¿ãŒ ã¢ãŒãã§ã¯ãåä¿¡ããã³éä¿¡ IP4 ãã©ãã£ãã¯ã衚瀺ãããŸãã
ç¹ã«ãç»é¢ã«è¡šç€ºããçµ±èšããã¡ã€ã«ã«åéããããã«ã以äžãæœåºãããŸãã
- SoftAP ESP32 (DHCP ãã±ãã) ã«æ¥ç¶ããããã€ã¹ã®åå
- SoftAP ESP53 ã«æ¥ç¶ãããŠããããã€ã¹ããã® DNS ãªã¯ãšã¹ã (UDP ããŒã 32) ããã® URLã
ããã«ãPCAP ãã¡ã€ã«ãžã®ãã©ãã£ãã¯èšé²ãæå¹ã«ããããšãã§ããŸãã
ãã®ã¢ãŒãã¯ãé»è©±æ©ããããã¯ãŒã¯ã«äœãéä¿¡ããã©ãã«éä¿¡ãããããç解ããã®ã«éåžžã«åœ¹ç«ã¡ãŸãã
ãããã¯ãŒã¯ ã€ã³ã¿ãŒãã§ã€ã¹ ã¬ãã«ã§ SoftAP ESP32 ã®éåä¿¡ãã©ãã£ãã¯ãå®å šã«å¶åŸ¡ã§ããããšãèæ ®ããŠããã®ã¢ãŒãã䜿çšããä»ã®æ¹æ³ãèããããšãã§ããŸãã Ehernet ããã㌠(destMAC[6]+srcMAC[6]+type[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æéããã£ãã®ã§ãããªã³ãåºæ¿ã¯äœããŸããã§ããã
ãããŠãããããå Žåã¯ãæ¢è£œã®ããŒãããã§ã¯ãªããåã ã®ã³ã³ããŒãã³ãããçµã¿ç«ãŠãå¿ èŠããããŸãã ããããã°å¯žæ³ã¯ããã«å°ãããªããŸãã
åºæïŒ habr.com