Linux ubuntu を実行しています。
基本的に、このコマンドが構文エラーになるのはなぜですか: -
tcpdump -i eth0 -n udp -X -v -s 1514 'tcp[40:4] = 0x31323334'
40 番目のバイトに「1234」の udp パケットが表示されます。
つまり、udp は tcp パケットではないことがわかりましたが、ロジックは引き続き機能するはずです。どうすればこれを書くことができますか?
以下を試してください:
tcpdump -i eth0 -X -v -s 1514 'udp[40:4] = 0x31323334'
Afaik、proto relop フィルターは、指定したプロトコルのみに一致する必要があります。-n udp は必要ありません。
tcpdump は、フィルタリング パラメーターとして何を使用するかについて混乱しています。udp を明示的に使用した場合は、すべての udp パケットがキャプチャされます。特定の udp パケットが必要な場合は、オフセットを指定できます。したがって、必要に応じて、オフセットを指定して udp を指定するか、すべての udp パケットをキャプチャする場合は単に udp を指定します。以下のようなものがあなたの要件を満たすはずです:
tcpdump -i eth0 -n -X -v -s 1514 'udp[40:4] = 0x31323334'