web-dev-qa-db-ja.com

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

USBゲームパッドを入手しましたが、この周辺機器が実際にPC /カーネルに送信している信号とコマンドを確認して確認したいのですが、どうすればよいですか?

私は何かが

cat /dev/bus/usb/006/003

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

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

9
user2485710

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

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

modprobe usbmon

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

1.0より前のlibpcapリリースにはUSBサポートが含まれていないため、少なくともlibpcap- 1.0.

カーネルのバージョン2.6.21以前の場合、利用可能なUSBトラフィックキャプチャメカニズムは、生の各USBブロックでキャプチャされるデータの合計量を約30バイトに制限するテキストベースのメカニズムのみです。カーネルにパッチを当てずにこれを変更する方法はありません。 debugfsが/sys/kernel/debugにまだマウントされていない場合は、rootとして次のコマンドを発行して、マウントされていることを確認してください。

mount -t debugfs / /sys/kernel/debug

カーネルバージョン2.6.21以降の場合、そのサイズ制限のないUSBパケットをトレースするためのバイナリプロトコルがあります。そのカーネルバージョンでは、libpcap1.1.0以降が必要になります。これは、libpcap 1.0.x USBサポートが使用しますが、正しく処理しないためです。 libpcapが使用可能な場合に使用するUSB​​トラフィックのメモリマップメカニズム-使用不可にすることはできないため、libpcapは常にそれを使用します。

libpcap1.0.xでは、USBでキャプチャするデバイスの名前はusbnで、nはバスの番号です。 libpcap1.1.0以降では、名前はusbmonnです。

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

11
Costin Gușă

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

#usbhid-dump --entity = all

これにより、すべてのUSBデバイスから受信したデータがダンプされます。御馳走のように私のキーボードを拾った、そして私はストリームのすべてのオペコードを読むことができる。

1
cntra