验证有效BPF过滤器的简单方法

问题描述 投票:0回答:2

将BPF过滤器验证为普通用户的最简单方法是什么?

最容易发现的是使用一个小的pcap文件运行tcpdump,作为-r选项的输入。

$ tcpdump -r one_packet.pcap -F invalid_bpf.conf 2> /dev/null ; echo $?
1
$ tcpdump -r one_packet.pcap -F valid_bpf.conf 2> /dev/null ; echo $?
0

返回无效或有效BPF过滤器的标准错误代码。这需要我有一个PCAP文件作为输入提供。

是否有没有PCAP文件或特殊特权的简单测试方法?

libpcap tcpdump bpf
2个回答
1
投票

[[[IF您有一个外壳程序,该外壳程序具有支持转义序列的内置“ echo”命令,这样做的一种不正确的方法是]]echo -en "\0324\0303\0262\0241\02\0\04\0\0\0\0\0\0\0\0\0\0377\0377\0\0\01\0\0\0"|\ ./tcpdump -r - -F bpf.conf 2>/dev/null; echo $?

这在OS X 10.8上对我有用,它具有bash 3.2.48(1)-发行版(x86_64-apple-darwin12)。

该“ echo”命令写出一个简短的pcap文件,其中没有数据包,并且链接层头类型为DLT_EN10MB。这将测试过滤器对于以太网是否有效;有些过滤器对某些链路层头类型有效,但对其他链路类型无效,例如“ not broadcast”(对以太网有效,对PPP无效),因此您需要选择

some

link-测试时使用的层标题类型。

0
投票
关于上面建议的答案有一个问题,我执行了以下步骤,但在所有情况下,输出的结果仅为1。
© www.soinside.com 2019 - 2024. All rights reserved.