Для выгрузки USB-трафика в Linux вам нужен usbmon
модуль, который существует с Linux 2.6.11 . Информация об этом модуле доступна в /usr/src/linux/Documentation/usb/usbmon.txt
дереве исходных текстов Linux. В зависимости от используемого вами дистрибутива и версии этого дистрибутива этот модуль может быть встроен в ядро или может быть загружаемым модулем; если это загружаемый модуль, в зависимости от используемого вами дистрибутива и версии этого дистрибутива, он может загружаться или не загружаться для вас. Если это загружаемый модуль, а не загруженный, вам придется загрузить его с помощью команды
modprobe usbmon
который должен быть запущен от имени пользователя root.
Релизы libpcap до 1.0 не включают поддержку USB, поэтому вам потребуется как минимум libpcap 1.0.0 .
Для версий ядра до 2.6.21 единственным доступным механизмом захвата трафика USB является текстовый механизм, который ограничивает общий объем данных, захватываемых для каждого необработанного блока USB, до 30 байтов. Нет способа изменить это без исправления ядра. Если debugfs еще не смонтирован /sys/kernel/debug
, убедитесь, что он смонтирован там, введя в качестве пользователя root следующую команду:
mount -t debugfs / /sys/kernel/debug
Для ядра версии 2.6.21 и более поздних существует двоичный протокол для отслеживания пакетов USB, который не имеет такого ограничения по размеру. Для этой версии ядра вам понадобится libpcap 1.1.0 или новее , потому что поддержка libpcap 1.0.x USB использует, но неправильно обрабатывает механизм отображения памяти для трафика USB, который libpcap будет использовать, если он доступен, - это невозможно сделал недоступным, поэтому libpcap всегда будет его использовать.
В libpcap 1.0.x устройства для захвата по USB имеют имя usbn, где n - номер шины. В libpcap 1.1.0 и более поздних версиях они имеют имя usbmonn.
Вам также понадобится Wireshark 1.2.x или новее .