USBトラフィックをダンプする方法?


9

USBゲームパッドを入手しました。この周辺機器が実際にPC /カーネルに送信している信号とコマンドを確認して確認したいと思います。

私は何かが

cat /dev/bus/usb/006/003

十分でしたが、このコマンドはすぐに戻り、一部の読み取り不可能なエンコードされた文字を出力します。

そのようなUSBデバイスを「デバッグ」する方法はありますか?

回答:


11

WiresharkでUSBトラフィックをキャプチャできます。
それはwikiから:

LinuxでUSBトラフィックをダンプusbmonするには、Linux 2.6.11以降に存在するモジュールが必要です。そのモジュールに関する情報/usr/src/linux/Documentation/usb/usbmon.txtは、Linuxソースツリーにあります。使用しているディストリビューションとそのディストリビューションのバージョンに応じて、そのモジュールはカーネルに組み込まれている場合と、ロード可能なモジュールの場合があります。ロード可能なモジュールである場合、使用しているディストリビューションとそのディストリビューションのバージョンに応じて、ロードされる場合とロードされない場合があります。ロード可能なモジュールであり、ロードされていない場合は、次のコマンドでロードする必要があります

modprobe usbmon

ルートとして実行する必要があります。

1.0より前のlibpcapリリースには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に取り込むための装置は、バスの数であるn個の名前USBNを、持っています。libpcap 1.1.0以降では、彼らは名前usbmonnを持っています。

Wireshark 1.2.x以降も必要です。


1

これは私がこれを調べたときに見つけた最初の結果だったので、更新しています。Debian Stretchで私が見つけた最良の方法は次のとおりです。

#usbhid-dump --entity = all

これにより、すべてのUSBデバイスから受信したデータがダンプされます。おやつのようにキーボードを手に取って、ストリーム内のすべてのオペコードを読み取ることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.