usbmonには複数のノードがあります

usbmonには複数のノードがあります

usbmonにフォルダ内の単一のバスに複数の/sys/kernel/debug/usb/usbmon/ノード(2s、2u、2tなど)があるのはなぜですか?

私のデバイスにUSBトラフィックをスニッフィングしようとすると、一部のUSBフレームが失われたようです。 (私のアプリケーションはU2F-HiDを使用してデバイスと通信し、一部のパケットは128バイトを超えています。)

すべてのトラフィックをスニッフィングして利用可能な形式に解析する正しい方法は何ですか? (すべてのチュートリアルが非常に役に立つでしょう。)今私はファイルcatにリダイレクトを使用します。

答え1

Documentation/usb/usbmon.txtカーネルソースコードから:

現在、2つの形式、つまり生または「1t」形式と「1u」形式がサポートされています。 「1t」形式はカーネル2.6.21では廃止されました。 「1u」形式は、ISOフレーム記述子、間隔などのいくつかのフィールドを追加します。少し長い線を生成しますが、それ以外は「1t」形式の完全な親セットです。

次に、これらのフィールドの意味を説明します。などのノードは1sいくつかの状態(例:nreaders=読者数= usbmonイベントコンシューマ)を提供しますが、詳細を知らずに使用したことはありません。

wiresharkあなたは、または同じものを使用することができます仮想アナライザトラフィックをより簡単に分析します。キャプチャtcpdumpおよびポスト分析でも可能です。wireshark

sudo tcpdump -i usbmon1 -w usbmon.pcap &

編集する

usbmon.pcaptcpdumpまたは他の手段を介して取得した他のpcapファイルと同様に、このファイルをwiresharkにロードできます。

IIRC、usbhid-dumpHIDの読み込みとダンプ記述子 カーネルから獲得(したがって、メッセージ交換で情報を取得できません)、一部のカーネルAPIの変更がある場合、またはHIDにアクセスするにはUSBデバイスのバインドを解除する必要がありますが、詳細を忘れていました。

生またはカーネルチェックマウントを介してHID記述子に直接アクセスできます。debugfs

mount -t debugfs none /sys/kernel/debug

それから見てください/sys/kernel/debug/hid/<dev>/rdeschid-rd生のHID記述子を解析することもできます。

HIDをお探しの場合レポート、適切なhidraw機器を使用してください。

関連情報