์๋ ๋ชจ๋
์ค๋ Victor Antipov์ Ilya Aleshin์ Python PyUSB๋ฅผ ํตํด USB ์ฅ์น๋ก ์์ ํ ๊ฒฝํ๊ณผ ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง์ ๋ํด ์กฐ๊ธ ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
์ ์ฌ ์๋
2019๋
๋ฌ์์ ์ฐ๋ฐฉ ์ ๋ถ ๋ฒ๋ น ์ 224ํธ โ์๋ณ ์๋จ์ ์ฌ์ฉํ์ฌ ๋ด๋ฐฐ ์ ํ์ ๋ผ๋ฒจ์ ๋ถ์ด๋ ๊ท์น ์น์ธ ๋ฐ ์๋ณ ์๋จ์ ์ฌ์ฉํ์ฌ ํ์ ๋ผ๋ฒจ๋ง ๋์ ์ํ์ ์ ํต์ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํ ๊ตญ๊ฐ ์ ๋ณด ์์คํ
๊ตฌํ ๊ธฐ๋ฅ ์น์ธ ์โ ๋ด๋ฐฐ ์ ํ๊ณผ ๊ด๋ จํ์ฌโ๊ฐ ์ํ๋์์ต๋๋ค.
์ด ๋ฌธ์์์๋ 1๋
2019์ XNUMX์ผ๋ถํฐ ์ ์กฐ์
์ฒด๊ฐ ๊ฐ ๋ด๋ฐฐ ํฉ์ ๋ผ๋ฒจ์ ๋ถ์ฐฉํด์ผ ํ๋ค๊ณ ์ค๋ช
ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ง์ ์ ํต์
์ฒด๋ UDD(Universal Transfer Document)๋ฅผ ์คํํ์ฌ ์ด๋ฌํ ์ ํ์ ๋ฐ์์ผ ํฉ๋๋ค. ์์ ์์๋ ๊ธ์ ๋ฑ๋ก๊ธฐ๋ฅผ ํตํด ๋ผ๋ฒจ์ด ๋ถ์ ์ ํ์ ํ๋งค๋ฅผ ๋ฑ๋กํด์ผ ํฉ๋๋ค.
๋ํ, 1๋ 2020์ XNUMX์ผ๋ถํฐ ๋ผ๋ฒจ์ด ๋ถ์ฐฉ๋์ง ์์ ๋ด๋ฐฐ ์ ํ์ ์ ํต์ด ๊ธ์ง๋ฉ๋๋ค. ์ด๋ ๋ชจ๋ ๋ด๋ฐฐ๊ฐ์ ํน์ Datamatrix ๋ฐ์ฝ๋๊ฐ ํ์๋์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ๋์ฑ์ด ์ค์ํ ์ ์ Datamatrix๊ฐ ํ๋ฒํ์ง ์๊ณ ๋ฐ๋๋ผ๋ ๊ฒ์ด ๋ฐํ์ก์ต๋๋ค. ์ฆ, ํฐ์ ๋ฐํ์ ๊ฒ์ ์ ์ฝ๋๊ฐ ์๋ ๊ฒ์ด ์๋๋ผ ๊ทธ ๋ฐ๋์ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ค์บ๋๋ฅผ ํ ์คํธํ ๊ฒฐ๊ณผ ๋๋ถ๋ถ์ ์ค์บ๋๋ฅผ ์๋ก ๊ณ ์น๊ฑฐ๋ ์ฌ๊ต์กํด์ผ ํ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด ๋ฐ์ฝ๋๋ก ์ ์์ ์ผ๋ก ์๋ํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ ํ์ฌ๋ ๋์ ์ง์ญ์ ๊ฑธ์ณ ๋ง์ ๋งค์ฅ์ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ์ํฉ์ ์ฐ๋ฆฌ์๊ฒ ์ฌ๊ฐํ ๊ณจ์น ์ํ ์ผ์ ์๊ฒจ์ฃผ์์ต๋๋ค. ์๋ง ๊ฐ์ ๊ธ์ ๋ฑ๋ก๊ธฐ๊ฐ ์์ง๋ง ์๊ฐ์ ๊ฑฐ์ ์์ต๋๋ค.
๋ฌด์์ ํด์ผ ํ๋์? ๋ ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค. ์ฒซ์งธ, ํ์ฅ ์์ง๋์ด๊ฐ ์๋์ผ๋ก ์ค์บ๋๋ฅผ ๋ค์ ํ๋์ํ๊ณ ์กฐ์ ํฉ๋๋ค. ๋์งธ: ์ฐ๋ฆฌ๋ ์๊ฒฉ์ผ๋ก ์์ ํ๋ฉฐ ๊ฐ๊ธ์ ์ด๋ฉด ํ ๋ฒ์ ๋ฐ๋ณต์ผ๋ก ํ ๋ฒ์ ๋ง์ ์ค์บ๋๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
๋ถ๋ช ํ ์ฒซ ๋ฒ์งธ ์ต์ ์ ์ฐ๋ฆฌ์๊ฒ ์ ํฉํ์ง ์์์ต๋๋ค. ์์ง๋์ด๋ฅผ ๋ฐฉ๋ฌธํ๋ ๋ฐ ๋์ ์จ์ผ ํ๊ณ ์ด ๊ฒฝ์ฐ ํ๋ก์ธ์ค๋ฅผ ์ ์ดํ๊ณ ์กฐ์ ํ๊ธฐ๊ฐ ์ด๋ ค์ธ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ฌ๋๋ค์ด ์ผํ๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ, ์ ์ฌ์ ์ผ๋ก ๋ง์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ๋ง๊ฐ์ผ์ ์งํค์ง ๋ชปํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
๋ ๋ฒ์งธ ์ต์ ์ ํ ๊ฐ์ง๊ฐ ์๋๋ผ๋ฉด ๋ชจ๋ ์ฌ๋์๊ฒ ์ข์ต๋๋ค. ์ผ๋ถ ๊ณต๊ธ์ ์ฒด์๋ ํ์ํ ๋ชจ๋ ์ด์ ์ฒด์ ์ ํ์ํ ์๊ฒฉ ํ๋์ฑ ๋๊ตฌ๊ฐ ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง๊ฐ์ผ์ด ๋ค๊ฐ์ค์ ๋จธ๋ฆฌ๋ก ์๊ฐ์ ํด์ผ ํ์ต๋๋ค.
๋ค์์ผ๋ก ์ฐ๋ฆฌ๋ ์ด๋ป๊ฒ Debian 9.x OS์ฉ ํด๋์ฉ ์ค์บ๋ ๋๊ตฌ๋ฅผ ๊ฐ๋ฐํ๋์ง ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค(์ฐ๋ฆฌ์ ๋ชจ๋ ๊ธ์ ๋ฑ๋ก๊ธฐ๋ Debian์ ์์ต๋๋ค).
์์๊ป๋ผ ํ๊ธฐ: ์ค์บ๋๋ฅผ ํ๋์ํ๋ ๋ฐฉ๋ฒ
๋น ํฐ ์ํฐํฌํ(Victor Antipov)๊ฐ ๋ณด๊ณ ํฉ๋๋ค.
๊ณต๊ธ์ ์ฒด์์ ์ ๊ณตํ๋ ๊ณต์ ์ ํธ๋ฆฌํฐ๋ Windows์์ ์๋ํ๋ฉฐ IE์์๋ง ์๋ํฉ๋๋ค. ์ ํธ๋ฆฌํฐ๋ ์ค์บ๋๋ฅผ ํ๋์ํ๊ณ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๋์ ์์คํ ์ด Debian์ด๋ฏ๋ก Debian์ usb-redirector ์๋ฒ๋ฅผ ์ค์นํ๊ณ Windows์ usb-redirector ํด๋ผ์ด์ธํธ๋ฅผ ์ค์นํ์ต๋๋ค. usb-redirector ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ค์บ๋๋ฅผ Linux ์์คํ ์์ Windows ์์คํ ์ผ๋ก ์ ๋ฌํ์ต๋๋ค.
Windows ๊ณต๊ธ์ ์ฒด์ ์ ํธ๋ฆฌํฐ๊ฐ ์ค์บ๋๋ฅผ ๋ณด๊ณ ์ ์์ ์ผ๋ก ํ๋์๊น์ง ํ์ต๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ฒซ ๋ฒ์งธ ๊ฒฐ๋ก ์ ๋ด๋ ธ์ต๋๋ค. OS์ ์์กดํ๋ ๊ฒ์ ์์ผ๋ฉฐ ํ๋์ฑ ํ๋กํ ์ฝ์ ๋ฌธ์ ์ ๋๋ค.
์ข์์. Windows ์์คํ ์์ ํ๋์ฑ์ ์คํํ๊ณ Linux ์์คํ ์์ ๋คํ๋ฅผ ์ ๊ฑฐํ์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋คํ๋ฅผ WireShark์ ๋ฃ์๊ณ ... ์ฌํ์ต๋๋ค(๋คํ์ ์ธ๋ถ ์ฌํญ ์ค ์ผ๋ถ๋ฅผ ์๋ตํ๊ฒ ์ต๋๋ค. ๊ด์ฌ์ด ์์ต๋๋ค).
๋คํ๊ฐ ์ฐ๋ฆฌ์๊ฒ ๋ณด์ฌ์ค ๊ฒ:
Wireshark๋ก ํ๋จ๋๋ ์ฃผ์ 0000~0030์ USB ์๋น์ค ์ ๋ณด์
๋๋ค.
์ฐ๋ฆฌ๋ ๋ถํ 0040-0070์ ๊ด์ฌ์ด ์์์ต๋๋ค.
MOCFT ๋ฌธ์๋ฅผ ์ ์ธํ๊ณ ํ๋์ ์ ์ก ํ๋ ์์์ ๋ช ํํ ๊ฒ์ ์์ต๋๋ค. ์ด ๋ฌธ์๋ ํ์จ์ด ํ์ผ์ ๋ฌธ์์ ํ๋ ์ ๋๊น์ง ๋จ์ ๋ฌธ์๋ก ๋ฐํ์ก์ต๋๋ค(ํ์จ์ด ํ์ผ์ด ๊ฐ์กฐ ํ์๋จ).
fd 3e 02 01 fe ๊ธฐํธ๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ๊ฐ์ธ์ ์ผ๋ก Ilya์ฒ๋ผ ์ ๋ ์ ํ ๋ชฐ๋์ต๋๋ค.
๋ค์ ํ๋ ์์ ์ดํด๋ณด์์ต๋๋ค(์ฌ๊ธฐ์์๋ ์๋น์ค ์ ๋ณด๊ฐ ์ ๊ฑฐ๋์์ผ๋ฉฐ ํ์จ์ด ํ์ผ์ด ๊ฐ์กฐ ํ์๋์์ต๋๋ค).
๋ฌด์์ด ๋ถ๋ช
ํด์ก๋์? ์ฒ์ ๋ ๋ฐ์ดํธ๋ ์ผ์ข
์ ์์์
๋๋ค. ๋ชจ๋ ํ์ ๋ธ๋ก์ ์ด๋ฅผ ํ์ธํ์ง๋ง ์ ์ก ๋ธ๋ก์ด ๋๋๊ธฐ ์ ์:
์ด ํ๋ ์์ ๋ํ ์์๊ฐ ๋ณ๊ฒฝ(๊ฐ์กฐ ํ์)๋์๊ณ ์ด์ํ๊ฒ๋ ํ์ผ์ ์ผ๋ถ๊ฐ ์์๊ธฐ ๋๋ฌธ์ ์ด๋ฆฌ๋ฅ์ ํ์ต๋๋ค. ํ์ผ์ ์ ์ก๋ ๋ฐ์ดํธ ํฌ๊ธฐ๋ 1024๋ฐ์ดํธ๊ฐ ์ ์ก๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๋๋ ๋ค์ ๋จ์ ๋ฐ์ดํธ๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ๋ชฐ๋์ต๋๋ค.
๋จผ์ ์์ BBS ๋ณ๋ช ๋ต๊ฒ ํ์ค ์ ์ก ํ๋กํ ์ฝ์ ๊ฒํ ํด๋ณด์์ต๋๋ค. 1024๋ฐ์ดํธ๋ฅผ ์ ์กํ๋ ํ๋กํ ์ฝ์ด ์์ต๋๋ค. ๋๋ ํ๋์จ์ด๋ฅผ ๊ณต๋ถํ๊ธฐ ์์ํ๊ณ 1K Xmodem ํ๋กํ ์ฝ์ ๋ฐ๊ฒฌํ์ต๋๋ค. 1024 ์ ์ก์ ํ์ฉํ์ง๋ง ์ฃผ์ํ ์ ์ด ์์ต๋๋ค. ์ฒ์์๋ 128์ ๋ถ๊ณผํ๊ณ ์ค๋ฅ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ํ๋กํ ์ฝ์ด ์ ์ก๋ ๋ฐ์ดํธ ์๋ฅผ ๋๋ ธ์ต๋๋ค. ์ฆ์ 1024๋ฐ์ดํธ๋ฅผ ์ ์กํ์ต๋๋ค. ๋๋ ์ ์ก ํ๋กํ ์ฝ, ํนํ X ๋ชจ๋์ ์ฐ๊ตฌํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
๋ชจ๋์๋ ๋ ๊ฐ์ง ๋ณํ์ด ์์์ต๋๋ค.
์ฒซ์งธ, 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)=XNUMXFD๋ก ์ง์ ๋์์ต๋๋ค. ์ดํ ๋คํ๋ฅผ ์ฝ์ด๋ณด๋ ๋ด ์ถ์ธก์ด ํ์ธ๋์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ ์ก์ ๋ํ ๋ค์ ๊ทธ๋ฆผ์ด ๋ํ๋๊ธฐ ์์ํ์ต๋๋ค.
์ ์ก ์์
fd 3e 02 โ ์์
01 FE โ ์ ์ก ์นด์ดํฐ
์ ์ก(34๋ธ๋ก, 1024๋ฐ์ดํธ ์ ์ก)
fd 3e 1024๋ฐ์ดํธ์ ๋ฐ์ดํฐ(30๋ฐ์ดํธ ๋ธ๋ก์ผ๋ก ๋๋).
์ ์ก ์ข
๋ฃ
FD 25
๋๋จธ์ง ๋ฐ์ดํฐ๋ 1024๋ฐ์ดํธ๋ก ์ ๋ ฌ๋ฉ๋๋ค.
๋ธ๋ก ์ ์ก ์ข ๋ฃ ํ๋ ์์ ์ด๋ป๊ฒ ์๊ฒผ๋์?
fd 25 โ ๋ธ๋ก ์ ์ก์ ์ข
๋ฃํ๋ ์ ํธ์
๋๋ค. Next 2f 52 โ ๋๋จธ์ง ํ์ผ ํฌ๊ธฐ๋ ์ต๋ 1024๋ฐ์ดํธ์
๋๋ค. ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ฉด 2f 52๋ 16๋นํธ CRC ์ฒดํฌ์ฌ์
๋๋ค.
์๋ ์๋ ํ์ผ์์ 1024๋ฐ์ดํธ๋ฅผ ๊ฐ์ ธ์ 16๋นํธ CRC๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ C๋ก ๋ง๋ค์์ต๋๋ค. ํ๋ก๊ทธ๋จ์ ์คํํด ๋ณด๋ 16๋นํธ CRC๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๋ค์ ๋ฌด๊ฐ๊ฐ - ์ฝ 1024 ์ผ ๋์. ๊ทธ๋์ ๋๋ ๊ทธ๊ฒ์ด ์ฒดํฌ์ฌ์ด ์๋๋ผ๋ฉด ๋ฌด์์ผ ์ ์๋์ง ์ดํดํ๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค. ์์ด ์ฌ์ดํธ๋ฅผ ์ฐ๊ตฌํ๋ ๋์ X ๋ชจ๋์ด ์์ฒด ์ฒดํฌ์ฌ ๊ณ์ฐ์ธ CRC-CCITT(XModem)๋ฅผ ์ฌ์ฉํ๋ค๋ ์ฌ์ค์ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ด ๊ณ์ฐ์ ๋ํ C ๊ตฌํ์ ์ฐพ์ง ๋ชปํ์ง๋ง ์จ๋ผ์ธ์์ ์ด ์ฒดํฌ์ฌ์ ๊ณ์ฐํ๋ ์ฌ์ดํธ๋ฅผ ์ฐพ์์ต๋๋ค. XNUMX๋ฐ์ดํธ์ ๋ด ํ์ผ์ ์น ํ์ด์ง๋ก ์ ์กํ ํ ์ฌ์ดํธ๋ ํ์ผ์ ์ฒดํฌ์ฌ๊ณผ ์์ ํ ์ผ์นํ๋ ์ฒดํฌ์ฌ์ ๋ณด์ฌ์ฃผ์์ต๋๋ค.
๋ง์ธ! ๋ง์ง๋ง ์์๊ป๋ผ๊ฐ ํ๋ ธ์ผ๋ ์ด์ ๋๋ง์ ํ์จ์ด๋ฅผ ๋ง๋ค์ด์ผ ํ์ต๋๋ค. ๋ค์์ผ๋ก, ์ ๋ ๊ฐ๋ ฅํ ํดํท์ธ Python์ ์ต์ํ Ilya์๊ฒ ์ ์ง์์ ์ ์ํ์ต๋๋ค(๊ทธ๊ฒ์ ์ ๋จธ๋ฆฌ ์์๋ง ๋จ์ ์์์ต๋๋ค).
ํ๋ก๊ทธ๋จ ๋ง๋ค๊ธฐ
Ilya Aleshin์ด๋ณด๊ณ ํฉ๋๋ค.
์ ์ ํ ์ง์๋ฅผ ๋ฐ๊ณ ๋๋ ๋งค์ฐ โํ๋ณตโํ์ต๋๋ค.
์ด๋์๋ถํฐ ์์ํด์ผ ํ ๊น์? ๊ทธ๋ ์ฃ , ์ฒ์๋ถํฐ์. ๏ USB ํฌํธ์์ ๋คํ๋ฅผ ๊ฐ์ ธ์ด.
USB-pcap ์คํ
์ฅ์น๊ฐ ์ฐ๊ฒฐ๋ ํฌํธ์ ๋คํ๋ฅผ ์ ์ฅํ ํ์ผ์ ์ ํํ์ญ์์ค.
Windows์ฉ ๊ธฐ๋ณธ EZConfigScanning ์ํํธ์จ์ด๊ฐ ์ค์น๋ ์์คํ
์ ์ค์บ๋๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค.
์ฌ๊ธฐ์๋ ์ฅ์น์ ๋ช
๋ น์ ๋ณด๋ด๋ ํญ๋ชฉ์ด ์์ต๋๋ค. ํ์ง๋ง ํ์ ์ด๋ป์ต๋๊น? ์ด๋์ ๊ตฌํ ์ ์๋์?
ํ๋ก๊ทธ๋จ์ด ์์๋๋ฉด ์ฅ๋น๊ฐ ์๋์ผ๋ก ํด๋ง๋ฉ๋๋ค(์ด ๋ด์ฉ์ ๋์ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค). ๊ทธ๋ฆฌ๊ณ ๊ณต์ ์ฅ๋น ๋ฌธ์์ ์๋ ํ๋ จ์ฉ ๋ฐ์ฝ๋๋ ์์์ต๋๋ค. ๊ธฐ๋ณธ. ์ด๊ฒ์ด ์ฐ๋ฆฌ ํ์
๋๋ค.
ํ์ํ ๋ฐ์ดํฐ๊ฐ ์์ ๋์์ต๋๋ค. Wireshark๋ฅผ ํตํด dump.pcap์ ์ฝ๋๋ค.
EZConfigScanning์ ์์ํ ๋ ์ฐจ๋จํฉ๋๋ค. ์ฃผ์ํด์ผ ํ ๊ณณ์ ๋นจ๊ฐ์์ผ๋ก ํ์๋์ด ์์ต๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ ์ฒ์์ผ๋ก ๋ณด๋ ๋ง์์ด ๋์์ต๋๋ค. ๋ค์์ ์ด๋๋ฅผ ํ์ผํ ์ง ๋ช
ํํ์ง ์์ต๋๋ค.
์ฝ๊ฐ์ ๋ธ๋ ์ธ์คํ ๋ฐ์ ํ๊ณ ๋... ์ํ! ๋คํ์์ ์์ -๊ฐ์ in๊ณผ in ๊ทธ๊ฒ ์์.
URB_INTERRUPT๊ฐ ๋ฌด์์ธ์ง ๊ฒ์ํด๋ดค์ต๋๋ค. ์ด๊ฒ์ด ๋ฐ์ดํฐ ์ ์ก ๋ฐฉ๋ฒ์ด๋ผ๋ ๊ฒ์ ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ด, ์ธํฐ๋ฝํธ, ๋ฑ์์ฑ, ๋ฒํฌ ๋ฑ 4๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด์ ๋ํด ๋ณ๋๋ก ์ฝ์ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ 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์์ ๋ณผ ์ ์์ต๋๋ค.
์์ฒญ๋! ์์คํ
๋ฐ์ฝ๋๋ฅผ XNUMX์ง์๋ก ๋ณํํฉ๋๋ค. ์ด์ ํ๋ จ ๊ธฐ๋ฅ์ด ์ค๋น๋์์ต๋๋ค.
ํ์จ์ด๋ ์ด๋ป์ต๋๊น? ๋ชจ๋ ๊ฒ์ด ๋๊ฐ์ ๊ฒ ๊ฐ์ง๋ง ๋์์ค๊ฐ ์์ต๋๋ค.
ํ๋์ฑ ํ๋ก์ธ์ค๋ฅผ ์์ ํ ๋คํํ ํ ์ฐ๋ฆฌ๊ฐ ๋ค๋ฃจ๊ณ ์๋ ๋ด์ฉ์ ๋๋ต์ ์ผ๋ก ์ดํดํ์ต๋๋ค. ๋ค์์ 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 ํ๋์ฑ ๋ชจ๋์ ์ค์บ๋๋ XNUMX์ง์๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ฐ ์ค 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