web-dev-qa-db-ja.com

キャプチャのみTCP tcpdumpを使用したSYN-ACKパケット

TCP SYN-ACKパケットのみをキャプチャしようとしています。つまり、SYNとACKの両方のビットが次のように設定されています。

tcpdump -vvvni eth0 tcp[tcpflags] == tcp-syn and tcp[tcpflags] == tcp-ack

しかし、それはそのようなエラーを出します:

tcpdump: expression rejects all packets

tcpdump を使用してそれを行う方法があるかどうかはまだわかりません。

ちなみに、SYNフラグも設定してパケットをキャプチャしようとしましたが、SYN-ACKもあるはずですが(ここでは矛盾がないため)、純粋なSYNパケットしかありません(SYNビットのみが設定されています)。したがって、SYN-ACK、またはSYNとSYN-ACKのみを表示する方法が必要です。

追伸それは通常のTCP IPv4経由です。

2
red0ct

pcap-filter のマニュアルページと特に最後の例を見ると、少なくともSYNとACKの両方が設定されているパケットに一致する正しいフィルター構文は次のようになると思います。

tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn|tcp-ack

代わりに、フィルター式は、フラグがequalであるパケットをSYNに一致させ、equal同時にACKすると、同時に両方に等しくなることはできないため機能しませんが、両方のフラグしかcontainしかできません。

フラグがSYN + ACKに等しく、他のフラグが設定されていないパケットの照合に関心がある場合は、より単純な構文を使用することもできます。

tcp[tcpflags] == tcp-syn|tcp-ack
2
Steffen Ullrich