标签:src 00 报文 网络协议 抓取 过滤 过滤器 Wireshark
Wireshark 捕获和显示过滤器
这篇文章介绍一下 Wireshark
的过滤器,Wireshark
过滤器分为 捕获过滤器
和 显示过滤器
,学习它们可以帮助你更好抓取到想要的报文。
1.捕获过滤器(BPF 过滤器)
捕获过滤器是在报文抓取之前的一种过滤,可以指定抓取满足过滤条件的报文内容:
- 用于减少抓取的报文体积
- 使用
BPF
语法,功能相对有限
1.1 捕获过滤器使用方法
在 Wireshark
面板点击 选项->捕获
出现的窗口下方 capture filter for selected interfaces
栏目即可填写捕获过滤器的过滤条件:
1.2 捕获过滤器(BPF)语法介绍
Berkeley Packet Filter
,在设备驱动级别提供抓包过滤接口,多数抓包工具都支持此语法(tcpdump),expression
表达式由多个原语组成:
1.2.1 primitives 原语过滤
primitives
原语由名称或数字,以及描述它的多个限定词组成,qualifiers
限定词:
Type
:设置数字或者名称所指的类型,例如host www.baidu.com
- (1)
host
、port
- (2)
net
,设定子网,如net 192.168.0.0 mask 255.255.255.0
等价于net 192.168.0.0/24
- (3)
portrange
,设置端口范围,例如portrange 6000-8000
Dir
:设置网络出入方向,例如dst port 80
- (1)
src
、dst
、src
、src or dst
、src and dst
(src
表示源,dst
表示目标) - (2)
ra
、ta
、addr1
、addr2
、addr3
、addr4
、(仅对IEEE 802.11 Wireless LAN
有效) Proto
:指定协议类型,例如udp
ether
、fddi
、tr
、wlan
、ip
、ip6
、arp
、rarp
、decnet
、tcp
、udp
、icmp
、igmp
、icmp
、igrp
、pim
、ah
、esp
、vrrp
- 其他
- (1)
geteway
:指明网关IP
地址,等价于ether host $ehost and not host $host
- (2)
broadcast
:广播报文,例如ether broadcast
或者ip broadcast
- (3)
multicast
:多播报文,例如ip multicast
或者ip6 multicast
- (4)
less
,greater
小于或者大于。
1.2.2 原语运算符
原语运算符如:src or dst portrange 6000-8000 && tcp or ip6
- 与:
&&
或者and
- 或:
||
或者or
- 非:
!
或者not
1.2.3 基于协议域过滤
- 捕获所有
TCP
中的RST
报文 TCP[13]&4==4
- 抓取
HTTP GET
报文 port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420
,注意47455420
是ASCII
码的16
进制,表示'GET'
,TCP
报文头可能不只20
字节,data offset
提示了承载数据的偏移,但它以4
字节为单位
1.2.4 捕获过滤抓取报文
以抓取 GET
请求为例,点击 捕获->选项
,填入 port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420
即可开始抓取 GET
相关的报文;
抓取到报文如下:
2.显示过滤器
显示过滤器是对已经抓取的报文进行二次过滤,显示过滤器语法仅能适用于 Wireshark
工具,它的特点如下:
- 对已经抓取到的报文过滤显示
- 功能强大
2.1 显示过滤器使用方法
在 Wireshark
报文抓取栏目上方可以在显示过滤器中填写过滤条件:
2.2 显示过滤器的过滤属性
-
任何在报文细节面板中解析出的字段名,都可以作为过滤属性
-
在
视图->内部->Supported Protocols
里边,可以看到各字段名对应的属性名:
-
右键报文细节中字段点击
作为过滤器应用->选中
:
会自动填入显示过滤器中;
2.3 过滤值比较
英文 | 符号 | 含义说明 |
---|---|---|
eq | == | 等于,如 ip.src == 10.0.0.4 |
ne | != | 不等于,如 ip.src != 10.0.14 |
gt | > | 大于,如frame.len > 10 |
lt | < | 小于,如frame.len < 128 |
ge | >= | 大于等于,如frame.len ge 0x100 |
le | <= | 小于等于,如frame.len <= 0x20 |
contains | 包含,如sip.TO contains "a664" | |
matches | ~ | 正则匹配,如host matches "acme\.(org|com|net)" |
bitwise_and | & | 位与操作,如 tcp.flags & 0x02 |
2.4 过滤值类型
类型 | 含义说明 |
---|---|
Unsigned interger | 无符号整型,如 ip.len le 1500 |
Signed integer | 有符号整型,如 有符号整型 |
Boolean | 布尔值,如 tcp.flags.syn (直接输入,无需比较) |
Ethernet address | 以 、 、- 或者. 分隔的 6 字节地址,如eth.dst==ff:ff:ff:ff:ff:ff |
IPv4 address | 如 ip.addr == 192.168.0.1 |
IPv6 address | 如 ipv6.addr == ::1 |
Text string | 如 http.request.uri == "https://www.wireshark.org/" |
2.5 多条件组合符
英文 | 符号 | 含义说明 |
---|---|---|
and | && | 逻辑与,如 ip.src == 10.0.0.4 && tcp.flags.fin |
or | || | 逻辑或,如 ip.src == 10.0.0.4 or ip.src == 192.168.10.1 |
xor | ^^ | 逻辑异或,如 tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29 |
not | ! | 逻辑非,如 not llc |
[n:m] | 切片操作符,表示 n 是起始偏移量,m 是切片长度,如 eth.src[0:3] == 00:00:83 | |
[n-m] | 切片操作符,表示 n 是起始偏移量,m 是截止偏移量,如 eth.src[1-2] == 00:83 | |
[:m] | 切片操作符,表示从开始处至 m 截止偏移量,如 eth.src[:4] == 00:00:83:00 | |
[m:] | 切片操作符,表示 m 是起始偏移量,至字段结尾,如 eth.src[4:] == 20:20 | |
[m] | 切片操作符,表示取偏移量 m 处的字节,如 eth.src[2] == 83 | |
[,] | 切片操作符,表示使用逗号分割时,允许以上方式同时出现,如 eth.src[0:3,1-2,:4,4:,2] == 00:00:83:00:83:00:00:83:00:20:20:83 | |
in | 集合操作符,如 tcp.port in {443 4430..4434} ,其中 4430..4434 表示一段端口号 |
2.6 使用函数过滤
函数名 | 含义说明 |
---|---|
upper | 表示字符转化为大写 |
lower | 表示字符转化为小写 |
len | 表示字符的长度 |
count | 表示字符出现的次数 |
string | 把非字符类型转化为字符类型 |
扫码关注爱因诗贤
标签:src,00,报文,网络协议,抓取,过滤,过滤器,Wireshark 来源: https://blog.csdn.net/qq_38937634/article/details/111287107
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。