Предотвращение установки ядром Linux конфигурации USB-устройства

Это больше о том, что требует ваша «одна программа».

Вы все еще можете хорошо понять, как собрать все вместе, создав LFS (также известную как « Linux From Scratch ») . Тогда вы сможете добавьте вещи, необходимые для вашей программы, или перейдите к полному дистрибутиву, потому что создание такой тяжелой подсистемы, как Gnome или KDE на LFS, может быть настоящей головной болью.

Конечно, сначала может быть проще вернуться назад, но удаление чего-либо из полного дистрибутива может быть проблематичным: делайте это на виртуальной машине и копируйте эту виртуальную машину на каждом этапе.

(мои 2 цента)

Изменить :

Как указано в SecurityBeast вместо того, чтобы начинать с полного дистрибутива, такого как CentOS или Ubuntu , вы также можете ознакомиться с такими инструментами распространения, как:

4
30.06.2018, 23:34
1 ответ

Кажется, есть способ предотвратить попытки системы установить конфигурацию устройства, и он работает даже из пользовательского пространства. Я наткнулся на коммит , добавляющий эту функциональность в ядро ​​, и, к счастью, он также включает пример кода.

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

Хитрость, кажется,:

unsigned int port = 2; // Just as an example
// Send request 24 of type 'U' (USB), which returns an unsigned int
unsigned int ioctl_id = _IOR('U', 24, unsigned int);
// fd is a file descriptor to the hub's file in the devfs
ioctl(fd, ioctl_id, &port); 

Информация о некоторых ioctl-запросах подсистемы USB описана в документации ядра . Полный список можно найти в исходном коде ядра . #определяет здесь .

Интересно, что система по-прежнему отправляет запросы установки конфигурации для конфигураций 0 (сброс конфигурации ).

1
27.01.2020, 21:01

Теги

Похожие вопросы