将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文件或特殊特权的简单测试方法?
[[[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-测试时使用的层标题类型。