x バイトのカスタム ヘッダーを含む IP パケットがインターフェイスに送信されます。
最初の x バイトを無視し、IP パケットをデコードして表示するように tcpdump または tshark に指示する方法はありますか?
最後に行うことは、カスタム ディセクタを作成することです。
1 に答える
これは(おそらく)Linuxなので:
インターフェイスのドライバーは、ARPHRD_
リンク層ヘッダーのタイプを指定する値を提供する必要があります(すべてのLinuxネットワークインターフェイスドライバーも同様です)。
そのARPHRD_
値がそのリンク層ヘッダータイプに対して正しく、libpcapがそのARPHRD_
値を知っている場合、それは適切なDLT_
値にマップされ、tcpdump / * sharkは、そのDLT_
値を理解している場合、パケットを処理できます。(そうでない場合は、サポートを追加する必要がありますが、tcpdumpと* sharkは、DLT_
IPを転送するインターフェイスにlibpcapが提供できるすべての値をサポートしていると思います)。
そのARPHRD_
値がそのリンク層ヘッダータイプに対して正しく、libpcapがその値を認識していないARPHRD_
場合、「クックされた」キャプチャが実行されます。これは、カスタムヘッダーがlibpcapに提供されないことを意味します(ドライバーがskbuffの右フィールド。そうでない場合、ドライバーはバグがあります)、libpcapはDLT_LINUX_SLL
「Linuxクックドモードキャプチャ」ヘッダーを使用して挿入します。Tcpdumpと*sharkは、の「Linuxクックドモードキャプチャ」ヘッダーを処理しDLT_LINUX_SLL
ます。
Linuxがそのカスタムヘッダーの値をまだ定義していない場合は、独自の値を定義ARPHRD_
する必要があるかもしれません。libpcapはそれを認識せず、「クックドモード」キャプチャにフォールバックします。