¿Cómo volcar el tráfico USB?

¿Cómo volcar el tráfico USB?

Tengo un gamepad USB y me gustaría ver e inspeccionar las señales y comandos que este periférico envía realmente a mi PC/kernel: ¿cómo puedo hacerlo?

Estaba asumiendo que algo como

cat /dev/bus/usb/006/003

Fue suficiente, pero aparentemente este comando regresa inmediatamente e imprime algunos caracteres codificados ilegibles.

¿Hay alguna forma de "depurar" un dispositivo USB como ese?

Respuesta1

Puede capturar el tráfico USB con Wireshark.
De suwiki:

Para volcar el tráfico USB en Linux, necesita el usbmonmódulo, que existe desde Linux2.6.11. La información sobre ese módulo está disponible en /usr/src/linux/Documentation/usb/usbmon.txtel árbol de fuentes de Linux. Dependiendo de la distribución que esté utilizando y de la versión de esa distribución, ese módulo podría estar integrado en el kernel o podría ser un módulo cargable; Si es un módulo cargable, dependiendo de la distribución que esté utilizando y la versión de esa distribución, es posible que se cargue o no. Si es un módulo cargable y no está cargado, tendrás que cargarlo con el comando

modprobe usbmon

que debe ejecutarse como root.

Las versiones de libpcap anteriores a la 1.0 no incluyen soporte para USB, por lo que necesitaráal menoslibcap1.0.0.

Para versiones del kernelantes del 2.6.21, el único mecanismo de captura de tráfico USB disponible es un mecanismo basado en texto que limita la cantidad total de datos capturados para cada bloque USB sin procesar a aproximadamente 30 bytes. No hay forma de cambiar esto sin parchear el kernel. Si debugfs aún no está montado en /sys/kernel/debug, asegúrese de que esté montado allí emitiendo el siguiente comando como root:

mount -t debugfs / /sys/kernel/debug

Para la versión del núcleo2.6.21 y posteriores, existe un protocolo binario para rastrear paquetes USB que no tiene esa limitación de tamaño. Para esa versión del kernel, necesitará libpcap1.1.0 o más reciente, porque el soporte USB de libpcap 1.0.x usa, pero no maneja correctamente, el mecanismo mapeado en memoria para el tráfico USB, que libpcap usará si está disponible; no puede dejar de estar disponible, por lo que libpcap siempre lo usará.

En libpcap 1.0.x, los dispositivos para captura en USB tienen el nombre , dondeusbnnortees el número del autobús. En libpcap 1.1.0 y posteriores, tienen el nombre .usbmonn

También necesitarás un Wireshark1.2.x o más reciente.

Respuesta2

Actualizando porque este fue el primer resultado que encontré cuando busqué esto. El mejor método que he encontrado en Debian Stretch es el siguiente:

# usbhid-dump --entidad=todos

Eso volcará los datos entrantes de todos los dispositivos USB. Cogí mi teclado como un regalo y puedo leer todos los códigos de operación de la transmisión.

información relacionada