USBにすべてをダンプします。 3-1 USBアドレスのみ購入

USBにすべてをダンプします。 3-1 USBアドレスのみ購入

このポートに接続されている「すべて」をダンプするには、「USBアドレス」(ergo usb 3-1)のみを使用して「すべての」デバイスからデータを取得するにはどうすればよいですか。

他の記述子の反対

「いいえ」「いいえ」 /dev/etc...サードパーティ製のソフトウェアを探すのではなく、一般的なLINUXだけを探しています。短いコマンドラインの回答

答え1

ほとんどのUSBデバイスはこのように動作しません。

非常に少数のUSBデバイスタイプ(主にマウス、キーボード、ジョイスティックなどの入力デバイス)のみが、特別な要件なしにUSBバスからデータを送信できます。ほとんどのUSBデバイスは、最初にUSBデバイスに適切な要求を送信しない限り、データを出力しません。

もしそうなら問題がありますUSBエンドポイント。各USBデバイスには複数のエンドポイントがあります。これはTCPポート番号のように考えることができます。特定のデータフローには常に「制御」エンドポイントと他のエンドポイントがあります。一部のエンドポイントは入力専用で、他のエンドポイントは出力専用です。 USBデバイスから意味のあるデータを取得するには、接続するデバイスのエンドポイントを識別する方法が必要です。

または、生のUSBパケットストリームダンプに関する質問の場合、通常はLinux USBドライバ層の後ろに隠されています。生のパケットストリームにアクセスするには、debugfsファイルシステムをマウントしてロードする必要があります。カーネルusbmonモジュール。これでcat /sys/kernel/debug/usb/usbmon/0u、システム上のすべてのUSBトラフィックダンプを取得したり、ゼロではなく別のバス番号を使用して特定のUSBバスへのトラフィックのみを取得したりすることができます。このモジュールは、/dev/usbmon*高度なUSBトラフィック分析ルーチンの機能も提供します。

より便利な USB トラフィックダンプを取得するには:Wiresharkを使用してUSBトラフィックをキャプチャします。WiresharkはさまざまなUSBプロトコル要素を自動的に識別し、異なるUSBエンドポイント間のデータフローを分離するので、USBパケットヘッダーと実際のペイロードデータを互いに分離できます。データを実際に理解するには、USBデバイスタイプの適切な標準文書と特定のデバイスの技術文書がまだ必要ですが、Wiresharkを使用するとプロセスがはるかに簡単になります。

答え2

短い答え:

lsusb

指定されたデバイスを介してリンクされたアイテムを直接表示するより長い回答の例:

sudo grep -ir "usb" /var|grep -i 'usb 3-1'|tail -n25

tail -n50または、追加情報が必要な場合は、代わりにまたはを使用してlessこの出力に関する追加情報を確認してくださいtail

答え3

「すべてのデバイス」と言うとき、実際にはUSBフラッシュドライブなどの「すべてのブロックデバイス」を意味すると思います(最終的にキーボードまたはファンからデータをダンプすることはどういう意味ですか?)。

かなり現代的なudevを実行している場合は、/dev/disk/by-pathワークステーションの特定のポートに接続されているUSBフラッシュドライブを常に次のように読み取る必要があります/dev/disk/by-path/pci-0000:00:1a.7-usb-0:2:1.0-scsi-0:0:0:0

コンピュータに何があるかを見つける最も簡単な方法は、コンピュータに何かを接続し、表示される内容を確認することです/dev/disk/by-path

関連情報