Как перехватить сообщения с USB-устройства в Linux?

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

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

Предполагая, что это возможно, у меня есть несколько вопросов:

  1. Как это сделать, если формат данных известен?
  2. Как это сделать, если формат данных неизвестен / проприетарный?

Мой компьютер работает под управлением Ubuntu (но ответы, относящиеся к любой форме ОС Linux, очень ценятся!).


Примечание. Этот вопрос похож, но предназначен для Windows.

2 ответа

Решение

На самом деле вы пропустили модное слово "USB sniffing". ;-)

Вот несколько обучающих программ по USB-сниффингу в Linux, чтобы вы могли начать.

По сути вы используете 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>для просмотра или вы можете направить стандартный вывод в файл, используя >
Другие вопросы по тегам