文章目录
- Wireshark介绍
- Wireshark使用
- 工作模式介绍
- 1. 混杂模式(Promiscuous Mode)
- 2. 普通模式(Normal Mode)
- 3. 监视模式(Monitor Mode)
- 界面分区
- 捕获过滤器语法
- 基本语法
- 逻辑运算符
- 高级语法
- 使用示例
- 捕获过滤器-速查表
- 显示过滤器语法
- 基本语法
- 逻辑运算符
- 高级语法
- 使用示例
Wireshark介绍
Wireshark 是一款非常流行的网络协议分析工具,主要用于捕获和分析网络数据包,广泛应用于网络故障排查、安全分析、性能优化以及协议开发等领域。
Wireshark 的官方网站: https://www.wireshark.org/
Wireshark使用
工作模式介绍
Wireshark 的工作模式主要包括混杂模式和普通模式,此外在无线网络环境下还会用到监视模式。以下是详细介绍:
1. 混杂模式(Promiscuous Mode)
混杂模式是 Wireshark 的一种重要工作模式,允许网卡接收所有经过网络接口的数据包,而不仅仅是发给本机的数据包。在这种模式下,网卡不会根据 MAC 地址过滤数据包,因此可以捕获局域网内其他设备之间的通信数据包。
- 应用场景:混杂模式常用于网络分析、故障排查以及安全检测等场景,能够帮助用户全面了解网络流量情况。
- 开启方法:在 Wireshark 的菜单栏中,选择“捕获”->“选项”,在弹出的“捕获选项”对话框中,勾选“启用混杂模式”选项。
2. 普通模式(Normal Mode)
普通模式是 Wireshark 的默认工作模式。在这种模式下,网卡只会接收发给本机的数据包(包括广播包),其他设备的数据包会被丢弃。这意味着用户只能捕获与本机相关的网络通信数据,无法捕获局域网内其他设备之间的通信数据。
3. 监视模式(Monitor Mode)
监视模式仅用于无线网络环境。在这种模式下,无线网卡可以捕获无线网络中的所有数据包,而无需与特定的接入点关联。这使得用户可以分析无线网络中的通信情况,检测无线网络的安全性和性能问题。
- 应用场景:监视模式主要用于无线网络的分析和安全检测,例如检测无线网络中的未授权接入点或无线信号干扰。
- 开启方法:监视模式的开启方式与混杂模式类似,但具体操作可能会因无线网卡的驱动程序和操作系统而有所不同。
界面分区
Wireshark 是一款功能强大的网络协议分析工具,它可以帮助用户捕获、分析和显示网络数据包。根据您提供的截图和描述,以下是 Wireshark 界面的主要组成部分及其功能的介绍:
- 菜单栏:
- 位于窗口顶部,包含文件、编辑、捕获、显示、统计、分析、工具和帮助等菜单选项。这些菜单提供了各种操作和设置功能,如保存捕获的数据包、设置捕获选项、应用显示过滤器等。
- 抓包列表:
- 显示捕获到的数据包的列表,包括时间戳、源地址、目的地址、协议、长度和信息等字段。用户可以通过这个列表查看和选择特定的数据包进行分析。
- 协议树:
- 在选择某个数据包后,显示该数据包的协议层次结构。用户可以展开各个协议层查看详细信息,如 TCP、IP、以太网等协议的字段和值。
- 字节视图:
- 显示选中数据包的原始字节数据,通常以十六进制和ASCII格式显示。这允许用户查看数据包的原始内容,包括协议头和数据负载。
- 过滤器栏:
- 位于抓包列表上方,用户可以在这里输入显示过滤器表达式,以筛选和显示特定的数据包。例如,输入
tcp.port == 80
可以显示所有使用 TCP 端口 80 的数据包。
- 位于抓包列表上方,用户可以在这里输入显示过滤器表达式,以筛选和显示特定的数据包。例如,输入
- 状态栏:
- 位于窗口底部,显示当前捕获的状态,如捕获的总数据包数、已丢弃的数据包数等。
- 详细视图:
- 在协议树下方,提供所选数据包的详细信息,如字段值、注释等。用户可以在这里查看数据包的详细内容和分析结果。
捕获过滤器语法
Wireshark 的捕获过滤器(Capture Filter)用于在捕获数据包时对数据包进行筛选,只捕获符合特定条件的数据包。这有助于减少捕获的数据量,提高分析效率。以下是一些常用的捕获过滤器语法:
基本语法
-
协议过滤:指定要捕获的协议类型。
复制
tcp # 只捕获 TCP 协议的数据包 udp # 只捕获 UDP 协议的数据包 icmp # 只捕获 ICMP 协议的数据包 http # 只捕获 HTTP 协议的数据包
-
IP 地址过滤:指定源或目的 IP 地址。
复制
ip.addr == 192.168.1.1 # 捕获源或目的 IP 为 192.168.1.1 的数据包 ip.src == 192.168.1.1 # 捕获源 IP 为 192.168.1.1 的数据包 ip.dst == 192.168.1.1 # 捕获目的 IP 为 192.168.1.1 的数据包
-
端口过滤:指定源或目的端口。
复制
tcp.port == 80 # 捕获 TCP 协议的 80 端口的数据包 udp.port == 53 # 捕获 UDP 协议的 53 端口的数据包 tcp.srcport == 8080 # 捕获 TCP 协议的源端口为 8080 的数据包 tcp.dstport == 8080 # 捕获 TCP 协议的目的端口为 8080 的数据包
逻辑运算符
-
与(AND):同时满足多个条件。
tcp && ip.src == 192.168.1.1 && ip.dst == 192.168.1.2
-
或(OR):满足任一条件。
tcp || udp
-
非(NOT):不满足某个条件。
!icmp
高级语法
-
IP 地址范围:指定 IP 地址范围。
ip.addr == 192.168.1.1-192.168.1.10 # 捕获 IP 地址在 192.168.1.1 到 192.168.1.10 之间的数据包
-
端口范围:指定端口范围。
tcp.port >= 80 && tcp.port <= 90 # 捕获 TCP 协议的 80 到 90 端口之间的数据包
-
协议和端口组合:组合协议和端口条件。
tcp.port == 80 || udp.port == 53 # 捕获 TCP 协议的 80 端口或 UDP 协议的 53 端口的数据包
-
MAC 地址过滤:指定源或目的 MAC 地址。
复制
ethernet.src == 00:11:22:33:44:55 # 捕获源 MAC 地址为 00:11:22:33:44:55 的数据包 ethernet.dst == 00:11:22:33:44:55 # 捕获目的 MAC 地址为 00:11:22:33:44:55 的数据包
使用示例
-
捕获所有 ICMP 数据包:
icmp
-
捕获源 IP 为 192.168.1.1 且目的端口为 80 的 TCP 数据包:
tcp && ip.src == 192.168.1.1 && tcp.dstport == 80
-
捕获源 MAC 为 00:11:22:33:44:55 且目的 IP 为 192.168.1.1 的数据包:
ethernet.src == 00:11:22:33:44:55 && ip.dst == 192.168.1.1
-
捕获除了 ICMP 之外的所有数据包:
!icmp
官方说明文档:https://biot.com/capstats/bpf.html
以下是从您提供的图片中提取的内容:
捕获过滤器-速查表
过滤条件 | 示例 | 说明 |
---|---|---|
源 IP 地址 | src host 192.168.1.1 | 捕获源 IP 为 192.168.1.1 的数据包 |
目的 IP 地址 | dst host 192.168.1.2 | 捕获目的 IP 为 192.168.1.2 的数据包 |
任意 IP 地址 | host 192.168.1.3 | 捕获源或目的 IP 为 192.168.1.3 的数据包 |
源端口 | src port 80 | 捕获源端口为 80 的数据包 |
目的端口 | dst port 443 | 捕获目的端口为 443 的数据包 |
任意端口 | port 53 | 捕获源或目的端口为 53 的数据包 |
TCP 协议 | tcp | 捕获所有 TCP 数据包 |
UDP 协议 | udp | 捕获所有 UDP 数据包 |
ICMP 协议 | icmp | 捕获所有 ICMP 数据包 |
特定协议 | ip proto 1 | 捕获所有协议类型为 1 的数据包(例如 ICMP) |
特定数据包长度 | len <= 100 | 捕获长度小于等于 100 字节的数据包 |
特定数据包内容 | tcp[13] & 8 != 0 | 捕获 TCP 数据包中具有 PSH 标志的数据包 |
特定数据包标志 | tcp[tcpflags] == 0x02 | 捕获 TCP SYN 数据包 |
特定网络接口 | ether host 00:11:22:33:44:55 | 捕获 MAC 地址为 00:11:22:33:44:55 的数据包 |
特定 VLAN | vlan and (src host 192.168.1.1) | 捕获 VLAN 中源 IP 为 192.168.1.1 的数据包 |
特定 IP 范围 | net 192.168.1.0/24 | 捕获源或目的 IP 在 192.168.1.0 到 192.168.1.255 范围内的数据包 |
特定子网 | src net 10.0.0.0/8 | 捕获源 IP 在 10.0.0.0 到 10.255.255.255 范围内的数据包 |
显示过滤器语法
显示过滤器(Display Filter)是Wireshark中用于筛选和显示捕获数据包的语法规则。与捕获过滤器不同,显示过滤器仅影响用户界面中显示的数据包,而不会影响实际捕获的数据包。以下是一些常用的显示过滤器语法:
基本语法
-
协议过滤:指定要显示的协议类型。
复制
tcp # 显示所有 TCP 协议的数据包 udp # 显示所有 UDP 协议的数据包 icmp # 显示所有 ICMP 协议的数据包 http # 显示所有 HTTP 协议的数据包
-
IP 地址过滤:指定源或目的 IP 地址。
复制
ip.addr == 192.168.1.1 # 显示源或目的 IP 为 192.168.1.1 的数据包 ip.src == 192.168.1.1 # 显示源 IP 为 192.168.1.1 的数据包 ip.dst == 192.168.1.1 # 显示目的 IP 为 192.168.1.1 的数据包
-
端口过滤:指定源或目的端口。
复制
tcp.port == 80 # 显示 TCP 协议的 80 端口的数据包 udp.port == 53 # 显示 UDP 协议的 53 端口的数据包 tcp.srcport == 8080 # 显示 TCP 协议的源端口为 8080 的数据包 tcp.dstport == 8080 # 显示 TCP 协议的目的端口为 8080 的数据包
逻辑运算符
-
与(AND):同时满足多个条件。
tcp && ip.src == 192.168.1.1 && ip.dst == 192.168.1.2
-
或(OR):满足任一条件。
tcp || udp
-
非(NOT):不满足某个条件。
!icmp
高级语法
-
IP 地址范围:指定 IP 地址范围。
ip.addr == 192.168.1.1-192.168.1.10 # 显示 IP 地址在 192.168.1.1 到 192.168.1.10 之间的数据包
-
端口范围:指定端口范围。
tcp.port >= 80 && tcp.port <= 90 # 显示 TCP 协议的 80 到 90 端口之间的数据包
-
协议和端口组合:组合协议和端口条件。
tcp.port == 80 || udp.port == 53 # 显示 TCP 协议的 80 端口或 UDP 协议的 53 端口的数据包
-
MAC 地址过滤:指定源或目的 MAC 地址。
复制
ethernet.src == 00:11:22:33:44:55 # 显示源 MAC 地址为 00:11:22:33:44:55 的数据包 ethernet.dst == 00:11:22:33:44:55 # 显示目的 MAC 地址为 00:11:22:33:44:55 的数据包
使用示例
-
显示所有 ICMP 数据包:
icmp
-
显示源 IP 为 192.168.1.1 且目的端口为 80 的 TCP 数据包:
tcp && ip.src == 192.168.1.1 && tcp.dstport == 80
-
显示源 MAC 为 00:11:22:33:44:55 且目的 IP 为 192.168.1.1 的数据包:
ethernet.src == 00:11:22:33:44:55 && ip.dst == 192.168.1.1
-
显示除了 ICMP 之外的所有数据包:
!icmp
-
显示特定协议类型为 1 的数据包(例如 ICMP):
ip.proto == 1
-
显示长度小于等于 100 字节的数据包:
frame.len <= 100
-
显示 TCP 数据包中具有 PSH 标志的数据包:
tcp.flags.psh == 1
-
显示 TCP SYN 数据包:
tcp.flags.syn == 1
-
显示 VLAN 中源 IP 为 192.168.1.1 的数据包:
vlan && ip.src == 192.168.1.1
-
显示源或目的 IP 在 192.168.1.0 到 192.168.1.255 范围内的数据包:
ip.addr == 192.168.1.0/24
-
显示源 IP 在 10.0.0.0 到 10.255.255.255 范围内的数据包:
ip.src == 10.0.0.0/8