Para despejar o tráfego USB no Linux, você precisa do usbmon
módulo que existe desde o Linux 2.6.11 . As informações sobre esse módulo estão disponíveis na /usr/src/linux/Documentation/usb/usbmon.txt
árvore de fontes do Linux. Dependendo da distribuição que você está usando e da versão dessa distribuição, esse módulo pode estar embutido no kernel ou pode ser um módulo carregável; se for um módulo carregável, dependendo da distribuição que você está usando e da versão dessa distribuição, ele pode ou não ser carregado para você. Se for um módulo carregável e não carregado, você precisará carregá-lo com o comando
modprobe usbmon
que deve ser executado como root.
As versões libpcap anteriores à 1.0 não incluem suporte a USB, portanto você precisará pelo menos da libpcap 1.0.0 .
Para versões do kernel anteriores à 2.6.21 , o único mecanismo de captura de tráfego USB disponível é um mecanismo baseado em texto que limita a quantidade total de dados capturados para cada bloco USB bruto a cerca de 30 bytes. Não há como mudar isso sem corrigir o kernel. Se o debugfs ainda não estiver montado /sys/kernel/debug
, assegure-se de que esteja montado lá emitindo o seguinte comando como root:
mount -t debugfs / /sys/kernel/debug
Para a versão 2.6.21 e posterior do kernel , existe um protocolo binário para rastrear pacotes USB que não possui essa limitação de tamanho. Para essa versão do kernel, você precisará da libpcap 1.1.0 ou mais recente , porque o suporte à libpcap 1.0.x USB usa, mas não lida corretamente, o mecanismo mapeado pela memória para o tráfego USB, que a libpcap utilizará se disponível - não pode ser disponível, portanto, o libpcap sempre o usará.
No libpcap 1.0.x, os dispositivos para captura no USB têm o nome usbn, onde n é o número do barramento. No libpcap 1.1.0 e posterior, eles têm o nome usbmonn.
Você também precisará de um Wireshark 1.2.x ou mais recente .