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

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

USBゲームパッドがあり、この周辺機器が実際に自分のPC/カーネルに送る信号とコマンドを見て調べたいと思います。どうすればいいですか?

私は次のことを前提としています

cat /dev/bus/usb/006/003

それで十分ですが、明らかに、このコマンドは読み取れないエンコードされた文字をすぐに返して印刷します。

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

答え1

Wiresharkを使用してUSBトラフィックをキャプチャできます。
それからウィキペディア:

usbmonLinuxでUSBトラフィックをダンプするには、Linux以降から使用されてきたこのモジュールが必要です。2.6.11。このモジュールに関する情報は、/usr/src/linux/Documentation/usb/usbmon.txtLinuxソースツリーにあります。使用しているディストリビューションとそのディストリビューションのバージョンによっては、このモジュールはカーネルに組み込まれているかロード可能なモジュールである可能性があります。ロード可能なモジュールの場合は、ディストリビューションによってロードされる場合もあれば、そうでない場合もあります。あなたが使用しているディストリビューションのバージョン。ロード可能なモジュールであるがロードされていない場合は、次のようにロードする必要があります。

modprobe usbmon

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

1.0より前のlibpcapバージョンにはUSBサポートが含まれていないため、次のものが必要です。少なくともlibpcap1.0.0

カーネルバージョンの場合21年6月21日以前唯一の利用可能なUSBトラフィックキャプチャメカニズムはテキストベースであり、生のUSBブロックごとにキャプチャされる総データ量を約30バイトに制限します。カーネルにパッチを適用しないと変更できません。 debugfsがまだインストールされていない場合は、/sys/kernel/debugrootとして次のコマンドを実行してインストールされていることを確認してください。

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キャプチャに使用されるデバイス名は次のとおりです。usbnNバス番号です。libpcap 1.1.0以降では名前があります。usbmonn

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

答え2

検索時に初めて見つけた結果なので更新されました。 Debian Stretchで見つけた最良の方法は次のとおりです。

#usbhid-dump --entity=all

これにより、すべてのUSBデバイスから着信データがダンプされます。おいしい食べ物のようにキーボードを拾うと、ストリームのすべてのオペコードを読むことができます。

関連情報