์๋ ๋ชจ๋
์ค๋ ์ ํฌ, ๋น ํฐ ์ํฐํฌํ์ ์ผ๋ฆฌ์ผ ์๋ ์ ์ Python PyUSB๋ฅผ ํตํด USB ์ฅ์น๋ฅผ ๋ค๋ฃจ๋ ๊ฒฝํ๊ณผ ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง์ ๋ํด ์ด์ผ๊ธฐํด๋ณด๊ฒ ์ต๋๋ค.

์ ์ฌ ์๋
2019๋
์ ๋ฌ์์ ์ฐ๋ฐฉ ์ ๋ถ ๊ฒฐ์์ ์ 224ํธ "๋ด๋ฐฐ ์ ํ์ ์๋ณ ์๋จ์ ํ์ํ๊ธฐ ์ํ ๊ท์น ์น์ธ ๋ฐ ๋ด๋ฐฐ ์ ํ๊ณผ ๊ด๋ จ๋ ์๋ณ ์๋จ ํ์ ์๋ฌดํ ๋์ ์ํ์ ์ ํต์ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํ ๊ตญ๊ฐ ์ ๋ณด ์์คํ
๊ตฌํ ์ธ๋ถ ์ฌํญ"์ด ๋ฐํจ๋์์ต๋๋ค.
์ด ๋ฌธ์๋ 1๋
2019์ XNUMX์ผ๋ถํฐ ์ ์กฐ์
์ฒด๊ฐ ๋ชจ๋ ๋ด๋ฐฐ ๊ฐ์ ๋ผ๋ฒจ์ ๋ถ์ฐฉํด์ผ ํ๋ค๊ณ ์ค๋ช
ํฉ๋๋ค. ๋ํ ์ง์ ์ ํต์
์ฒด๋ UPD(Universal Transfer Document) ๋ฑ๋ก์ ํตํด ์ ํ์ ์๋ นํด์ผ ํฉ๋๋ค. ๋ํ, ๋งค์ฅ์์๋ ๋ผ๋ฒจ์ด ๋ถ์ฐฉ๋ ์ ํ์ ํ๋งค๋ฅผ ๊ธ์ ๋ฑ๋ก๊ธฐ๋ฅผ ํตํด ๋ฑ๋กํด์ผ ํฉ๋๋ค.
๋ํ 1๋ 2020์ XNUMX์ผ๋ถํฐ ํ์๊ฐ ์๋ ๋ด๋ฐฐ ์ ํ์ ์ ํต์ด ๊ธ์ง๋ฉ๋๋ค. ์ฆ, ๋ชจ๋ ๋ด๋ฑ๊ฐ์๋ ํน์ ๋ฐ์ดํฐ๋งคํธ๋ฆญ์ค ๋ฐ์ฝ๋๊ฐ ํ์๋์ด์ผ ํฉ๋๋ค. ๋์ฑ ์ค์ํ ์ ์ ๋ฐ์ดํฐ๋งคํธ๋ฆญ์ค๊ฐ ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ๋งคํธ๋ฆญ์ค๊ฐ ์๋๋ผ ๊ทธ ๋ฐ๋๋ผ๋ ๊ฒ์ ๋๋ค. ์ฆ, ํฐ์ ๋ฐํ์ ๊ฒ์์ ์ฝ๋๊ฐ ์๋๋ผ ๊ทธ ๋ฐ๋์ ๋๋ค.
์ค์บ๋๋ฅผ ํ ์คํธํด ๋ณธ ๊ฒฐ๊ณผ, ๋๋ถ๋ถ ์ค์บ๋๋ฅผ ์ฌํ๋์ํ๊ฑฐ๋ ์ฌ๊ต์กํด์ผ ํ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด ๋ฐ์ฝ๋๋ฅผ ์ธ์ํ๊ณ ์ ์์ ์ผ๋ก ์๋ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ํฉ์ ์ ํฌ ํ์ฌ์ ํฐ ๊ณจ์นซ๊ฑฐ๋ฆฌ๊ฐ ๋ ์๋ฐ์ ์์์ต๋๋ค. ์ ํฌ ํ์ฌ๋ ๋์ ์ง์ญ์ ๋งค์ฅ์ด ์ฐ์ฌํด ์๊ณ , ์๋ง ๊ฐ์ ๊ธ์ ๋ฑ๋ก๊ธฐ๊ฐ ์๋๋ฐ๋ ๋ถ๊ตฌํ๊ณ ์๊ฐ์ด ๋งค์ฐ ๋ถ์กฑํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฌด์์ ํด์ผ ํ์๊น์? ๋ ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค. ์ฒซ์งธ, ํ์ฅ ์์ง๋์ด๊ฐ ์ค์บ๋๋ฅผ ์๋์ผ๋ก ์ฌํ๋์ํ๊ณ ๋ฏธ์ธ ์กฐ์ ํ๋ ๊ฒ์ ๋๋ค. ๋์งธ, ์๊ฒฉ์ผ๋ก ์์ ํ๊ณ , ๊ฐ๊ธ์ ์ด๋ฉด ํ ๋ฒ์ ์ฌ๋ฌ ์ค์บ๋๋ฅผ ๊ฒ์ฌํ๋ ๊ฒ์ ๋๋ค.
์ฒซ ๋ฒ์งธ ์ต์ ์ ๋น์ฐํ ์ฐ๋ฆฌ์๊ฒ ์ ํฉํ์ง ์์์ต๋๋ค. ์์ง๋์ด ๋ฐฉ๋ฌธ์ ๋น์ฉ์ ์ง์ถํด์ผ ํ๊ณ , ๊ทธ๋ด ๊ฒฝ์ฐ ํ๋ก์ธ์ค๋ฅผ ์ ์ดํ๊ณ ์กฐ์ ํ๋ ๊ฒ์ด ์ด๋ ค์ ์ต๋๋ค. ํ์ง๋ง ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ฌ๋๋ค์ด ๊ณ์ ์์ ํด์ผ ํ๋ค๋ ์ ์ ๋๋ค. ์ฆ, ์ค๋ฅ๊ฐ ๋ง์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋๊ณ , ๋ง๊ฐ์ผ์ ๋ง์ถ์ง ๋ชปํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
๋ ๋ฒ์งธ ์ต์ ์ ๋ชจ๋์๊ฒ ์ข์ ๊ฒ ๊ฐ์ง๋ง, ํ ๊ฐ์ง ๋จ์ ์ด ์์ต๋๋ค. ์ผ๋ถ ์ ์ฒด๋ ํ์ํ ๋ชจ๋ OS์ ํ์ํ ์๊ฒฉ ํ๋์ฑ ๋๊ตฌ๋ฅผ ์ ๊ณตํ์ง ์์์ต๋๋ค. ๊ฒ๋ค๊ฐ ๋ง๊ฐ์ผ์ด ์ด๋ฐํ๊ธฐ ๋๋ฌธ์ ์ง์ ์๊ฐํด ๋ด์ผ ํ์ต๋๋ค.
๋ค์์ผ๋ก, ๋ฐ๋น์ 9.x OS์์ ์ ์ค์บ๋ ๋๊ตฌ๋ฅผ ์ด๋ป๊ฒ ๊ฐ๋ฐํ๋์ง ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค(์ ํฌ์ ๋ชจ๋ ๊ธ์ ๋ฑ๋ก๊ธฐ๋ ๋ฐ๋น์ ๊ธฐ๋ฐ์ ๋๋ค).
์์๊ป๋ผ๋ฅผ ํ์ด๋ณด์ธ์: ์ค์บ๋๋ฅผ ํ๋์ํ๋ ๋ฐฉ๋ฒ
๋น ํฐ ์ํฐํฌํ๊ฐ ์ด์ผ๊ธฐ๋ฅผ ๋ค๋ ค์ค๋๋ค.
๊ณต๊ธ์ ์ฒด์์ ์ ๊ณตํ๋ ๊ณต์ ์ ํธ๋ฆฌํฐ๋ Windows ๋ฐ IE์์๋ง ์๋ํฉ๋๋ค. ์ด ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ค์บ๋๋ฅผ ํ๋์ํ๊ณ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๋์ ์์คํ ์ด ๋ฐ๋น์์ด๋ฏ๋ก ๋ฐ๋น์์๋ USB-Redirector ์๋ฒ๋ฅผ, ์๋์ฐ์๋ USB-Redirector ํด๋ผ์ด์ธํธ๋ฅผ ์ค์นํ์ต๋๋ค. USB-Redirector ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ Linux ์ปดํจํฐ์์ Windows ์ปดํจํฐ๋ก ์ค์บ๋๋ฅผ ์ ๋ฌํ์ต๋๋ค.
๊ณต๊ธ์ ์ฒด์ Windows์ฉ ์ ํธ๋ฆฌํฐ๊ฐ ์ค์บ๋๋ฅผ ์ธ์ํ๊ณ ์ ์์ ์ผ๋ก ํ๋์ฑ๊น์ง ์๋ฃํ์ต๋๋ค. ๋ฐ๋ผ์ ์ฒซ ๋ฒ์งธ ๊ฒฐ๋ก ์ OS์๋ ๋ฌด๊ดํ๋ฉฐ, ํ๋์ฑ ํ๋กํ ์ฝ์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค.
์ข์์. Windows ์ปดํจํฐ์์ ๋ฆฌํ๋์ฑ์ ์์ํ๊ณ , Linux ์ปดํจํฐ์์๋ ๋คํ๋ฅผ ์คํํ์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋คํ๋ฅผ WireShark์ ๋ฐ์ด ๋ฃ์๊ณ ... ์ฌํ์ต๋๋ค(๋คํ์ ๋ํ ์ธ๋ถ ์ฌํญ ์ค ์ผ๋ถ๋ ๊ฑด๋๋ฐ๊ฒ ์ต๋๋ค. ์ค์ํ์ง ์์ต๋๋ค).
๋งค๋ฆฝ์ง๊ฐ ์ฐ๋ฆฌ์๊ฒ ๋ณด์ฌ์ค ๊ฒ:


Wireshark์ ๋ฐ๋ฅด๋ฉด ์ฃผ์ 0000-0030์ USB ์๋น์ค ์ ๋ณด์
๋๋ค.
์ฐ๋ฆฌ๋ 0040-0070 ๋ถ๋ถ์ ๊ด์ฌ์ด ์์์ต๋๋ค.
๋จ์ผ ์ ์ก ํ๋ ์์์๋ MOCFT ๊ธฐํธ๋ฅผ ์ ์ธํ๊ณ ๋ ์๋ฌด๊ฒ๋ ๋ช ํํ๊ฒ ๋ํ๋์ง ์์์ต๋๋ค. ์ด ๊ธฐํธ๋ค์ ํ์จ์ด ํ์ผ์์ ๊ฐ์ ธ์จ ๊ธฐํธ์์ผ๋ฉฐ, ํ๋ ์ ๋๊น์ง ๋จ์ ๊ธฐํธ๋ค๋ ๋ง์ฐฌ๊ฐ์ง์์ต๋๋ค(ํ์จ์ด ํ์ผ์ ๊ฐ์กฐ ํ์๋์ด ์์ต๋๋ค).

๊ฐ์ธ์ ์ผ๋ก ์ ๋ ์ผ๋ฆฌ์์ฒ๋ผ fd 3e 02 01 fe๋ผ๋ ๊ธฐํธ๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ์ ํ ๋ชฐ๋์ต๋๋ค.
๋ค์ ํ๋ ์์ ์ดํด๋ณด์์ต๋๋ค(์ฌ๊ธฐ์๋ ์๋น์ค ์ ๋ณด๊ฐ ์ ๊ฑฐ๋์๊ณ , ํ์จ์ด ํ์ผ์ด ๊ฐ์กฐ ํ์๋์์ต๋๋ค).

๋ฌด์์ด ๋ถ๋ช
ํด์ก์๊น์? ์ฒ์ ๋ ๋ฐ์ดํธ๋ ์ผ์ข
์ ์์๋ผ๋ ๊ฒ์
๋๋ค. ์ดํ ๋ชจ๋ ๋ธ๋ก์์ ์ด๋ฅผ ํ์ธํ์ง๋ง, ์ ์ก ๋ธ๋ก์ด ๋๋๊ธฐ ์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์์ต๋๋ค.

์ด ํ๋ ์๋ ํท๊ฐ๋ ธ๋๋ฐ, ์์๊ฐ ๋ฐ๋์๊ณ (๊ฐ์กฐ ํ์๋จ) ์ด์ํ๊ฒ๋ ํ์ผ์ ์ผ๋ถ๊ฐ ๋จ์ ์์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ ์ก๋ ํ์ผ ๋ฐ์ดํธ ํฌ๊ธฐ๋ 1024๋ฐ์ดํธ๋ก ํ์๋์์ต๋๋ค. ๋๋จธ์ง ๋ฐ์ดํธ๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง๋ ์ ๋ ์ ์ ์์์ต๋๋ค.
์ฐ์ , ์ ๋ ์ค๋๋ BBS-nik์ผ๋ก์ ํ์ค ์ ์ก ํ๋กํ ์ฝ์ ๊ฒํ ํ์ต๋๋ค. ์ด๋ค ํ๋กํ ์ฝ๋ 1024๋ฐ์ดํธ๋ฅผ ์ ์กํ์ง ๋ชปํ์ต๋๋ค. ํ๋์จ์ด๋ฅผ ๊ณต๋ถํ๊ธฐ ์์ํ๋ฉด์ 1K X-modem ํ๋กํ ์ฝ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ด ํ๋กํ ์ฝ์ 1024๋ฐ์ดํธ๋ฅผ ์ ์กํ ์ ์์์ง๋ง, ๋ฏธ๋ฌํ ์ฐจ์ด๊ฐ ์์์ต๋๋ค. ์ฒ์์๋ 128๋ฐ์ดํธ๋ง ์ ์กํ๊ณ , ์ค๋ฅ๊ฐ ์์ ๋๋ง ์ ์ก ๋ฐ์ดํธ ์๊ฐ ์ฆ๊ฐํ์ต๋๋ค. ์ ๋ ์ฆ์ 1024๋ฐ์ดํธ๋ฅผ ์ ์กํ์ต๋๋ค. ๊ทธ๋์ ์ ์ก ํ๋กํ ์ฝ, ํนํ X-modem์ ์ฐ๊ตฌํ๊ธฐ๋ก ํ์ต๋๋ค.
๋ชจ๋์๋ ๋ ๊ฐ์ง ๋ณํ์ด ์์์ต๋๋ค.
๋จผ์ , CRC8์ ์ง์ํ๋ XMODEM ํจํท ํฌ๋งท(์๋ XMODEM):

๋์งธ, CRC16์ ์ง์ํ๋ XMODEM ํจํท ํฌ๋งท(XmodemCRC):

SOH, ํจํค์ง ๋ฒํธ, CRC, ํจํค์ง ๊ธธ์ด๋ฅผ ์ ์ธํ๋ฉด ๋น์ทํด ๋ณด์
๋๋ค.
๋ ๋ฒ์งธ ์ ์ก ๋ธ๋ก์ ์์ ๋ถ๋ถ์ ์ดํด๋ณด์์ต๋๋ค(๊ทธ๋ฆฌ๊ณ ๋ค์ ํ์จ์ด ํ์ผ์ ๋ณด์์ง๋ง ๋ค์ฌ์ฐ๊ธฐ๊ฐ 1024๋ฐ์ดํธ์์ต๋๋ค).

์ต์ํ ํค๋ fd 3e 02๋ฅผ ๋ณด์์ง๋ง ๋ค์ ๋ ๋ฐ์ดํธ๋ ์ด๋ฏธ ๋ฐ๋์ด ์์์ต๋๋ค.01 fe์๊ณ 02 fd๊ฐ ๋์์ต๋๋ค.๊ทธ๋ฐ ๋ค์ ๋ ๋ฒ์งธ ๋ธ๋ก์ด ์ด์ 02๋ก ๋ฒํธ๊ฐ ๋งค๊ฒจ์ง ๊ฒ์ ๋ณด๊ณ ์ดํดํ์ต๋๋ค.๋ด ์์ ์ ์ก ๋ธ๋ก์ ๋ฒํธ๊ฐ ์์์ต๋๋ค.์ฒซ ๋ฒ์งธ 1024 ์ ์ก์ 01, ๋ ๋ฒ์งธ๋ 02, ์ธ ๋ฒ์งธ๋ 03์
๋๋ค(๋ฌผ๋ก 1์ง์).ํ์ง๋ง fe์์ fd๋ก์ ๋ณ๊ฒฝ์ ๋ฌด์์ ์๋ฏธํ ๊น์?๋ด ๋์ 0 ๊ฐ์ํ ๊ฒ์ ๋ณด์๊ณ , ๋ด ๋๋ ํ๋ก๊ทธ๋๋จธ๊ฐ 1์ด ์๋๋ผ 1๋ถํฐ ์ผ๋ค๋ ๊ฒ์ ์๊ธฐ์์ผฐ์ต๋๋ค.๊ทธ๋ ๋ค๋ฉด ์ ์ฒซ ๋ฒ์งธ ๋ธ๋ก์ 0์ด ์๋๋ผ 02์ผ๊น์?์ ๋ ์ด ์ง๋ฌธ์ ๋ํ ๋ต์ ์ฐพ์ง ๋ชปํ์ต๋๋ค.ํ์ง๋ง ๋ ๋ฒ์งธ ๋ธ๋ก์ ์ด๋ป๊ฒ ์ธ๋์ง ์ดํดํ์ต๋๋ค.๋ ๋ฒ์งธ ๋ธ๋ก์ FF - (๋ง์ด๋์ค) ์ฒซ ๋ฒ์งธ ๋ธ๋ก์ ๋ฒํธ์ ๋ถ๊ณผํฉ๋๋ค.๋ฐ๋ผ์ ๋ ๋ฒ์งธ ๋ธ๋ก์ = 02 (FF-02) = XNUMX FD๋ก ์ง์ ๋์์ต๋๋ค.๊ทธ ํ์ ๋คํ๋ฅผ ์ฝ์ด๋ณด๋ ๋ด ์ถ์ธก์ด ๋ง์์ต๋๋ค.
๊ทธ๋ฌ์ ๋ค์๊ณผ ๊ฐ์ ์ ์ก ๊ทธ๋ฆผ์ด ๋ํ๋๊ธฐ ์์ํ์ต๋๋ค.
์ ์ก ์์
fd3e02-์์
01 FE โ ์ ์ก ์นด์ดํฐ
์ ์ก(34๊ฐ ๋ธ๋ก, 1024๋ฐ์ดํธ ์ ์ก)
fd 3e 1024๋ฐ์ดํธ์ ๋ฐ์ดํฐ(30๋ฐ์ดํธ ๋ธ๋ก์ผ๋ก ๋๋).
์ ์ก ์ข
๋ฃ
FD 25
1024๋ฐ์ดํธ๋ก ์ ๋ ฌํ๊ธฐ ์ํ ๋จ์ ๋ฐ์ดํฐ์ ๋๋ค.
๋ธ๋ก ์ ์ก ํ๋ ์์ ๋์ ์ด๋ป๊ฒ ์๊ฒผ๋์?

fd 25 โ ๋ธ๋ก ์ ์ก ์ข
๋ฃ ์ ํธ. 2f 52 โ ์ต๋ 1024๋ฐ์ดํธ๊น์ง์ ๋๋จธ์ง ํ์ผ. ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ฉด 2f 52๋ 16๋นํธ CRC ์ฒดํฌ์ฌ์
๋๋ค.
์ต๊ด์ ์ผ๋ก C๋ก ํ์ผ์์ 1024๋ฐ์ดํธ๋ฅผ ์ถ์ถํ์ฌ 16๋นํธ CRC๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์์ต๋๋ค. ํ๋ก๊ทธ๋จ์ ์คํํด ๋ณด๋ 16๋นํธ CRC๊ฐ ์๋์์ต๋๋ค. ๋ค์ ํ๋ฒ, ์ฝ 1024์ผ ๋์ ๋ฉํ๋ ์์์ต๋๋ค. ๊ทธ๋์ ์ ๋ ๊ทธ๊ฒ์ด ์ฒดํฌ์ฌ์ด ์๋๋ผ๋ฉด ๋ฌด์์ผ์ง ์ดํดํ๋ ค๊ณ ์ ์ผ์ต๋๋ค. ์์ด ์ฌ์ดํธ๋ค์ ์ดํด๋ณด๋ X-๋ชจ๋์ด ์์ฒด ์ฒดํฌ์ฌ ๊ณ์ฐ ๋ฐฉ์์ธ CRC-CCITT(XModem)๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค. ์ด ๊ณ์ฐ์ C๋ก ๊ตฌํํ ์ฌ์ดํธ๋ ์์์ง๋ง, ์จ๋ผ์ธ์์ ์ด ์ฒดํฌ์ฌ์ ๊ณ์ฐํ๋ ์ฌ์ดํธ๋ฅผ ์ฐพ์์ต๋๋ค. XNUMX๋ฐ์ดํธ ํ์ผ์ ์น ํ์ด์ง๋ก ์ ์กํ๋๋, ํด๋น ์ฌ์ดํธ์์ ํ์ผ์ ์ฒดํฌ์ฌ๊ณผ ์์ ํ ์ผ์นํ๋ ์ฒดํฌ์ฌ์ ๋ณด์ฌ์ฃผ์์ต๋๋ค.
๋ง์ธ! ๋ง์ง๋ง ์์๊ป๋ผ๊ฐ ํด๊ฒฐ๋์์ผ๋, ์ด์ ์ง์ ํ์จ์ด๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ ์ง์์ (์ค์ง ๋จธ๋ฆฟ์์๋ง ๋จ์ ์๋) ๊ฐ๋ ฅํ ํดํท์ธ Python์ ์ ํตํ Ilya์๊ฒ ์ ์ํ์ต๋๋ค.
ํ๋ก๊ทธ๋จ ๋ง๋ค๊ธฐ
์ผ๋ฆฌ์ ์๋ ์ ์ด ์ด์ผ๊ธฐ๋ฅผ ๋ค๋ ค์ค๋๋ค.
๊ด๋ จ ์ง์๋ฅผ ๋ฐ๊ณ ๋๋ ๋งค์ฐ "๊ธฐ๋ปค๋ค".
์ด๋์๋ถํฐ ์์ํด์ผ ํ ๊น์? ๋ค, ์ฒ์๋ถํฐ์. ๏ USB ํฌํธ์์ ๋คํ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ๋ถํฐ์.
USB-pcap ์คํ
์ฅ์น๊ฐ ์ฐ๊ฒฐ๋ ํฌํธ์ ๋คํ๋ฅผ ์ ์ฅํ ํ์ผ์ ์ ํํฉ๋๋ค.

์ค์บ๋๋ฅผ Windows์ฉ ๊ธฐ๋ณธ EZConfigScanning ์ํํธ์จ์ด๊ฐ ์ค์น๋ ์ปดํจํฐ์ ์ฐ๊ฒฐํฉ๋๋ค.

์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ์ฅ์น์ ๋ช
๋ น์ ๋ณด๋ด๋ ์์ ์ ์ฐพ์ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด ๋ช
๋ น๋ค์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ ๊น์? ์ด๋์ ์ป์ ์ ์์๊น์?
ํ๋ก๊ทธ๋จ์ด ์์๋๋ฉด ์ฅ๋น๊ฐ ์๋์ผ๋ก ํด๋ง๋ฉ๋๋ค(์ด ๋ถ๋ถ์ ์ ์ ํ์ ์ค๋ช
ํ๊ฒ ์ต๋๋ค). ๊ทธ๋ฆฌ๊ณ ๊ณต์ ์ฅ๋น ๋ฌธ์์ ๊ต์ก์ฉ ๋ฐ์ฝ๋๋ ์์ต๋๋ค. ๊ธฐ๋ณธ ์ค์ ์
๋๋ค. ์ ํฌ ํ์
๋๋ค.

ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์์ ํ์ต๋๋ค. Wireshark๋ฅผ ํตํด dump.pcap์ ์ฝ๋๋ค.
EZConfigScanning์ ์์ํ ๋ ์ฐจ๋จํฉ๋๋ค. ์ฃผ์๊ฐ ํ์ํ ๋ถ๋ถ์ ๋นจ๊ฐ์์ผ๋ก ํ์๋ฉ๋๋ค.


์ด ๋ชจ๋ ๊ฒ์ ์ฒ์ ๋ณธ ๋๋ ๋๋ดํ๋ค. ๋ค์์๋ ์ด๋๋ฅผ ํ์ผ ํ ์ง ์ ์ ์์๋ค.
์ฝ๊ฐ์ ๋ธ๋ ์ธ์คํ ๋ฐ๊ณผ... ์ํ! ์ฐ๋ ๊ธฐ์ฅ์์ ์์ -๊ฐ์ in๊ณผ in ๊ทธ๊ฒ ์์.
URB_INTERRUPT๊ฐ ๋ญ์ง ๊ตฌ๊ธ์์ ๊ฒ์ํด ๋ดค๋๋ฐ, ๋ฐ์ดํฐ ์ ์ก ๋ฐฉ์์ด๋ผ๋ ๊ฑธ ์ ์ ์์์ต๋๋ค. ์ด ๋ฐฉ์์๋ ์ ์ด ๋ฐฉ์, ์ธํฐ๋ฝํธ ๋ฐฉ์, ๋ฑ์์ฑ ๋ฐฉ์, ๋๋ ๋ฐฉ์ ๋ฑ ๋ค ๊ฐ์ง๊ฐ ์์ต๋๋ค. ๊ฐ ๋ฐฉ์์ ๋ํ ์ค๋ช ์ ๋ณ๋๋ก ํ์ธํ์ค ์ ์์ต๋๋ค.
USB ์ฅ์น ์ธํฐํ์ด์ค์ ์๋ํฌ์ธํธ ์ฃผ์๋ "lsusb โv" ๋ช ๋ น์ด๋ pyusb๋ฅผ ํตํด ์ป์ ์ ์์ต๋๋ค.
์ด์ ํด๋น VID๋ฅผ ๊ฐ์ง ๋ชจ๋ ์ฅ์น๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค. VID:PID๋ก ๊ตฌ์ฒด์ ์ผ๋ก ๊ฒ์ํ ์ ์์ต๋๋ค.
![]()
๋ค์๊ณผ ๊ฐ์ด ๋ณด์
๋๋ค.


์ด์ ํ์ํ ์ ๋ณด, ์ฆ P_INFO ๋๋ DEFALT ๋ช
๋ น, ๋ช
๋ น์ ์์ฑํ ์ฃผ์(์๋ํฌ์ธํธ=03)์ ์๋ต์ ๋ฐ์ ์ฃผ์(์๋ํฌ์ธํธ=86)๋ฅผ ์ป์์ต๋๋ค. ์ด์ ๋ช
๋ น์ XNUMX์ง์๋ก ๋ณํํ๋ ์์
๋ง ๋จ์์ต๋๋ค.
![]()

์ด๋ฏธ ์ฅ์น๋ฅผ ์ฐพ์์ผ๋ฏ๋ก ์ปค๋์์ ์ฐ๊ฒฐ์ ๋๊ฒ ์ต๋๋ค.

โฆ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ฃผ์ 0x03์ ์๋ํฌ์ธํธ์ ์ธ ๊ฒ์
๋๋ค.

... ๊ทธ๋ฆฌ๊ณ ์ฃผ์ 0x86์ ์๋ํฌ์ธํธ์์ ์๋ต์ ์ฝ์ต๋๋ค.

๊ตฌ์กฐํ๋ ๋ต๋ณ:
P_INFOfmt: 1
mode: app
app-present: 1
boot-present: 1
hw-sn: 18072B44CA
hw-rev: 0x20
cbl: 4
app-sw-rev: CP000116BBA
boot-sw-rev: CP000014BAD
flash: 3
app-m_name: Voyager 1450g
boot-m_name: Voyager 1450g
app-p_name: 1450g
boot-p_name: 1450g
boot-time: 16:56:02
boot-date: Oct 16 2014
app-time: 08:49:30
app-date: Mar 25 2019
app-compat: 289
boot-compat: 288
csum: 0x6986์ฐ๋ฆฌ๋ dump.pcap์์ ์ด ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.



ํ๋ฅญํฉ๋๋ค! ์์คํ
๋ฐ์ฝ๋๋ฅผ 16์ง์๋ก ๋ณํํฉ๋๋ค. ์ด์ ๊ต์ก ๊ธฐ๋ฅ์ด ์ค๋น๋์์ต๋๋ค.
ํ์จ์ด๋ ์ด๋ค๊ฐ์? ๋๊ฐ์ ๋ณด์ด์ง๋ง, ๋ฏธ๋ฌํ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
๋ฆฌํ๋์ ๊ณผ์ ์ ์์ ํ ์ดํด๋ณด๊ณ ๋๋, ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๊ณ ์๋์ง ๋๋ต์ ์ผ๋ก ์ดํดํ๊ฒ ๋์์ต๋๋ค. XMODEM์ ๋ํ ๊ธ์ ์ฐธ๊ณ ํ๋๋ฐ, ์ด ํต์ ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง, ๋น๋ก ์ผ๋ฐ์ ์ธ ๋ด์ฉ์ด์ง๋ง, ์ดํดํ๋ ๋ฐ ํฐ ๋์์ด ๋์์ต๋๋ค. ๋๋ ๋ ์๋ฅผ ๊ถํฉ๋๋ค.
๋คํ๋ฅผ ์ดํด๋ณด๋ฉด ํ๋ ์ ํฌ๊ธฐ๊ฐ 1024์ด๊ณ , URB ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ 64์ธ ๊ฒ์ ์ ์ ์์ต๋๋ค.

๋ฐ๋ผ์ โ 1024/64 โ ๋ธ๋ก์ 16์ค์ ๋ฃ๊ณ , ํ์จ์ด ํ์ผ์ ํ ๋ฒ์ ํ ๋ฌธ์์ฉ ์ฝ์ด ๋ธ๋ก์ ๊ตฌ์ฑํฉ๋๋ค. ๋ธ๋ก์ ํ ์ค์ ํน์ ๋ฌธ์ fd1e1 + ๋ธ๋ก ๋ฒํธ๋ก ์ถ๊ฐํฉ๋๋ค.
๋ค์ 14์ค์ fd25 +๋ก ๋ณด์ํ๊ณ , XMODEM.calc_crc()๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฒด ๋ธ๋ก์ ์ฒดํฌ์ฌ์ ๊ณ์ฐํฉ๋๋ค("FF - 1"์ด CSUM์ด๋ผ๋ ๊ฒ์ ์ดํดํ๋ ๋ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ ธ์ต๋๋ค). ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง 16๋ฒ์งธ ์ค์ fd3e๋ก ๋ณด์ํฉ๋๋ค.
ํ์จ์ด ํ์ผ์ ์ฝ๊ณ , ๋ธ๋ก์ ๋๋ฅด๊ณ , ์ค์บ๋๋ฅผ ์ฝ์ด์์ ๋ถ๋ฆฌํ์ฌ ์ฅ์น๋ก ์ ์กํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ง๋ง ๊ทธ๋ ๊ฒ ๊ฐ๋จํ์ง๋ ์์ต๋๋ค. ์ค์บ๋๋ฅผ ํ์จ์ด ๋ชจ๋๋ก ์ ํํด์ผ ํฉ๋๋ค.
ะพัะฟัะฐะฒะธะฒ ะตะผั NEWAPP = โ\xfd\x0a\x16\x4e\x2c\x4e\x45\x57\x41\x50\x50\x0dโ.
์ด ๋ช
๋ น์ ์ด๋์ ๋์จ ๊ฑด๊ฐ์?? ๋คํ์์ ๋์จ ๊ฑฐ์์.

ํ์ง๋ง 64๊ฐ ์ ํ ๋๋ฌธ์ ์ ์ฒด ๋ธ๋ก์ ์ค์บ๋๋ก ๋ณด๋ผ ์๋ ์์ต๋๋ค.
![]()
NEWAPP ์ฌํ๋์ ๋ชจ๋์ ์ค์บ๋๋ 16์ง์๋ฅผ ์ธ์ํ์ง ๋ชปํฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ ์ค์ bytes_array๋ก ๋ณํํด์ผ ํฉ๋๋ค.
[253, 10, 22, 78, 44, 78, 69, 87, 65, 80, 80, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]๊ทธ๋ฆฌ๊ณ ์ด ๋ฐ์ดํฐ๋ฅผ ์ค์บ๋๋ก ์ ์กํฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋ต์ ์ป์ต๋๋ค:
[2, 1, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]XMODEM์ ๋ํ ๊ธฐ์ฌ๋ฅผ ํ์ธํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์น์ธ๋๋ค๋ ์ฌ์ค์ ์ ์ ์์ต๋๋ค.

๋ชจ๋ ๋ธ๋ก์ด ์ ์ก๋ ํ ์ ์ก์ ์๋ฃํฉ๋๋ค. END_TRANSFER = 'xfdx01x04'.
์ด ๋ธ๋ก๋ค์ ์ผ๋ฐ์ธ์๊ฒ๋ ์๋ฌด๋ฐ ์ ๋ณด๋ ์ ๋ฌํ์ง ์์ผ๋ฏ๋ก, ํ์จ์ด๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์จ๊น ๋ชจ๋๋ก ์ค์ ํ๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํน์ ๋ชจ๋ฅผ ์ํฉ์ ๋๋นํ์ฌ tqdm์ ํตํด ์งํ๋ฅ ํ์์ค์ ๊ตฌ์ฑํ๊ฒ ์ต๋๋ค.
![]()
์ฌ์ค, ์ด์ ํฐ ๋ฌธ์ ๋ ์๋๋๋ค. ๋จ์ ๊ฒ์ ๋ช
ํํ๊ฒ ์ ์๋ ์๊ฐ์ ๋๋ ๋ณต์ ๋ฅผ ์ํ ์คํฌ๋ฆฝํธ๋ก ์๋ฃจ์
์ ๋ํํ์ฌ ๊ณ์ฐ๋ ์์
์๋๋ฅผ ๋ฆ์ถ์ง ์๊ณ ๋ก๊น
์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค.
ํฉ๊ณ
๋ง์ ์๊ฐ๊ณผ ๋
ธ๋ ฅ, ๊ทธ๋ฆฌ๊ณ ๋ ํ๋ฆฐ ๋
ธ๋ ฅ ๋์, ์ ํฌ๋ ํ์ํ ์๋ฃจ์
์ ๊ฐ๋ฐํ๊ณ ๋ง๊ฐ์ผ๋ ์ค์ํ ์ ์์์ต๋๋ค. ๋์์, ์ค์บ๋๋ ์ค์์์ ์ฌํ๋์ ๋ฐ ์ฌ๊ต์ก๋๋ฏ๋ก ์ ์ฒด ํ๋ก์ธ์ค๋ฅผ ๋ช
ํํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค. ๋๋ถ์ ํ์ฌ๋ ์๊ฐ๊ณผ ๋น์ฉ์ ์ ์ฝํ ์ ์์๊ณ , ์ ํฌ๋ ์ด๋ฌํ ์ ํ์ ์ฅ๋น ์ญ์ค๊ณ์ ๋ํ ๊ท์คํ ๊ฒฝํ์ ์์์ต๋๋ค.
์ถ์ฒ : habr.com
