Как перехватить сообщения с USB-устройства в Linux?
У меня есть популярный планшет для рисования, который я подключаю к компьютеру через USB. После подключения планшет распознает движения рук и соответствующим образом манипулирует указателем. Где-то планшет передает эти данные на мой компьютер.
Моя цель - перехватить эти передачи и манипулировать мышью после того, как я обработаю данные. Ключевые слова, которые я нашел: драйверы устройств и HID, но я не смог собрать больше, чем это.
Предполагая, что это возможно, у меня есть несколько вопросов:
- Как это сделать, если формат данных известен?
- Как это сделать, если формат данных неизвестен / проприетарный?
Мой компьютер работает под управлением Ubuntu (но ответы, относящиеся к любой форме ОС Linux, очень ценятся!).
Примечание. Этот вопрос похож, но предназначен для Windows.
2 ответа
На самом деле вы пропустили модное слово "USB sniffing". ;-)
Вот несколько обучающих программ по USB-сниффингу в Linux, чтобы вы могли начать.
- Официальная вики Wireshark для мониторинга USB
- biot.com/blog/usb-sniffing-on-linux (Интернет-архив)
- http://tjworld.net/wiki/Linux/Ubuntu/USBmonitoring
По сути вы используете usbmon
Модуль ядра Linux для захвата USB-пакетов иWireshark в качестве внешнего интерфейса для отображения и анализа захваченного потока USB.
Чтобы добавить еще один полезный ресурс: Руководство по ядру для usbmon
Вы можете использовать следующие команды в Debian Linux для просмотра журнала отладки для usbmon в текстовом формате с помощью встроенного в ядро usbmon мониторинга USB:
-
$sudo -i
использовать корень -
#modprobe usbmon
-
#ls /sys/kernel/debug/usb/usbmon
для просмотра шинных сокетов -
#cat /sys/kernel/debug/usb/devices
для просмотра устройств на каждом сокете шины -
#cat /sys/kernel/debug/usb/usbmon/<bus socket>
для просмотра или вы можете направить стандартный вывод в файл, используя>