USB Raw Gadget, модуль для ядра, що дозволяє емулювати USB-пристрої

Сирий пристрій USB

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

Зараз він зараз працює над розробка нового модуля для ядра Linux, який він назвав "USB Raw Gadget" що описується як утиліта, що дозволяє емулювати USB-пристрої в просторі користувача.

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

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

Стимулом для впровадження іншого інтерфейсу було забезпечення прямого та дещо необробленого доступу до рівня гаджета USB для простору користувача, де кожен запит USB передається користувацькому простору для відповіді.

Про USB Raw Gadget

Модуль піклується про додавання нового інтерфейсу програмування до підсистеми ядра під назвою "USB Gadget" і який розробляється як альтернатива GadgetFS.

Створення нового API зумовлене необхідністю прямого та низькорівневого доступу до підсистеми USB Gadget із простору користувача, дозволяючи обробляти всі можливі запити 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. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.