USB Raw Gadget, модуль для ядра, позволяющий эмулировать USB-устройства.

Гаджет USB Raw

Уже в некоторых случаях здесь в блоге мы рассказали о проделанной работе Андрея Коновалова (разработчик Google) в Linux, благодаря его работе по своевременному обнаружению сбоев в драйверах USB ядра Linux, а также в устройствах Wi-Fi.

Сейчас он работает над разработка нового модуля для ядра Linux, который он назвал «USB Raw Gadget» который описывается как утилита, позволяющая эмулировать USB-устройства в пользовательском пространстве.

Кроме того упоминает, что рассматривается приложение для включения этого модуля в основное ядро ​​Linux. Google Raw Gadget уже используется Google для упрощения нечеткого тестирования стека ядра USB с помощью инструментария syzkaller.

Первоначально я использовал GadgetFS (вместе с модулем Dummy HCD / UDC) для эмуляции USB-устройств для фаззинга, но затем он был переключен на пользовательский письменный интерфейс.

Стимулом для реализации другого интерфейса было предоставление ярлыка и несколько необработанного доступа к уровню USB-гаджетов для пользовательского пространства, где каждый USB-запрос передается в пользовательское пространство для ответа.

О гаджете USB Raw

Модуль заботится о добавлении нового интерфейса программирование к подсистеме ядра называется «USB-гаджет» и разрабатывается как альтернатива GadgetFS.

Создание нового API связано с необходимостью прямого и низкоуровневого доступа в подсистему Gadget USB из пользовательского пространства, позволяя обрабатывать все возможные USB-запросы (GadgetFS обрабатывает некоторые запросы самостоятельно, не передавая их в пользовательское пространство).

USB Raw Gadget управляется с устройства / dev / raw-gadget. по аналогии с / dev / gadget в GadgetFS, но для взаимодействия используется интерфейс на основе ioctl () вместо псевдо-FS.

Помимо прямой обработки всех USB-запросов процессом в пользовательском пространстве, новый интерфейс также имеет возможность возвращать любые данные в ответ на USB-запрос (GadgetFS проверяет правильность дескрипторов USB и отфильтровывает определенные ответы, которые мешают обнаружение ошибок во время теста очистки стека USB).

USB Raw Gadget также позволяет выбрать конкретное устройство UDC. (Драйвер устройства USB) и драйвер для подключения, в то время как GadgetFS подключается к первому доступному устройству UDC.

Для разных UDC предсказуемые имена конечных точек отображаются на разные типы отдельных каналов связи в одном устройстве.

Наконец, если вы хотите узнать об этом больше, вы можете проверить подробности, а также журнал изменений, внесенных в USB Raw Gadget. По следующей ссылке.

Как установить USB-модуль Raw Gadget в Linux?

Те, кто заинтересован в возможности протестировать этот модуль в своей системе, могут сделать это, следуя инструкциям, подробно описанным здесь.

Для манекена HCD / UDC (модуль, который настраивает виртуальные USB-устройства и хост-контроллеры, которые подключены друг к другу в ядре). Мы должны открыть терминал, и в нем мы собираемся ввести следующую команду:

svn checkout https://github.com/xairy/raw-gadget/trunk/dummy_hcd

Таким образом, мы собираемся получить папку с модулями, которые собираемся компилировать, выполнив в терминале следующую команду:

cd dummy_hcd

make

И приступаем к их установке с помощью:

./insmod.sh

Если мы хотим обновить модуль, мы делаем это с помощью:

./update.sh

Сейчас для тех, кто хочет установить модуль ядра. В терминале мы собираемся получить для этого необходимые файлы, выполнив следующую команду:

svn checkout https://github.com/xairy/raw-gadget/trunk/raw_gadget

Таким образом, мы собираемся получить папку с модулями, которые собираемся компилировать, выполнив в терминале следующую команду:

cd dummy_hcd

make

И приступаем к их установке с помощью:

./insmod.sh

Если мы хотим обновить модуль, мы делаем это с помощью:

./update.sh

Вы можете проверить работу в по следующей ссылке. 


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован.

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

bool (истина)