Даступны USB Raw Gadget, Linux-модуль для эмуляцыі USB-прылад

Андрэй Канавалаў з кампаніі Google развівае новы модуль Неапрацаваны USB-гаджэт, які дазваляе эмуляваць USB-прылады ў прасторы карыстальніка. Знаходзіцца на разглядзе заяўка на ўключэнне дадзенага модуля ў асноўны склад ядра Linux. USB Raw Gadget ужо ўжываецца у кампаніі Google для спрашчэння fuzzing-тэставанні USB-стэка ядра пры дапамозе інструментара syzkaller.

Модуль дадае новы праграмны інтэрфейс у падсістэму ядра. USB Gadget і развіваецца ў якасці альтэрнатывы GadgetFS. Стварэнне новага API абумоўленае неабходнасцю атрымання нізкаўзроўневага і прамога доступу да падсістэмы USB Gadget з прасторы карыстача, які дазваляе апрацоўваць усе магчымыя USB-запыты (GadgetFS апрацоўвае некаторыя запыты самастойна, не перадаючы ў прастору карыстача). Кіраванне USB Raw Gadget вырабляецца праз прыладу /dev/raw-gadget па аналогіі з /dev/gadget у GadgetFS, але для ўзаемадзеяння ўжываецца інтэрфейс на аснове ioctl(), а не псеўда-ФС.

Акрамя прамой апрацоўкі ўсіх USB-запытаў працэсам у прасторы карыстача новы інтэрфейс таксама адрозніваецца магчымасцю вяртання любых дадзеных у адказ на USB-запыт (GadgetFS выконвае праверку карэктнасці USB-дэскрыптараў і фільтруе вызначаныя адказы, што мяшае выяўленню памылак пры fuzzing-тэставанні USB-стэка) . Raw Gadget таксама дае магчымасць абраць пэўную прыладу UDC (USB Device Controller) і драйвер для прымацавання, у той час як GadgetFS прымацоўваецца да першай даступнай прылады UDC. Для розных UDC прызначаюцца прадказальныя імёны канчатковая кропка для падзелу розных тыпаў каналаў абмену дадзенымі ўсярэдзіне адной прылады.

Крыніца: opennet.ru

Дадаць каментар