tcpdump 无法识别或运算符

tcpdump 无法识别或运算符

我想要捕获 PPPoE 发现数据包或会话数据包。

tcpdump 是否支持将协议与或组合?手册页似乎这么说,但它似乎不适用于装有 tcpdump 4.6.2 和 libpcap 1.6.2 的 Raspbian Wheezy。

然后我打开两个 tcpdump 会话(在不同的控制台窗口,同一主机):

pi@raspberrypi205 $ sudo tcpdump -i eth1 -vvvv pppoed or pppoes
pi@raspberrypi205 $ sudo tcpdump -i eth1 -vvvv pppoes or pppoed

然后我使用 Scapy 2.2.0 发送一个数据包:

macIf1 = "00:24:9b:1b:51:be"; macIf2 = "00:24:9b:1b:50:23"; macBroadcast = "ff:ff:ff:ff:ff:ff"
pppoe_discovery = Ether(src=macIf1, dst=macBroadcast)/PPPoED(code=0xa7,sessionid=0x1122)/Raw(load='\x01\x04\x00\x00\x00\x00')
sendp(pppoe_discovery, iface="eth1")

值得注意的是,第一个 tcpdump 命令捕获了数据包,而第二个没有。我做错了吗?不能同时运行两个 tcpdump 命令吗?

pi@raspberrypi205 $ sudo tcpdump -i eth1 -vvvv pppoed or pppoes
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
12:17:50.174774 PPPoE PADT [ses 0x1122] [AC-Cookie][|pppoe]

pi@raspberrypi205 $ sudo tcpdump -i eth1 -vvvv pppoes or pppoed
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes

答案1

文档解释这一点:

请注意,假设数据包是 PPPoE 会话数据包,表达式中遇到的第一个 pppoes 关键字会改变表达式其余部分的解码偏移量。

相关内容