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

时间:2014-03-18 19:27:37

标签: libpcap tcpdump bpf

将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文件或特权的情况下进行这个简单的测试?

1 个答案:

答案 0 :(得分:1)

IF 你有一个shell,它有一个支持转义序列的内置“echo”命令,这样做的一种有点不正常的方法就是< / p>

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)-release(x86_64-apple-darwin12)。

“echo”命令写出一个没有数据包的短pcap文件,链接层头类型为DLT_EN10MB。这将测试过滤器是否对以太网有效;有些过滤器对某些链路层标头类型有效,但对其他类型无效,例如“非广播”,这对以太网有效但对PPP无效,因此您需要选择 some 测试时使用的链接层标题类型。