一、说明简介
过滤器分为“捕获过滤器”与“显示过滤器”,前者只会抓取匹配规则的数据包,而后者数据已经全部抓取,只是在显示的时候,显示匹配规则的数据包。
捕获过滤器采用的是BPF(Berkeley Packet Flter)语法。BPF是一个用于过滤网络报文的框架,主要有两个个功能1、根据外界输入的规则过滤报文 2、将符合条件的报文由内核复制到用户空间。
一个“表达式”包含多个“原语”,“原语”通常包含一个id(标识,比如IP、域名、端口,可以是数字或者是名称)或多个“限定符”组成,原语之间可以使用逻辑运算符组合。
有三种类型的限定符,如下图:
有六种类型的运算符,如下图:
语法举例:
二、过滤器具体语法
大概分为4类,Ethernet过滤器(2层)、主机和网络过滤器(3层)、TCP/UDP端口过滤器(4层)。
2.1配置Ethernet过滤器
Ethernet过滤器指的是二层过滤器,即根据MAC地址来进行进行过滤功能的抓包过滤器。
- ether host
抓取源于或发往某一具体MAC地址的流量,抓取源于或发往某一具体MAC地址的流量。
- ether dst
抓取发往某一具体MAC地址的流量,如此配置:ether dst 00:24:d6🆎98:b6。
- ether src
抓取源于某一具体MAC地址的流量,如此配置:ether src 00:24:d6🆎98:b6。
- ether broadcast
抓取以太网广播流量,如此配置:ether broadcast或ether dst ff:ff:ff:ff:ff:ff。
- ether multicast
抓取以太网多播流量,如此配置:ether multicast。
- ether proto
抓取特定以太网类型的流量(以太网类型代码值用十六进制数表示),如此配置:ether proto 0800。
- vlan <vlan_id>
只抓取由标识符<vlan_id>所指定的VLAN的流量。
- Not或!
表示取反,舍弃源自或发往由标识符Ethernet host所指定的以太网主机的以太网流量格式如Not ether host 或 ! Ether host
2.2配置主机和网络过滤器
所谓主机和网络过滤器,是指基于IP地址的第三层过滤器。
- ip或ipv6
让Wireshark只抓取IPv4或IPv6流量
- host
让Wireshark只抓取源于或发往由标识符host所指定的主机名或IP地址的IP流量。
要让Wireshark只抓取源于或发往主机10.10.10.1的所有流量,抓包过滤器应如此配置:host 10.10.10.1。
要让Wireshark只抓取源于或发往主机www.epubit.com的所有流量,抓包过滤器应如此配置:host www.epubit.com。
- dst host
让Wireshark只抓取发往由标识符host所指定的主机名或IP地址的IP流量。
要让Wireshark只抓取发往主机10.10.10.1的所有流量(即目的IP地址为10.10.10.1的数据包),抓包过滤器应如此配置:dest host 10.10.10.1。
- src host
让Wireshark只抓取源于由标识符host所指定的主机名或IP地址的IP流量。
要让Wireshark只抓取源自主机10.10.10.1的所有流量(即源IP地址为10.10.10.1的数据包),抓包过滤器应如此配置:src host 10.10.10.1。
- net
让Wireshark只抓取源于或发往由标识符net所标识的IPv4/IPv6网络号的流量。
要让Wireshark只抓取源于或发往IP网络192.168.1.0/24的所有流量,抓包过滤器应如此配置:net 192.168.1或net 192.168.1.0 mask 255.255.255.0 或net 192.168.1.0/24。
- dst net
让Wireshark只抓取发往由标识符net所标识的IPv4/IPv6网络号的流量。
- src net
让Wireshark只抓取源于由标识符net所标识的IPv4/IPv6网络号的流量。
- net mask
让Wireshark只抓取源于或发往由标识符net和mask共同指明的IPv4网络号的流量(对IPv6流量无效)
- dst net mask
让Wireshark只抓取发往由标识符net和mask共同指明的IPv4网络号的流量(对IPv6流量无效)。
- src net mask
让Wireshark只抓取源于由标识符net和mask共同指明的IPv4网络号的流量(对IPv6流量无效)。
- net /
让Wireshark只抓取源于或发往由标识符net指明的IPv4网络号的流量。
- dst net /
让Wireshark只抓取发往由标识符net指明的IPv4网络号的流量。
- src net /
让Wireshark只抓取源于由标识符net指明的IPv4网络号的流量。
- broadcast
让Wireshark只抓取IP广播包。
- multicast
让Wireshark只抓取IP多播包。
- ip proto
让Wireshark只抓取IP包头的协议类型字段值等于特定值(等于由标识符proto所指明的protocol code[协议代码]值)的数据包。IP数据包的种类繁多,随IP包头的协议类型字段值而异,比如,TCP数据包(协议类型字段值为6)、UDP数据包(协议类型字段值为17)和ICMP数据包(协议类型字段值等于1)等。
要让Wireshark只抓取ICMP流量,抓包过滤器应如此配置:ip proto 1。
- ip6 proto
让Wireshark只抓取IPv6主包头中下一个包头字段值等于特定值(等于由标识符proto所指明的protocol值)的IPv6数据包。请注意,无法使用该原词根据IPv6扩展包头链中的相关字段值来执行过滤。
- icmp[icmptype]==
让Wireshark只抓取特定类型[icmptype]的ICMP数据包。表示的是ICMP头部中的类型字段值,比如,0(ICMP echo reply数据包)或8(ICMP echo request数据包)等。
要让Wireshark只抓取ICMP echo request流量,抓包过滤器应如此配置:icmp[icmptype]==icmp-echo或icmp[icmptype]==8。在以上两个过滤器中,icmp-echo和8分别表示ICMP echo request数据包的名称和类型(即ICMP数据包的ICMP头部中的类型字段值和与之对应的名称)。
2.3配置TCP/UDP端口过滤器
根据第4层协议TCP/UDP的端口号来实现过滤
- port
源或目的端口号将匹配标识符port所指明的端口号。
只抓源或目的端口号为5060的数据包(SIP流量),抓包过滤器应如此配置:port 5060。
- dst port
目的端口号将匹配标识符port所指明的端口号。
只抓目的端口号为80的数据包(HTTP流量),抓包过滤器应如此配置:dst port 80或dst port http。
- src port
源端口号将匹配标识符port所指明的端口号。
- tcp portrange -或udp portrange -
源或目的端口范围介于p1和p2之间的TCP或UDP数据包
- tcp src portrange -或udp src portrange -
用来抓取源端口范围介于p1和p2之间的TCP或UDP数据包。
- tcp dst portrange -或udp src portrange -
用来抓取目的端口范围介于p1和p2之间的TCP或UDP数据包。
- tcp-urg
用来抓取紧急指针标记位置1的TCP数据包。
- tcp-rst
用来抓取RESET标记位置1的TCP数据包。
- tcp-ack
用来抓取ACK标记位置1的TCP数据包。
- tcp-syn
用来抓取SYN标记位置1的TCP数据包。
只抓所有用来发起(SYN标记位置1)TCP连接的数据包,抓包过滤器应如此配置:tcp-syn!=0。
- tcp-psh
用来抓取PUSH标记位置1的TCP数据包。
- tcp-fin
用来抓取FIN位置1的TCP数据包。
2.4 配置复合型过滤器
复合型过滤器也叫结构化过滤器,由多个过滤条件构成,过滤条件之间通过not、and或or之类的操作符来进行关联。