wireshark有两种过滤方式:捕获过滤器、显示过滤器。
1.捕获过滤器
在抓包之前就设定好过滤条件,只抓取符合条件的数据包。
关于捕获过滤器的一些常用语法,可以在工具栏中,依次点击“捕获”-->“捕获过滤器”中查看。
比较符号 | |
与 | && 或 and |
或 | || 或 or |
非 | ! 或 not |
常用过滤表达式 | |
源地址过滤 | src www.baidu.com |
目的地址过滤 | dst www.baidu.com |
目的地址端口过滤 | dst port 80 |
协议过滤 | udp |
2.显示过滤器
在已捕获的数据包集合中设置过滤条件,隐藏不想显示的数据包,只显示符合条件的数据包。
① 过滤值比较符号及表达式之间的组合
英文 | 符号 | 描述及示例 |
---|---|---|
eq | == | 等于 ip.src == 192.168.1.30 |
ne | != | 不等于 ip.src != 192.168.1.30 |
gt | > | 大于 frame.len > 10 |
lt | < | 小于 frame.len < 128 |
ge | >= | 大于等于 frame.len ge 10 |
le | <= | 小于等于 frame.len <= 128 |
contains | 包含 sip.To contains "xxx" | |
matches | ~ | 正则匹配 host matches "acme\.(org|com|net)" |
bitwise_and | & | 位与操作 tcp.flags & 0x01 |
and | && | AND逻辑与 ip.src == 192.168.1.30 and tcp.flags.fin |
or | || | OR逻辑或 ip.src == 192.168.1.30 or ip.src == 192.168.2.30 |
xor | ^^ | XOR逻辑异或 tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29 |
not | ! | NOT逻辑非 not llc |
② 针对IP进行过滤
case 1 筛选出源 IP 地址是 192.168.2.30 的数据包
过滤命令:
ip.src_host == 192.168.2.30
case 2 筛选出目的地址是192.168.1.88的数据包
过滤命令:
ip.dst_host == 192.168.1.88
case 3 筛选出源 IP 或者目的 IP 地址是 192.168.1.30 的全部数据包
ip.addr == 192.168.1.30
case 4 排除 case 3 的数据包,需要加 “!”
过滤命令:
!(ip.addr == 192.168.1.30)
case 5 筛选出源 IP 地址是 192.168.1.30 且目的 IP 地址是 192.168.2.30 的数据包
过滤命令:
ip.src_host == 192.168.1.30 && ip.dst_host == 192.168.2.30
case 6 筛选出源 IP 地址是 192.168.1.30 或者源 IP 地址是 192.168.2.30 的数据包
过滤命令:
ip.src_host == 192.168.1.30 && ip.src_host == 192.168.2.30
③ 针对端口进行过滤
case 1 筛选源端口和目的端口为80的数据包(以TCP协议为例)
过滤命令:
tcp.port == 80
case 2 根据 TCP 目的端口筛选数据包
过滤命令:
tcp.dstport == 80
case 3 根据 UDP 源端口筛选数据包
过滤命令:
udp.srcport == 80
case 4 筛选不低于某端口的数据包(以UDP协议为例)
过滤命令:
udp.port >= 80
④ 针对协议进行过滤
获取某种协议数据包,仅需要把协议名字以小写的形式输入即可。常用的协议有 http、udp、tcp、dns、ip、ssl、ftp、arp、icmp、smtp、pop、telnet、ssh、rdp、sip ...
case 1 仅筛选http协议
过滤命令:http
case 2 筛选多种协议数据包
过滤命令:http or telnet
拓展:根据 http 请求的一些数据包筛选
case 1 精确筛选域名
过滤命令:
http.host==baidu. com
case 2 模糊筛选域名
过滤命令:
http.host contains 'www.baidu.com'
case 3 筛选请求地址中包含"alarm” 的请求
过滤命令:
http.request.uri contains 'Alarm' (contains 后的关键字区分大小写)
http. request. uri matches 'alarm' (matches 后的关键字不区分大小写)
case 4 筛选请求的content type类型
过滤命令:
http.content_type ==' text/html'
case 5 筛选http请求方法
过滤命令:
http.request.method==’ POST’
case 6 筛选http响应状态码
过滤命令:
http.response.code==302
⑤ 针对长度进行筛选
过滤命令:
udp.length<30