Wireshark抓包过滤命令大全

一、简介

Wireshark 是一款开源软件,最早由 Gerald Combs 在 1998 年创建,原名 Ethereal。2006 年,由于商标问题,Ethereal 更名为 Wireshark。作为一个网络协议分析器,Wireshark 能够捕获网络接口上的数据包,并提供详细的解码和分析功能。Wireshark 支持多种操作系统,包括 Windows、macOS 和 Linux。

Wireshark 的主要功能包括:

  • 实时数据捕获:能够捕获实时流量并对其进行分析。

  • 数据包解码:支持数百种网络协议,能够解码并显示各种协议的详细信息。

  • 过滤功能:提供强大的过滤功能,可以根据特定条件筛选数据包。

  • 数据包重组:能够重组和分析分片的数据包,以查看完整的通信内容。

  • 统计和图表:提供多种统计和图表功能,帮助用户进行流量分析和趋势预测。

Wireshark 的界面设计简洁明了,主要包括以下几个部分:

  1. 菜单栏和工具栏

    • 菜单栏:提供文件操作、编辑、查看、捕获、分析等选项,可以通过菜单访问各种功能。

    • 工具栏:常用功能的快捷按钮,包括开始和停止捕获、打开和保存捕获文件、显示过滤器等。

  2. 捕获选项和启动按钮

    • 捕获接口选择:选择要捕获数据包的网络接口,可以是以太网、Wi-Fi等。

    • 捕获选项:配置捕获参数,如数据包长度、捕获过滤器、环形缓冲区等。

    • 启动按钮:开始和停止数据包捕获。

  3. 数据包列表窗口

    • 数据包列表:显示捕获的数据包,每个数据包一行,包含时间戳、源地址、目的地址、协议、长度等基本信息。

    • 列排序和过滤:可以根据不同列进行排序和过滤,方便查找特定数据包。

  4. 数据包详情窗口

    • 数据包解码详情:选中一个数据包后,在详情窗口中显示其解码信息,按照协议层次结构显示,包括链路层、网络层、传输层和应用层的详细字段。

    • 展开和折叠:可以展开和折叠各协议层次,查看具体字段的值和含义。

  5. 数据包字节窗口

    • 字节视图:以十六进制和ASCII格式显示选中数据包的原始字节数据,帮助用户查看数据包的实际内容。

    • 字节高亮:与数据包详情窗口联动,高亮显示对应字段的字节数据。

  6. 显示过滤器输入框

    • 过滤器输入框:用于输入显示过滤器,筛选显示满足条件的数据包。

    • 过滤器提示:提供过滤器语法提示和自动完成功能,帮助用户快速输入正确的过滤器。

二、抓包过滤基础 

Wireshark 中的过滤器是其最强大和最常用的功能之一。通过使用过滤器,用户可以从庞大的数据包捕获中筛选出感兴趣的特定数据包,从而更高效地进行网络分析和故障排除。

抓包过滤是指在数据包捕获和分析过程中,使用特定的规则和条件,筛选出满足条件的数据包。Wireshark 提供了两种主要的过滤器类型:显示过滤器捕获过滤器

  • 显示过滤器:用于在捕获后筛选和显示特定的数据包。显示过滤器是在数据包已经被捕获之后应用的,它不会影响实际的数据包捕获过程。

  • 捕获过滤器:用于在捕获过程中筛选数据包。捕获过滤器是在数据包捕获之前应用的,它会直接影响捕获到的数据包数量和内容。

Wireshark 支持两种类型的过滤器:显示过滤器和捕获过滤器。它们的语法和使用方式有所不同。

三、显示过滤器

显示过滤器是 Wireshark 中用于在数据包捕获之后,根据特定条件筛选和显示数据包的工具。显示过滤器的语法相对简单,使用字段名、运算符和值来构建过滤条件。

显示过滤器的基础语法包括:

  • 字段名:指定要过滤的数据包字段,如 ip.addrtcp.port 等。

  • 运算符:用于比较字段值的运算符,如 ==!=><>=<= 等。

  • :与字段名进行比较的值,可以是数值、字符串、布尔值等。

示例:

  • 过滤特定 IP 地址的数据包

ip.addr == 192.168.100.1
  • 过滤特定端口的数据包

tcp.port == 80
  • 过滤特定协议的数据包

http

1、常用的显示过滤器

1.IP 地址过滤

  • 过滤特定源 IP 地址的数据包

ip.src == 192.168.100.10
  • 过滤特定目的 IP 地址的数据包
ip.dst == 192.168.100.20
  • 过滤特定 IP 地址的数据包(包括源IP和目的IP) 
ip.addr == 192.168.100.40

2.端口号过滤

  • 过滤特定源端口的数据包

tcp.srcport == 80

  • 过滤特定目的端口的数据包
tcp.dstport == 443
  • 过滤特定端口的数据包(包括源IP和目的IP)

tcp.port == 80

3.协议过滤

  • 过滤 HTTP 协议的数据包

http
  • 过滤 TCP 协议的数据包

tcp
  • 过滤 ICMP 协议的数据包

icmp

 4.排除特定流量

  • 排除 ICMP 协议的数据包

!icmp

2、过滤 HTTP 流量

HTTP 流量是网络分析中常见的一部分,通过显示过滤器可以筛选和分析特定的 HTTP 请求和响应。

1.过滤所有 HTTP 流量

http

 2.过滤特定主机的 HTTP 流量

http.host == "www.baidu.com"

 3.过滤特定 URI 的 HTTP 请求

http.request.uri contains "/login"

 4.过滤特定方法的 HTTP 请求

http.request.method == "POST"

 5.过滤特定状态码的 HTTP 响应

http.response.code == 200

3、过滤 DNS 流量

DNS 流量也是网络分析中常见的内容,通过显示过滤器可以筛选和分析 DNS 查询和响应。

1.过滤所有 DNS 流量

dns

 2.过滤特定域名的 DNS 查询

dns.qry.name == "baidu.com"

 3.过滤特定类型的 DNS 查询

dns.qry.type == 1  // A记录查询

 4.过滤特定响应码的 DNS 响应

dns.flags.rcode == 0  // No error

 5.过滤特定 IP 地址的 DNS 响应

dns.a == 192.168.100.1

4、过滤 TCP 流量

TCP 是传输层的主要协议之一,通过显示过滤器可以筛选和分析特定的 TCP 会话和流量。

1.过滤所有 TCP 流

tcp

 2.过滤特定源端口的 TCP 流量

tcp.srcport == 80

 3.过滤特定目的端口的 TCP 流量

tcp.dstport == 443

 4.过滤特定 TCP 标志位的流量

tcp.flags.syn == 1  // SYN 包

 5.过滤特定 TCP 会话的流量

tcp.stream eq 1

 5、过滤 UDP 流量

UDP 是传输层的另一主要协议,通过显示过滤器可以筛选和分析特定的 UDP 会话和流量。

1.过滤所有 UDP 流量

udp

 2.过滤特定源端口的 UDP 流量

udp.srcport == 53

 3.过滤特定目的端口的 UDP 流量

udp.dstport == 123

 4.过滤特定 UDP 会话的流量

udp.stream eq 1

6、过滤 ICMP 流量

ICMP 是网络层的重要协议,通过显示过滤器可以筛选和分析特定的 ICMP 报文。

1.过滤所有 ICMP 流量

icmp

 2.过滤特定类型的 ICMP 报文

icmp.type == 8  // Echo Request

 3.过滤特定代码的 ICMP 报文

icmp.code == 0

 4.过滤特定 ID 的 ICMP 报文

icmp.ident == 0x1234

 5.过滤特定序列号的 ICMP 报文

icmp.seq == 0x1

7、显示过滤器的高级用法

显示过滤器还支持更复杂的条件组合和表达式,例如:

1.多个条件的组合

  • 过滤特定源 IP 和目标端口的数据包

ip.src == 192.168.100.10 && tcp.dstport == 8080

 2.范围过滤

  • 过滤帧长度在 100 到 200 字节之间的数据包

frame.len >= 100 && frame.len <= 200

 3.使用正则表达式

  • 过滤 URI 包含 "login" 的 HTTP 请求:

http.request.uri matches ".*login.*"

 4.复杂逻辑过滤

  • 过滤源 IP 为 192.168.100.1 且目的端口为 80,或源 IP 为 192.168.100.2 且目的端口为 443 的数据包:

(ip.src == 192.168.100.1 && tcp.dstport == 80) || (ip.src == 192.168.100.2 && tcp.dstport == 443)

四、捕获过滤器

捕获过滤器在数据包捕获过程中起作用,通过预先定义的条件,仅捕获满足条件的数据包。捕获过滤器使用 Berkeley Packet Filter (BPF) 语法,能够在捕获时减少不必要的数据包,提升捕获效率。

捕获过滤器的基础语法包括:

  • 字段名:指定要过滤的数据包字段,如 hostportnet 等。

  • 运算符:用于比较字段值的运算符,如 ==!=><>=<= 等。

  • :与字段名进行比较的值,可以是数值、字符串、布尔值等。

  • 过滤特定 IP 地址的数据包

host 192.168.100.10
  • 过滤特定端口的数据包

port 80
  • 过滤特定协议的数据包

tcp

 1、常用的捕获过滤器

一些常用的捕获过滤器包括:

1.IP 地址过滤

  • 过滤特定 IP 地址的数据包

host 192.168.100.1
  • 过滤特定源 IP 地址的数据包

src host 192.168.100.1
  • 过滤特定目的 IP 地址的数据包

dst host 192.168.100.20

 2.端口号过滤

  • 过滤特定端口的数据包

port 80
  • 过滤特定源端口的数据包

src port 80
  • 过滤特定目的端口的数据包

dst port 443

 3.协议过滤

  • 过滤 TCP 协议的数据包

tcp
  • 过滤 UDP 协议的数据包

udp
  • 过滤 ICMP 协议的数据包

icmp

 4.排除特定流量

  • 排除特定 IP 地址的数据包

not host 192.168.100.1
  • 排除特定端口的数据包

not port 80

2、捕获 HTTP 流量

通过捕获过滤器筛选 HTTP 流量可以减少捕获的数据量,尤其是在只需要分析特定的 HTTP 请求和响应时。

1.捕获所有 HTTP 流量

tcp port 80

 2.捕获特定主机的 HTTP 流量

tcp port 80 and host www.baidu.com

3、捕获 DNS 流量

通过捕获过滤器筛选 DNS 流量,可以有效地捕获特定的 DNS 查询和响应。

1.捕获所有 DNS 流量

udp port 53

 2.捕获特定域名的 DNS 查询

udp port 53 and host baidu.com

4、捕获 TCP 流量

通过捕获过滤器筛选 TCP 流量,可以捕获特定会话和特定条件下的 TCP 报文。

1.捕获所有 TCP 流量

tcp

 2.捕获特定源端口的 TCP 流量

src port 80

 3.捕获特定目的端口的 TCP 流量

dst port 443

  1. 捕获特定 TCP 标志位的流量

tcp[tcpflags] & tcp-syn != 0  // SYN 包

4、捕获 UDP 流量

通过捕获过滤器筛选 UDP 流量,可以捕获特定会话和特定条件下的 UDP 报文。

1.捕获所有 UDP 流量

udp

 2.捕获特定源端口的 UDP 流量

src port 53

 3.捕获特定目的端口的 UDP 流量

dst port 123

5、捕获 ICMP 流量

通过捕获过滤器筛选 ICMP 流量,可以捕获特定类型和特定条件下的 ICMP 报文。

1.捕获所有 ICMP 流量

icmp

 2.捕获特定类型的 ICMP 报文

icmp[icmptype] == icmp-echo

 3.捕获特定代码的 ICMP 报文

icmp[icmpcode] == 0

6、捕获过滤器的高级用法

捕获过滤器支持更复杂的条件组合和表达式,例如:

1.多个条件的组合

  • 过滤源 IP 和目标端口同时满足的数据包

src host 192.168.1.1 and dst port 80

 2.范围过滤

  • 过滤特定网段的数据包

net 192.168.100.0/24

 3.复杂逻辑过滤

  • 过滤源 IP 为 192.168.100.1 且目标端口为 80,或源 IP 为 192.168.100.2 且目标端口为 443 的数据包:

(src host 192.168.100.1 and dst port 80) or (src host 192.168.100.2 and dst port 443)

 4.字段存在检查

  • 过滤存在特定字段的数据包

tcp[tcpflags] & tcp-syn != 0

 五、高级过滤技巧

Wireshark 过滤器不仅可以用于简单的条件筛选,还支持更复杂的逻辑运算和组合,从而实现更精细的过滤。

1、组合过滤条件

通过组合多个过滤条件,可以实现更复杂的筛选逻辑。

1.AND 逻辑组合

  • 过滤源 IP 为 192.168.100.1 且目的端口为 80 的数据包

ip.src == 192.168.100.1 && tcp.dstport == 80

2.OR 逻辑组合

  • 过滤源 IP 为 192.168.100.1 或目的端口为 443 的数据包

ip.src == 192.168.100.1 || tcp.dstport == 443

 3.混合逻辑组合

  • 过滤源 IP 为 192.168.100.1 且(目的端口为 80 或 443)的数据包

ip.src == 192.168.100.1 && (tcp.dstport == 80 || tcp.dstport == 443)

2、使用正则表达式

Wireshark 的显示过滤器支持正则表达式,可以用来匹配更复杂的字符串模式。

1.匹配 HTTP 请求 URI 中包含特定字符串

  • 过滤 URI 包含 "login" 的 HTTP 请求

http.request.uri matches ".*login.*"

 2.匹配 HTTP 头部中的特定字段

  • 过滤 User-Agent 包含 "Mozilla" 的 HTTP 请求

http.request.header.User-Agent matches ".*Mozilla.*"

3、字段存在检查

通过检查字段是否存在,可以筛选出包含特定字段的数据包。

1.检查 IP 选项字段是否存在

  • 过滤包含 IP 选项字段的数据包

ip.options

 2.检查 TCP 选项字段是否存在

  • 过滤包含 TCP 选项字段的数据包

tcp.options

4、使用偏移量和掩码

Wireshark 过滤器支持通过偏移量和掩码筛选特定位的数据。

1.过滤 TCP 标志位中的 SYN 包

  • 使用位运算过滤 TCP SYN 包

tcp.flags & 0x02 != 0

 2.过滤特定字节偏移量的数据包

  • 过滤 TCP 数据包中包含特定数据模式的包

tcp[13] & 0x02 != 0
  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陪我养猪吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值