如何根据数据包长度筛选tcpdump输出



我一直在尝试根据数据包长度筛选tcpdump输出。但我运气不好。

这是一个命令的简单输出;

tcpdump-n-i eth0 dst端口443-A

17:03:30.866890 IP 192.168.0.149.45104 > 62.75.148.60.443: Flags [S], seq 2685064927, win 14600, options [mss 1460,sackOK,TS val 7028787 ecr 0,nop,wscale 4], length 0
E..<..@.@.......>K.<.0...
........9............
.k@3........

17:03:30.867658 IP 192.168.0.149.45104 > 62.75.148.60.443: Flags [.], ack 2285019097, win 913, options [nop,nop,TS val 7028787 ecr 974439509], length 0
E..4..@.@.......>K.<.0...
...2.............
.k@3:..U

17:03:30.867928 IP 192.168.0.149.45104 > 62.75.148.60.443: Flags [P.], seq 0:171, ack 1, win 913, options [nop,nop,TS val 7028787 ecr 974439509], length 171
E.....@.@..f....>K.<.0...
...2.............
.k@3:..U...........Opw2.....l..".T.7.q.]h..8W..%.....H...
.......9.8.......5...   .....E.D.3.2...........A...../.........
...1.........alice.sni.velox.ch.
.................#..

17:03:30.869712 IP 192.168.0.149.45104 > 62.75.148.60.443: Flags [.], ack 1319, win 1078, options [nop,nop,TS val 7028788 ecr 974439511], length 0
E..4..@.@.......>K.<.0...
...2.....6.......
.k@4:..W

17:03:30.870724 IP 192.168.0.149.45104 > 62.75.148.60.443: Flags [P.], seq 171:178, ack 1319, win 1078, options [nop,nop,TS val 7028788 ecr 974439511], length 7
E..;..@.@.......>K.<.0...
...2.....6.......
.k@4:..W......0

我只想看到长度超过100字节的包。在这种情况下,只有第三个数据包。

选项[nop,nop,TS val 7028787 ecr 974439509],长度171

我看过tcpdump的手册页,但找不到任何有用的参数。这里有一个表达式"更大的长度";http://www.ethereal.com/docs/man-pages/tcpdump.8.html但我也不会用那种表达方式。

$ tcpdump -n -i eth0 dst port 443 -A -x greater 100
tcpdump: syntax error

谢谢你的帮助。

greaterlength有效,但您必须将其作为完整筛选器表达式的一部分使用,并且筛选器表达式必须位于所有命令行标志参数之后。

工作示例:

tcpdump -n -i eth0 -A -x dst port 443 and greater 100

应该有效-dst port 443 and greater 100是一个完整的筛选器表达式,它检查发送到TCP或UDP端口443并且总长度(包括链路层、IP和TCP标头!)大于100的数据包。

不工作示例:

tcpdump -n -i eth0 dst port 443 -A -x greater 100

不起作用-dst port 443中的dst被视为筛选表达式的开头,这意味着它和它之后的所有,包括-A-x,都被视为筛选器表达式的一部分,但-A-x不是筛选表达式的有效组件。它们可能是命令行选项,因此它们必须在所有非标志参数(包括筛选器表达式的组件)之前

最新更新