BPF(Berkeley Packet Filter)伯克利抓包过滤器实践
BPF Berkeley Packet Filter伯克利抓包过滤器是驱动级抓包过滤接口,多数抓包工具都支持该语法。
过滤器就是一个表达式,由原语,运算符组成。
原语: 原语是限定符qualifiers(有时也称为keywords)+ID(字符或数字),如 host www.baidu.com, port 80
限定符:
type
- host, net/mask,port, portrange
dir
- dst, src, dst or src[缺省], dst and src;
protocol
- ether,arp,icmp,ip,ip6, tcp, udp等底层协议,但不支持如dns, http等应用层协议。
其它
- gateway, broadcast, multicast, less, greater
- gateway host指数据包以host为网关, wireshark不支持
示例:
host www.baidu.com #某个主机
net 192.168.31.0/24 #一个CIDR格式网段
net 192.168.31.0 mask 255.255.255.0 #一个net/mask格式网段
注:wireshark中认为net 192.168.31.21/24是无效的bpf语法,而net 192.168.31.21/32是正确的,net/mask类似
host www.baidu.com and port 80 or 443
等效于host www.baidu.com and port 80 or port 443,表达的意思是主机为www.baidu.com且端口为80或443
host www.jd.com and portrange 80-443
net 192 表示以192开始的网段,mask是255.0.0.0
多个限定词可以叠加如tcp port 80
运算符:
and &&
or ||
not !
注:否定运算符有较高的