USB ์žฅ์น˜ ์—๋ฎฌ๋ ˆ์ด์…˜์„ ์œ„ํ•œ Linux ๋ชจ๋“ˆ์ธ USB Raw Gadget์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Google์˜ Andrey Konovalov๊ฐ€ ์ƒˆ๋กœ์šด ๋ชจ๋“ˆ์„ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. USB ์›์‹œ ๊ฐ€์ œํŠธ, ํ—ˆ์šฉ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ USB ์žฅ์น˜๋ฅผ ์—๋ฎฌ๋ ˆ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ๋ณด๋ฅ˜ ์ค‘ ์‘์šฉ ๊ธฐ๋ณธ Linux ์ปค๋„์— ์ด ๋ชจ๋“ˆ์„ ํฌํ•จ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. USB Raw ๊ฐ€์ ฏ์€ ์ด๋ฏธ ์ ์šฉ๋œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ USB ์ปค๋„ ์Šคํƒ์˜ ํผ์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด Google์—์„œ ์‹œ์ฆˆ์นผ๋Ÿฌ.

๋ชจ๋“ˆ์€ ์ปค๋„ ํ•˜์œ„ ์‹œ์Šคํ…œ์— ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. USB ๊ฐ€์ ฏ GadgetFS์˜ ๋Œ€์•ˆ์œผ๋กœ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด API์˜ ์ƒ์„ฑ์€ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ USB Gadget ํ•˜์œ„ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ์ง์ ‘ ์•ก์„ธ์Šค๋ฅผ ์–ป์–ด ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  USB ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค(GadgetFS๋Š” ์ผ๋ถ€ ์š”์ฒญ์„ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์œผ๋กœ ์ „๋‹ฌํ•˜์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•จ). . USB Raw Gadget์€ GadgetFS์˜ /dev/gadget๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ /dev/raw-gadget ์žฅ์น˜๋ฅผ ํ†ตํ•ด ์ œ์–ด๋˜์ง€๋งŒ ์ƒํ˜ธ ์ž‘์šฉ์—์„œ๋Š” ์˜์‚ฌ FS๊ฐ€ ์•„๋‹Œ ioctl() ๊ธฐ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ๊ณต๊ฐ„์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ชจ๋“  USB ์š”์ฒญ์„ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ ์ƒˆ๋กœ์šด ์ธํ„ฐํŽ˜์ด์Šค์—๋Š” USB ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ๋„ ์žˆ์Šต๋‹ˆ๋‹ค(GadgetFS๋Š” USB ์„ค๋ช…์ž์˜ ์ •ํ™•์„ฑ์„ ํ™•์ธํ•˜๊ณ  ํŠน์ • ์‘๋‹ต์„ ํ•„ํ„ฐ๋งํ•˜์—ฌ ๊ฐ์ง€๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค). USB ์Šคํƒ์˜ ํผ์ฆˆ ํ…Œ์ŠคํŠธ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ). Raw Gadget์€ ๋˜ํ•œ ์—ฐ๊ฒฐํ•  ํŠน์ • UDC(USB ์žฅ์น˜ ์ปจํŠธ๋กค๋Ÿฌ) ์žฅ์น˜์™€ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ ํƒํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, GadgetFS๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฒซ ๋ฒˆ์งธ UDC ์žฅ์น˜์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ด๋ฆ„์ด ๋‹ค๋ฅธ UDC์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ์—”๋“œ ํฌ์ธํŠธ ํ•˜๋‚˜์˜ ์žฅ์น˜ ๋‚ด์—์„œ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ์ฑ„๋„์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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