过滤表达式语法
wpcap过滤器基于声明性谓词语法。过滤器是包含过滤表达式的ASCII字符串。
pcap_compile()接受表达式并将其转换为内核级包过滤器的程序。
pcap_compile()接受表达式并将其转换为内核级包过滤器的程序。
该表达式选择要转储的数据包。如果没有给出表达式,则网络上的所有数据包将被内核级过滤引擎接受。否则,只接受表达式为“true”的数据包。
该表达式由一个或多个 基元组成。 原语通常由 一个或多个限定符前面的id(名称或数字)组成 。
有三种不同的限定词:
type: 限定词表示id名称或数字是指什么样的东西。可能的类型是 主机, 网络 和 端口。例如`host foo',`net 128.3','port 20'。如果没有类型限定符, 则假定主机。
DIR: 限定词指定到和/或从 id的特定传输方向 。可能的方向是 src, dst, src或dst 和 src和 dst。例如`src foo',`dst net 128.3',`src或dst port ftp-data'。如果没有dir限定符, 则假定为src或dst。对于“null”链路层(即点对点协议,如滑动), inbound 和 outbound 限定符可用于指定所需的方向。
proto:限定符将匹配限制为特定协议。可能的protos是: ether, fddi, tr, ip, ip6, arp, rarp, decnet, tcp 和 udp。例如`ether src foo',`arp net 128.3',`tcp port 21'。如果没有原始限定符,则假定与该类型一致的所有协议。
更复杂的过滤器表达式使用的话建立 and, or and not 来组合原语。
例如,`host foo and not port ftp and not port ftp-data。