3

長さが 16 バイトのパケットをキャプチャする必要があります

私が近づいたのはこれです:

tcpdump -ni lo -ttt dst port 1337 and greater 16

私の好みに合わせて他のフィルターを追加すると、次のようになります。

tcpdump -ni lo -ttt dst port 1337 and greater 16 and not greater 17
tcpdump -ni lo -ttt dst port 1337 and \(greater 16 and not greater 17\)
tcpdump -ni lo -ttt dst port 1337 and greater 16 and less 16

パケットがまったく表示されないだけです。

ただし、使用:

tcpdump -ni lo -ttt dst port 1337 and less 16

どちらも機能していないようです。実際には、少ないフィルターが機能するかどうか迷っています...

どんな助けでも大歓迎です:)

4

1 に答える 1

3

Barry Margolin が指摘したように、greaterオペレーターはすべてのヘッダーを含むパケット全体の長さをチェックします。たとえば、16 バイトの TCP ペイロードと 20 バイトの TCP ヘッダー (オプションなしの最小 TCP ヘッダー長) と 20 バイトの IPv4 ヘッダー (オプションなしの最小 IPv4 ヘッダー長) と 14 バイトのイーサネット ヘッダーです。 70 バイト。

「lo」から、Linux でキャプチャし、ループバック インターフェイスでキャプチャしていると推測しています。この場合、パケットには (偽の) イーサネット ヘッダーがあります。

古いバージョンの tcpdump では、IPv6 サポートなしでビルドされた場合、68 バイトがデフォルトのスナップショット長でした。そのため、おそらく 68 として報告されている長さはキャプチャされた長さであり、最後の 2 バイトが切り取られています。フラグを指定して tcpdump を実行してみてください(本当に-o 0古いバージョンの tcpdump でない限り、スナップショットの長さ 0 は、「パケットが途切れないようにスナップショットの長さを非常に高く設定する」ことを意味します)。

于 2014-04-10T02:00:15.213 に答える