Wireshark网络抓包(二)——过滤器


一、捕获过滤器

选中捕获选项后,就会弹出下面这个框,在红色输入框中就可以编写过滤规则。

1)捕获单个IP地址

2)捕获IP地址范围

3)捕获广播或多播地址

4)捕获MAC地址

5)捕获所有端口号

6)捕获特定ICMP数据

当网络中出现性能或安全问题时,将会看到ICMP(互联网控制消息协议)。

在这种情况下,用户必须使用一个偏移量表示一个ICMP中字段的位置。

偏移量0表示ICMP字段类型,偏移量1表示ICMP位置代码字段。

二、显示过滤器

显示过滤器语法如下:

1)协议过滤器

2)应用过滤器

3)字段存在过滤器

字段名还有很多,可以在状态栏中找到对应的字段名:

4)特有过滤器

5)显示单个IP地址或主机

6)显示地址范围

7)显示一个子网IP

以CIDR(无类型域间选路)格式使用ip.addr字段名定义一个子网过滤器。

斜杠和数字分别定义IP地址的网络部分和掩码位数。

子网掩码通过与IP地址做与操作,从而分离出 IP 地址中的网络部分与主机部分。

8)过滤单一TCP/UDP会话

tcp.stream eq 会话序号,在传输层数据中可以看到会话序号。

9)使用关键字

1. frame contains "string"搜索,在帧中搜索一个关键字

2. 字段名搜索,例如前面提到的http.request.method contains "get"

3. 搜索关键字时不区分大小写,上面那个搜索将搜不出结果,因为字段内容其实是“GET”大写的,修改http.request.method matches "(?i)(get)"

4. 搜索多个关键字,http.request.method matches "(?i)(get|post)"

5. 使用通配符,也就是正则表达式

10)时间过滤器

在物理层数据帧中有三个时间:

1. 距离上一个捕获的包的时间间隔

2. 从上次显示的包开始计时,距离上一个显示的包的时间间隔

3. 距离第一个捕获包的时间间隔,默认第一个数据帧的时间为0.000000

frame.time_delta 过滤的是第一种时间

在Packet List面板中默认加了Time列,表示的是第三种时间。

11)基于TCP的时间过滤

tcp.time_delta的计算与上一个类似,只是字段包含在TCP头部,如果要查看必须启用Calculate conversation timestamps选项。

选择Edit | Preference | Protocols | TCP:

在传输层数据段中多了两个表示时间的字段:

tcp.time_delta过滤的是第二种时间。

参考资料:

Wireshark网络分析的艺术

Wireshark数据包分析实战详解

wireshark中的时间格式