ESP32์—์„œ Wi-Fi๋ฅผ ์ด์šฉํ•œ ๊ฒŒ์ž„

ESP32์—์„œ Wi-Fi๋ฅผ ์ด์šฉํ•œ ๊ฒŒ์ž„

WiFi ๋„คํŠธ์›Œํฌ ๋ถ„์„์„ ์œ„ํ•œ ํœด๋Œ€์šฉ ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค ์ƒ๊ฐ์„ ๊ฐ–๊ฒŒ ๋œ ๊ฒƒ์€ ์ด ๊ธฐ์‚ฌ.

์•„์ด๋””์–ด๋ฅผ ์ฃผ์‹  ๊ทธ๋“ค์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ•  ์ผ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์ž‘์—…์€ ๋„คํŠธ์›Œํฌ ๊ธฐ์ˆ  ๋ถ„์•ผ์—์„œ ์žฌ๋ฏธ๋ฅผ ๋Š๋ผ๊ณ  ์ง€์‹์„ ๋„“ํž ๋ชฉ์ ์œผ๋กœ ์ทจ๋ฏธ๋กœ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ฌํ•ด ์ดˆ๋ถ€ํ„ฐ ์ฒœ์ฒœํžˆ ์ฃผ 1..4์‹œ๊ฐ„์”ฉ.
์‹ค์šฉํ™” ๊ณ„ํš์€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๊ฒƒ๋“ค. ์ด๊ฒƒ์€ ํ•ด์ปค์˜ ๋„๊ตฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ˜„์žฌ ๊ณ„ํš๋œ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ์ž‘๋™ ์ค‘์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์†Œ์Šค๋Š” ์กฐ๋ฆฝ ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์—ฌ๊ธฐ์— ๊ฒŒ์‹œ๋จ. ์กฐ๋ฆฝ ์„ค๋ช…์„œ ๋“ฑ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋…ธํŠธ์—์„œ๋Š” github์— ๊ฒŒ์‹œ๋œ ์ •๋ณด๋ฅผ ๋ณต์ œํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ณ„๋„๋กœ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š” ๊ฒƒ๋งŒ ๋ง์”€ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

"๋ฒ”์šฉ ๋„๊ตฌ"์— ๋Œ€ํ•œ ๋‚˜์˜ ์˜๊ฒฌ๊ณผ ESP32๋ฅผ ์„ ํƒํ•œ ์ด์œ 

๋‚˜๋Š” ์ง„์‹ค์ด๋ผ๊ณ  ์ฃผ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋‚˜ ์ž์‹ ๋งŒ์˜ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ•˜๋“œ์›จ์–ด ์„ ํƒ์„ ์ •๋‹นํ™”ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ์‚ฌ์—์„œ ์ œ์•ˆ Linux(์ดˆ๊ธฐ Raspberry Pi) + ์ปจํŠธ๋กค๋Ÿฌ(STM32) + CC1110(8051 ์ฝ”์–ด) ํ˜•ํƒœ์˜ โ€œ์ฃผ๋ณ€ ์žฅ์น˜โ€ ์กฐํ•ฉ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ๊ฑฐ๊ธฐ์— ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒƒ์„ ๋‹ด๊ฒ ๋‹ค๋Š” ๊ณ„ํš(125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?)๋Š” ๋‚˜์—๊ฒŒ ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์ด ํ”„๋กœ์ ํŠธ ๋น„๊ณต๊ฐœ ๋ฐ ํ์‡„๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋  ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ(flipper-zero github "์ด ์กฐ์ง์—๋Š” ๊ณต๊ฐœ ์ €์žฅ์†Œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.") ๊ทธ๋‹ค์ง€ ์ผ๋ฐ˜์ ์ด์ง€ ์•Š์€ ํ•˜๋“œ์›จ์–ด๋กœ ๋‚˜์•„๊ฐ”์Šต๋‹ˆ๋‹ค.

์–ด์ฉŒ๋ฉด ์ œ๊ฐ€ ํ‹€๋ ธ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ์ž‘์„ฑ์ž๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์†Œ์Šค๋ฅผ ๊ณต๊ฐœ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์†Œ์Šค ์ฝ”๋“œ ์—†์ด๋Š” ๊ทธ๋Ÿฌํ•œ ํ•˜๋“œ์›จ์–ด๋ฅผ ๊ตฌ์ž…ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

"๋„๊ตฌ"์— ๋Œ€ํ•œ ๋‚˜์˜ ์š”๊ตฌ ์‚ฌํ•ญ

์ƒ์ž๋Š” ์ž‘์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ž‘์„์ˆ˜๋ก ์ข‹์Šต๋‹ˆ๋‹ค).

๊ทธ๋Ÿฌ๋ฏ€๋กœ :

  • ๋‚ด์žฅ ๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Wi-Fi๋กœ ์ž‘์—…ํ•  ๋•Œ ์ „๋ฅ˜๊ฐ€ 100mA๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๋‚ด์žฅ ๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ํฌ๊ฑฐ๋‚˜ ์˜ค๋ž˜ ์ง€์†๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ "๋ฐ•์Šค"๋Š” ํ‘œ์ค€ ๋ณด์กฐ ๋ฐฐํ„ฐ๋ฆฌ๋กœ ๊ตฌ๋™๋ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“ , ๋‚ด ์ฃผ๋จธ๋‹ˆ/์ฐจ์—๋Š” ํ•ญ์ƒ ๋ณด์กฐ ๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚ด๋ถ€์— ๋„๊ตฌ๊ฐ€ ํฌํ•จ๋œ Linux "์ƒ์ž"๋ฅผ ๋ณด๊ด€ํ•˜์„ธ์š”. ์ˆ˜๋…„์— ๊ฑธ์ณ ๋ชจ๋“  ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž‘์€ ํ™”๋ฉด๊ณผ ๋นˆ์•ฝํ•œ ์ œ์–ด ๋ฒ„ํŠผ ์„ธํŠธ๋กœ๋Š” ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ „์ฒด ํ‚ค๋ณด๋“œ์™€ ํ™”๋ฉด์„ ๊ฐ–์ถ˜ ์ผ๋ฐ˜ ๋…ธํŠธ๋ถ์—์„œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธ/์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์‰ฝ๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ณ  ๋„๋ฆฌ ์•Œ๋ ค์ ธ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ SDK, ๋งŽ์€ ์˜ˆ์ œ ๋ฐ ๋ฌธ์„œ).

๊ฒฐ๊ณผ์ ์œผ๋กœ ESP32๋ผ๋Š” ์„ ํƒ์ด ๋ถ„๋ช…ํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

์กฐ์น˜๋ฅผ ์ทจํ•˜๋„๋ก ์œ ๋„ํ•œ ๊ธฐ์‚ฌ์— ๋ช…์‹œ๋œ ๋ชจ๋“  ์ž‘์—…์— ๋Œ€ํ•ด ESP32์˜ ๊ธฐ๋Šฅ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•„์ง๋„ ๊ฐ€์žฅ ํ•˜๊ณ  ์‹ถ์€ ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ธ”๋ฃจํˆฌ์Šค๋กœ ๋†€์•„๋ณด์„ธ์š”.
  • ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ•˜๋“œ์›จ์–ด๋กœ 433mHz ๋ฒ”์œ„๋ฅผ ์‹œํ—˜ํ•ด ๋ณด์‹ญ์‹œ์˜ค(์ง„ํญ ๋ณ€์กฐ๋งŒ ์žˆ์œผ๋ฉด ์‹ค์ œ ์š”๊ตฌ ์‚ฌํ•ญ์— ์ถฉ๋ถ„ํ•จ).

ESP32์˜ ์—ฐ๊ณ ๋ฅผ ํƒ€๊ณ  ๋‚ ์•„๋ณด์„ธ์š”

  • ESP32 SDK(IDF)๋Š” ๋‹ค์†Œ ํˆฌ๋ฐ•ํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ ๊ธฐ๋Šฅ(์˜ˆ: WiFi ์Šคํƒ)์€ ์กฐ๋ฆฝ๋œ ์ •์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜•ํƒœ๋กœ ์†Œ์Šค ์ฝ”๋“œ ์—†์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • 5GHz ๋Œ€์—ญ์€ ์ง€์›๋˜์ง€ ์•Š์œผ๋ฉฐ Wi-Fi ์ž‘์—…์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์ œํ•œ ์‚ฌํ•ญ๊ณผ ์„œํˆฌ๋ฅธ ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฐ€๊ฒฉ/ํฌ๊ธฐ๊ฐ€ ์ด๋Ÿฌํ•œ ๋‹จ์ ์„ ์™„๋ฒฝํ•˜๊ฒŒ ๋ณด์™„ํ•ด์ค๋‹ˆ๋‹ค.

์ฃผ์š” ์†Œํ”„ํŠธ์›จ์–ด ๊ธฐ๋Šฅ

๊ฐ„๋‹จํ•˜๊ฒŒ ๊ธฐ๋Šฅ๊ณผ ์ œ ์ƒ๊ฐ์„ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์„ค์ • ๊ด€๋ฆฌ ๋ฐ SD์—์„œ ํŒŒ์ผ ์—…๋กœ๋“œ

๋ชจ๋“  ์™ธ๋ถ€ ์ œ์–ด๋Š” ๋ณ„๋„์˜ ๋ฉ”๋‰ด ํ•ญ๋ชฉ์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฐ„๋‹จํ•œ ์›น ํŽ˜์ด์ง€๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ESP32๋Š” WiFi AP ๋ชจ๋“œ์—์„œ ์‹œ์ž‘๋˜์–ด ๊ณ ์ • IP ์ฃผ์†Œ์— ํŽ˜์ด์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

ESP32 ์ฝ”์–ด๋Š” ๋งค์šฐ ๋น ๋ฅด์ง€๋งŒ ์‹คํ—˜์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๋‚ด์žฅ ์›น ์„œ๋น„์Šค์™€ ๋ผ์šฐํ„ฐ ๋ชจ๋“œ์˜ ๋™์‹œ ์ž‘๋™์€ ๊ทธ๋‹ค์ง€ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋™์  ์ œ์–ด๊ฐ€ ์—†์œผ๋ฉฐ ๋‹ค๋ฅธ ๋ชจ๋“  ๋ชจ๋“œ์—์„œ๋Š” ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์—ฐ๊ตฌ ๋ชฉ์ ์œผ๋กœ๋Š” ๋™์  ์ œ์–ด๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋น„์ฝ˜ ํŒจํ‚ค์ง€ ์ž‘์—… ๋ชจ๋“œ

๋ชจ๋“œ๋Š” ์ง„๋ถ€ํ•˜๊ณ  ๊ทธ๋‹ค์ง€ ํฅ๋ฏธ๋กญ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. โ€œ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—โ€ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ํ™•์ธ์„ ์œ„ํ•ด.
๊ณต์‹ Espressif ์˜ˆ์ œ์—๋Š” ์˜ˆ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

AP ๋ชฉ๋ก ๊ฒ€์ƒ‰ ๋ชจ๋“œ.
์‚ฌ์‹ค ์–ด๋–ค ์Šค๋งˆํŠธํฐ์ด๋“  ์ด๋Ÿฐ ์ผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
์Œ, ์ด ๋ชจ๋“œ์—์„œ๋Š” AP ๋ชฉ๋ก์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
๋น„์ฝ˜ ์ŠคํŒจ๋จธ.
ESP32๋Š” ์ˆจ๊ฒจ์ง„ SSID์™€ ์ž„์˜์˜ MAC์ด ์žˆ๋Š” AP๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋œ SSID ๋ชฉ๋ก(์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ์ด์ „์— AP ๋ชฉ๋ก์„ ์Šค์บ”ํ•˜์—ฌ ์–ป์€)์— ๋”ฐ๋ผ [๋น„์ฝ˜ ํ”„๋ ˆ์ž„]์„ ๋ณด๋‚ด๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

WiFi ํŒจํ‚ท ์Šค๋‹ˆํ•‘ ๋ชจ๋“œ

Espressif ๊ฐœ๋ฐœ์ž๋Š” ์ฝœ๋ฐฑ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด "๊ณต์ค‘์„ ๋‚ ์•„๋‹ค๋‹ˆ๋Š”" ๋ชจ๋“  WiFi ํŒจํ‚ท์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œํ”„ํŠธ์›จ์–ด์— ์ˆ˜์‹ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๊ณ ์ • ์ฑ„๋„์— ๋Œ€ํ•ด์„œ๋งŒ ๋ชจ๋“œ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹ค์ œ๋กœ ์ „๋ถ€๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

์ฝœ๋ฐฑ ํ•จ์ˆ˜ ์ฒ˜๋ฆฌ์—๋Š” ๋งค์šฐ ์—„๊ฒฉํ•œ ์‹œ๊ฐ„ ์ œํ•œ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‹จ์ˆœ ํ†ต๊ณ„ ์ˆ˜์ง‘ ๋ชจ๋“œ์—์„œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š๋Š”๋‹ค๋ฉด SD ์นด๋“œ์˜ PCAP ํŒŒ์ผ ๊ธฐ๋ก ๋ชจ๋“œ์˜ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ์™€ ์„ธ๋งˆํฌ์–ด์˜ ๋Œ€๊ธฐ์—ด์„ ํ†ตํ•ด ๊ธฐ๋ก์„ ์ •๋ฆฌํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝœ๋ฐฑ์„ ํ˜ธ์ถœํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•œ ์ฝ”์–ด์—์„œ ์‹คํ–‰๋˜๊ณ  SD์— ์“ฐ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ์ฝ”์–ด์—์„œ ์‹คํ–‰๋œ๋‹ค๋Š” ํŠน์„ฑ์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

"์‹œ๋„๋Ÿฌ์šด ๊ณต๊ธฐ" ์ค‘์—๋Š” ์ผ๋ถ€ ํŒจํ‚ท์ด ์†์‹ค๋˜์ง€๋งŒ(๋Œ€๊ธฐ์—ด์— ๊ณต๊ฐ„์ด ์—†์–ด ํ๊ธฐ๋จ), ์ €๋…์— ์•„ํŒŒํŠธ์˜ ์ผ๋ฐ˜์ ์ธ "๊ณต๊ธฐ"(๊ฐ€์‹œ์„ฑ ๋‚ด 5..7 AP)์—์„œ๋Š” PCAP์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ํŒจํ‚ท ์†์‹ค ์—†์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ PCAP ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ธฐ๋ก์„ ์œ„ํ•ด ํŒจํ‚ท ํ—ค๋”์˜ MAC ๋ชฉ๋ก์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ํ•„ํ„ฐ๋ง ๋ชจ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํด๋Ÿฝ/์นดํŽ˜์— ์žˆ๋Š” ์‚ฌ๋žŒ์ด ๋“ค์–ด์˜ค๊ฑฐ๋‚˜ ๋ˆˆ์— ๋„๊ธฐ ์ „์— ๊ทธ ์‚ฌ๋žŒ์˜ ๋ชจ์Šต์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. WiFi์™€ ์•Œ๋ ค์ง„ AP์— ๋Œ€ํ•œ ์ž๋™ ์—ฐ๊ฒฐ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ์‚ฌ๋žŒ์€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. (์ง€๊ธˆ์€ ๊ป๋Š”๋ฐ..)

Wireshark์—์„œ ๊ธฐ๋ก๋œ ๊ตํ†ต๋Ÿ‰์„ ๋ณด๋Š” ๊ฒƒ์€ ์ง€๋„๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๊ต์œก์ ์ด๊ณ  ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

deauth ํŒจํ‚ค์ง€ ์ž‘์—… ๋ชจ๋“œ

๊ธฐ๋ณธ์ ์œผ๋กœ ์†Œ์Šค ์—†์ด ์ œ๊ณต๋˜๋Š” libnet80211.a ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ํŒจํ‚ค์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ๊ธˆ์ง€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ํŒจ์น˜๋ฅผ ๊ฒŒ์‹œํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์˜์‹ฌ์Šค๋Ÿฌ์› ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋น„์ธ์ฆ ํ”„๋ ˆ์ž„ ์Šค์บ” ๋ชจ๋“œ๋ฅผ ์ผœ๊ณ  ์—ฌ๊ธฐ์ €๊ธฐ ๋Œ์•„๋‹ค๋‹ˆ๋‹ค๊ฐ€ '๋„๋Œ€์ฒด ๋ญ์ง€'๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ esp8266์—์„œ๋Š” ์ด๋Ÿฌํ•œ ํŒจํ‚ค์ง€์˜ ์ „๋‹ฌ์ด ์ข…๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉฐ esp8266์šฉ ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ github์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŽ์€ ๊ณณ์—์„œ(์–ด๋””์ธ์ง€๋Š” ๋ฐํžˆ์ง€ ์•Š๊ฒ ์ง€๋งŒ) ์ด ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์›์น˜ ์•Š๋Š” AP๋ฅผ ์–ต์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋“ค์€ '๊นกํŒจ'๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค...

๊ทธ๋ฆฌ๊ณ  ๋‚ด ํœด๋Œ€ํฐ์˜ ์ธํ„ฐ๋„ท ๋ฐฐํฌ๊ฐ€ ์–ด๋–ค ๊ณณ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์—๋„ ๋†€๋ž์Šต๋‹ˆ๋‹ค...

์ด๋Ÿฌํ•œ ํŒจํ‚ท์˜ ์ˆ˜์™€ RSSI๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ชจ๋“œ๋Š” "์™ผ์ชฝ AP๊ฐ€ ์‹ซ์–ดํ•˜๋Š” ๋ถ€๋ถ„"์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ผ์šฐํ„ฐ ๋ชจ๋“œ

์ด ๊ธฐ๋Šฅ์€ ์•„๋งˆ๋„ ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ํƒ์ƒ‰ ๊ธฐ๋Šฅ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ESP32๋Š” STA + SoftAP ๋ชจ๋“œ์˜ ๋™์‹œ ์ž‘๋™์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์— ํด๋ž˜์‹ NAT ๋ผ์šฐํ„ฐ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ์Šคํƒ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด Espressif๋Š” lwip ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํฌํฌ(๊ฑฐ์˜ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Œ)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ‘œ์ค€ ๋นŒ๋“œ์—์„œ esp-lwip ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” netif ์ธํ„ฐํŽ˜์ด์Šค 'ap'(SoftAP)๊ณผ 'st'(STA) ๊ฐ„์˜ ์ „๋‹ฌ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  NAT ์—†์ด๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ 'ap' ์ธํ„ฐํŽ˜์ด์Šค์— XNUMX๊ฐœ ์ด์ƒ์˜ STA์„ ๋™์‹œ์— ์—ฐ๊ฒฐํ•˜๊ณ  'st' ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์˜ IP ์ฃผ์†Œ๋ฅผ 'ap'์— ๋™๊ธฐํ™”ํ•˜๋Š” ๋ฐ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์–ด๋ ค์›€์„ ๊ฒช์„ ๊ฐ€์น˜๊ฐ€ ์—†์œผ๋ฉฐ NAT๋ฅผ ํ†ตํ•ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ IP4์šฉ NAT์˜ ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„์„ ์ถ”๊ฐ€ํ•˜๋Š” martin-ger์˜ ํฌํฌ esp-lwip๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆœ์ „ํžˆ ๋ฏธ์šฉ์ ์œผ๋กœ ๋ฆฌ๋ฉ”์ดํฌํ•˜๊ณ  ์‹ถ์–ด์„œ ์†์ด ๊ทผ์งˆ๊ฑฐ๋ ธ์ง€๋งŒ(๋‚ด ์ƒ๊ฐ์—๋Š” ํ”„๋กœ์ ํŠธ ํฌํฌ ์—†์ด ๋” ์‰ฌ์› ์ง€๋งŒ LWIP๋ฅผ ํ†ตํ•ดํ›„ํฌ ํ•จ์ˆ˜๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ ์ค‘์— ์ •์˜๋จ) ๊ทธ๋Ÿฌ๋‚˜ ๊ฒŒ์œผ๋ฆ„์ด ๋งŒ์—ฐํ–ˆ๊ณ  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๋ถ„~XNUMX์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์ธ์‡„ํšŒ๋กœ๊ธฐํŒ์„ ๋งŒ๋“ค์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๊ธฐ์„ฑ ๋ณด๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฐœ๋ณ„ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๋ฆฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์น˜์ˆ˜๊ฐ€ ๋” ์ž‘์•„์ง‘๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€