抓包过滤器和显示过滤器的区别:
1.抓包过滤器配置在抓包之前,wireshark只抓取抓包过滤器过滤的数据
2.显示过滤器配置在抓包后,wireshark已经抓取所有的数据包,显示过滤器让wireshark只显示想看的数据包
抓包过滤器的配置方法:
1.在主页面的...using this filter中输入表达式(点击文本框前面的黄色按钮会显示常用的表达式):
2.打开capture interfaces选项,在capture filter for selected interfaces中输入表达式:
ether dst <> 抓取以太网流量的目的MAC地址
ether src<> 抓取以太网流量的源的MAC地址
ether broadcast 抓取以太网广播流量
ether multicast 抓取以太网多播流量
ether proto <> 所抓以太网流量的以太网协议类型编号(比如:ether proto 0x0806)
0x0800 | IP |
0x0806 | ARP |
0x8137 | Novell IPX |
0x809b | Apple Talk |
关于以太网协议类型的详细介绍可以参看这篇博文:http://blog.csdn.NET/fall221/article/details/47861335
以下两张图是一个ARP数据包和一个DNS数据包,它们的以太网协议类型字段分别是0x0806(ARP)和0x0800(IP):
vlan <> 只抓取指定VLAN的流量
主机和网络过滤器(第三层过滤器)
ip/ipv6 只抓取IPv4或IPv6的数据包
host <> 只抓取源于或发往所指定的主机名或IP地址的流量(比如:host 192.168.1.1)
dst host <> 只抓取发往所指定的主机名或IP地址的流量
src host <> 只抓取源于所指定的主机名或IP地址的流量
gateway <> 只抓穿过host的流量
net<> 只抓取源于或发往标识符的IPv4huoIPv6网络号的流量(比如:net 192.168.1.0/24 或net 192.168.1.0 mask 255.255.255.0 )
dst net <> 只抓取发往标识符的IPv4huoIPv6网络号的流量
src net <> 只抓取源于标识符的IPv4huoIPv6网络号的流量
broadcast 只抓取IP广播包
multicast 只抓取IP多播包
ip proto <> 只抓取IP报头的协议类型字段值等于特定值的数据包
下图为一个TCP数据包,其中三层IP层的Protocol字段为6,表示其上层协议为TCP:
常见的协议类型字段值 1 ICMP 2 IGMP 6 TCP 17 UDP 47 GRE 88 EIGRP 89 OSPF
ip6 proto <> 只抓取IPv6报头的协议类型字段值等于特定值的数据包
icmp[icmptype]==<> 只抓取特定类型的数据包(比如:icmp[icmptype]==0 ICMP echo reply数据包)
ip[2:2]==<> 字节偏移和净载匹配过滤器(第一个2代表从第二字节开始,第二个2代表两个字节长)
TCP/UDP过滤器(第四层过滤器)
port <> 抓取源或目的端口匹配的数据包(比如:port 80或port http)
dst port <> 抓取目的端口匹配的数据包
src port <> 抓取源端口匹配的数据包
tcp/udp dst/src portrange <>-<> 抓取TCP或UDP的源或目的端口在一个范围内的数据包(比如:tcp dst portrange 50 100 )
tcp[tcpflags] & (tcp-rst)==1 抓取RST标识位为1的TCP数据包
下图为一个RST标识位为1的TCP数据包:
less <> 只抓取不长于<>的数据包
greater <> 只抓取不短于<>的数据包
tcp[13] & 0x01 =1 采用节偏移和净载匹配过滤器方法,13代表TCP数据包的第13个字节开始,13字节就是标记位,这个的意思是抓取FIN为1的数据包
复合型过滤器
复合过滤器就是使用“与或非”操作符连接几个单独的表达式
!或not | 非 |
&&或and | 与 |
||或or | 或 |
not broadcast and not multicast 不抓取广播和多播数据包(只抓取单播包)
tcp port 23 and host 192.168.1.1 只抓取主机192.168.1.1的telnet流量
tcp dst port 23 and tcp src portrange 5000-6000 抓取tcp源端口范围为5000-6000的telnet流量
配置字节偏移和净载匹配型过滤器
基本格式如下:
proto [offset:bytes]
proto:要抓取的协议
offset:从协议头部开始所偏移的字节数
bytes:抓包过滤器所要检查的字节数
举几个例子:
tcp [2:2]>50 and tcp[2:2]<100 端口范围是50-100的TCP数据包
tcp[14:2]<8192 抓取窗口大小字段低于8192的TCP数据包
以下附上IP,TCP,UDP包头以供参考: