元のフィルタ(フラグメント化されたパケットがキャプチャされない)
udp port 12345
フラグメント化されたパケットもキャプチャできるようにしたフィルタ
udp port 12345 or (ip[6:2] & 0x1fff != 0)
背景
UDPパケットをポート番号指定でキャプチャすると、フラグメント化されたパケットがキャプチャされない。
以下の例ではUDPのペイロードを900から100ずつ増やしたパケットを送っている。
- ポート番号のみ指定したケース
udp port 12345
ペイロード長1500を超えるあたりからフラグメント化された最初のパケットしかキャプチャできていない。
- フラグメントを含むようにしたケース
udp port 12345 or (ip[6:2] & 0x1fff != 0)
ペイロード長1500以降のパケットもフラグメント化された続きの部分がキャプチャされ、全体が再構成されている。
備考
フラグメント化された残りの部分にはUDPヘッダが含まれていないので、ポート番号での絞り込みができない。
IPアドレスでの絞り込みは可能で、宛先が192.168.0.1の場合は以下のようにする。
udp port 12345 or (ip[6:2] & 0x1fff != 0 and ip dst host 192.168.0.1)
検証環境
WireShark Version 3.4.8 (v3.4.8-0-g3e1ffae201b8)
参考記事