一 概况
本文是对wireshark抓包过滤器, 跟显示过滤器的总结
由于一些未知的原因, 这俩过滤器的语法并不一样!
我大概知道为什么不一样了, 因为这俩出现的顺序不一样, 抓包过滤器先出现的, 可能当时参考了tcpdump的语法; 而显示过滤器是后出现的, 所以语法设计上更人性化一些, 为了兼容性的考虑, 要让后来的使用者同时学习两套语法?!
二 抓包过滤器
0 符号
位运算
& |
逻辑运算
! (或者not)
&&(或者 and)
||(或者or)
> >= < <= ==
1 二层过滤器
ether host mac地址 (eg: ether host 00:24:d6:ab:98:b6)
ether src mac地址
ether dst mac地址
ether multicast
ether broadcast(或者 ether dst ff:ff:ff:ff:ff:ff)
ether proto <protocol> (eg: ether proto 0x0806(arp))
vlan <vlan_id>: 只抓取特定vlan的流量
2 三层过滤器
ip(或者ip6) : 只抓取ipv4或者ipv6的流量
gateway <主机名>: 表示抓取主机名对应的mac地址包, 且不抓取主机名对应的ip地址,感觉很像是抓取网关的流量, 不太常用, 等实际用到了, 再改
broadcast: ip广播包
multicast: ip多播包
icmp [icmptype] ==<identifier>: 抓取特定类型的icmp包(eg: icmp[icmptype] ==8 ;icmp[icmptype]==icmp-echo)
host <host> eg: host 192.168.1.1 , host www.baidu.com
src host <host>
dst host <host>
net <net>: 抓取源自或者发往某个网段的ipv4或ipv6的包 (eg: net 192.168.1 抓取192.168.1.0/24网络的包; net 2001::/16 )
dst net <net>
src net <net>
以下只针对ipv4包有效
++++++++++++++++++++++++++++++++++++++++++++++++++++++
net <net> mask <netmask>: 用掩码表示网络 (eg: net 192.168.1.0 mask 255. 255. 255. 0抓取192.168.1.0/24网络的包)
src net <net> mask <netmask>
dst net <net> mask <netmask>
net <net>/<len>: 掩码位表示网络 (eg: net 192.168.1.0/24 抓取192.168.1.0/24网络的包)
src net <net>/<len>
dst net <net>/<len>
++++++++++++++++++++++++++++++++++++++++++++++++++++++
ip proto <protocol code>: 根据ipv4上层协议字段过滤(eg: ip proto 1 ==> 只抓取icmp包)
ip6 proto <protocol> 根据ipv6包头的下一个包头字段来过滤
ip[num1:num2] ==<num3> : 过滤ipv4包头从num1开始的num2长度的整数等于num3的包,":num2"没有的话, 表示1字节
3 四层过滤器
port <port>: 根据tcp或udp端口号过滤
src port <port>
dst port <port>
tcp/udp portrange <p1>-<p2>: 抓取端口范围在[p1,p2]里面的包
tcp/udp[num1:num2] ==num3