Wireshark 是一个强大的网络分析工具,支持使用过滤器来筛选数据包,帮助用户高效地分析和排查网络问题。Wireshark 的过滤命令可以分为多种类型,以下是按功能分类的常见过滤命令,并以表格的形式展示:
Wireshark 是一个强大的网络分析工具,支持使用过滤器来筛选数据包,帮助用户高效地分析和排查网络问题。Wireshark 的过滤命令可以分为多种类型,以下是按功能分类的常见过滤命令,并以表格的形式展示:
Wireshark 过滤命令按功能分类
| 类别 | 过滤命令 | 描述 |
|---|---|---|
| 协议过滤 | http |
过滤 HTTP 协议的数据包 |
tcp |
过滤 TCP 协议的数据包 | |
udp |
过滤 UDP 协议的数据包 | |
ip |
过滤 IPv4 协议的数据包 | |
ipv6 |
过滤 IPv6 协议的数据包 | |
dns |
过滤 DNS 协议的数据包 | |
icmp |
过滤 ICMP 协议的数据包 | |
arp |
过滤 ARP 协议的数据包 | |
| 地址过滤 | ip.addr == 192.168.1.1 |
过滤源或目的地址为指定 IP 的数据包 |
eth.addr == 00:11:22:33:44:55 |
过滤源或目的 MAC 地址为指定地址的数据包 | |
ip.src == 192.168.1.1 |
过滤源 IP 地址为指定地址的数据包 | |
ip.dst == 192.168.1.1 |
过滤目的 IP 地址为指定地址的数据包 | |
eth.src == 00:11:22:33:44:55 |
过滤源 MAC 地址为指定地址的数据包 | |
eth.dst == 00:11:22:33:44:55 |
过滤目的 MAC 地址为指定地址的数据包 | |
| 端口过滤 | tcp.port == 80 |
过滤 TCP 端口为 80 的数据包(如 HTTP) |
udp.port == 53 |
过滤 UDP 端口为 53 的数据包(如 DNS) | |
tcp.dstport == 443 |
过滤目的端口为 443 的 TCP 数据包(如 HTTPS) | |
tcp.srcport == 12345 |
过滤源端口为 12345 的 TCP 数据包 | |
| 数据包内容过滤 | http contains "GET" |
过滤包含特定内容(如 GET 请求)的 HTTP 数据包 |
tcp.payload contains "username" |
过滤 TCP 数据包中包含 "username" 字符串的内容 | |
data.len > 1000 |
过滤数据包大小超过 1000 字节的数据包 | |
frame contains "password" |
过滤数据包中包含 "password" 字符串的数据包 | |
| 时序过滤 | frame.time >= "2025-01-01 00:00:00" |
过滤在特定时间之后捕获的数据包 |
frame.time <= "2025-01-01 12:00:00" |
过滤在特定时间之前捕获的数据包 | |
| 协议状态过滤 | tcp.flags.syn == 1 && tcp.flags.ack == 0 |
过滤 TCP 三次握手的 SYN 数据包 |
tcp.flags.fin == 1 |
过滤 TCP 连接终止时的 FIN 数据包 | |
tcp.analysis.retransmission |
过滤 TCP 重传的数据包 | |
| 错误过滤 | icmp.type == 3 |
过滤 ICMP 类型为目的不可达的报文 |
tcp.analysis.flags |
过滤具有 TCP 分析标志(如重传)的数据包 | |
| 长度过滤 | frame.len == 64 |
过滤数据包长度为 64 字节的数据包 |
ip.len >= 1500 |
过滤 IP 数据包长度大于等于 1500 字节的数据包 | |
| 自定义过滤 | not ip.addr == 192.168.1.1 |
过滤所有 IP 地址不为 192.168.1.1 的数据包 |
tcp.stream eq 1 |
过滤特定 TCP 流的数据包 | |
http.request.method == "POST" |
过滤 HTTP 请求方法为 POST 的数据包 | |
http.response.code == 200 |
过滤 HTTP 响应状态码为 200 的数据包 |
说明:
- 协议过滤:可以直接过滤出某个协议的所有数据包,便于集中分析某一类网络通信。
- 地址过滤:通过源地址或目的地址过滤数据包,帮助定位某个设备或主机的网络活动。
- 端口过滤:根据端口号过滤流量,适用于分析特定服务(如 HTTP、HTTPS、DNS)相关的通信。
- 数据包内容过滤:可以过滤包含特定数据内容的数据包,这对于协议分析非常重要。
- 时序过滤:基于时间戳进行过滤,适用于分析在特定时间段内发生的网络事件。
- 协议状态过滤:通过过滤特定的协议标志或状态,帮助分析连接的不同阶段或故障。
- 错误过滤:适用于查找网络问题或异常,比如分析丢包、重传等情况。
- 长度过滤:按数据包长度筛选流量,适用于分析异常大小的数据包。
- 自定义过滤:支持更复杂的逻辑操作,如排除特定 IP 或端口等。
Wireshark 过滤器非常强大,熟练掌握这些过滤命令能大大提高网络问题排查和数据包分析的效率。
Wireshark 高级过滤命令 的表格化展示,涵盖了多种高级过滤条件,帮助你更加精确地分析和诊断网络流量。
| 类别 | 过滤命令 | 描述 |
|---|---|---|
| 逻辑操作符 | and |
逻辑与运算符,用于组合多个过滤条件 |
or |
逻辑或运算符,用于组合多个过滤条件 | |
not |
逻辑非运算符,取反一个过滤条件 | |
== |
等于运算符,检查字段是否与给定值相等 | |
!= |
不等于运算符,检查字段是否与给定值不相等 | |
> |
大于运算符,检查字段值是否大于指定值 | |
< |
小于运算符,检查字段值是否小于指定值 | |
>= |
大于等于运算符,检查字段值是否大于或等于指定值 | |
<= |
小于等于运算符,检查字段值是否小于或等于指定值 | |
| 协议过滤 | http |
过滤 HTTP 协议的数据包 |
tcp |
过滤 TCP 协议的数据包 | |
udp |
过滤 UDP 协议的数据包 | |
icmp |
过滤 ICMP 协议的数据包 | |
dns |
过滤 DNS 协议的数据包 | |
ftp |
过滤 FTP 协议的数据包 | |
ssl |
过滤 SSL/TLS 协议的数据包(通常用于加密通信) | |
http.request.uri contains "login" |
过滤 HTTP 请求中 URI 包含 "login" 的数据包 | |
| 时间过滤 | frame.time >= "2025-01-01 00:00:00" |
过滤捕获时间大于等于指定时间的数据包 |
frame.time <= "2025-01-01 23:59:59" |
过滤捕获时间小于等于指定时间的数据包 | |
frame.time > "2025-01-01 00:00:00" and frame.time < "2025-01-01 12:00:00" |
过滤时间范围内的数据包 | |
| 字段值过滤 | ip.addr == 192.168.1.1 |
过滤源或目的地址为 192.168.1.1 的数据包 |
tcp.srcport == 443 |
过滤源端口为 443 的 TCP 数据包 | |
tcp.dstport == 80 |
过滤目的端口为 80 的 TCP 数据包 | |
ip.src == 192.168.1.1 |
过滤源 IP 地址为 192.168.1.1 的数据包 |
|
ip.dst == 192.168.1.1 |
过滤目的 IP 地址为 192.168.1.1 的数据包 |
|
eth.addr == 00:11:22:33:44:55 |
过滤源或目的 MAC 地址为 00:11:22:33:44:55 的数据包 |
|
| 高级协议过滤 | tcp.flags.syn == 1 and tcp.flags.ack == 0 |
过滤 TCP 三次握手中的 SYN 数据包(TCP 连接请求) |
tcp.flags.fin == 1 |
过滤 TCP 连接终止时的 FIN 数据包 | |
tcp.analysis.retransmission |
过滤 TCP 重传的数据包 | |
tcp.analysis.out_of_order |
过滤 TCP 顺序错误的数据包 | |
icmp.type == 3 |
过滤 ICMP 类型为目的不可达的报文 | |
http.response.code == 200 |
过滤 HTTP 响应代码为 200 的数据包(成功响应) | |
| TCP 流量过滤 | tcp.stream == 1 |
过滤指定 TCP 流的数据包 |
tcp.stream eq 1 |
等效于 tcp.stream == 1,过滤指定 TCP 流的数据包 |
|
tcp.seq == 12345 |
过滤 TCP 序列号为指定值的数据包 | |
tcp.ack == 12345 |
过滤 TCP 确认号为指定值的数据包 | |
| 数据包内容过滤 | http contains "login" |
过滤 HTTP 数据包中包含 "login" 字符串的内容 |
tcp.payload contains "password" |
过滤 TCP 数据包中包含 "password" 字符串的内容 | |
data.len > 1000 |
过滤数据长度大于 1000 字节的数据包 | |
frame contains "error" |
过滤数据包中包含 "error" 字符串的内容 | |
| 网络错误过滤 | tcp.analysis.flags |
过滤具有 TCP 分析标志的数据包(如重传、缺失数据包等) |
icmp.type == 11 |
过滤 ICMP 类型为超时的报文(TTL 超时) | |
icmp.type == 3 and icmp.code == 1 |
过滤 ICMP 类型为目的不可达,代码为网络不可达的报文 | |
| 网络流量统计 | frame.len > 1500 |
过滤大于 1500 字节的数据包(可能是以太网帧过大或分片) |
ip.len > 1500 |
过滤 IP 数据包长度超过 1500 字节的流量 | |
| 多协议过滤 | http and ip.src == 192.168.1.1 |
过滤 HTTP 协议且源 IP 为 192.168.1.1 的数据包 |
tcp and udp |
过滤所有 TCP 和 UDP 协议的数据包 | |
| 组合字段过滤 | tcp.seq > 1000 and tcp.ack == 2000 |
过滤序列号大于 1000 且确认号为 2000 的 TCP 数据包 |
ip.addr == 192.168.1.1 and tcp.port == 443 |
过滤 IP 地址为 192.168.1.1 且端口为 443(HTTPS) 的数据包 |
|
| 自定义过滤 | not ip.addr == 192.168.1.1 |
过滤 IP 地址不为 192.168.1.1 的数据包 |
http.request.method == "POST" |
过滤 HTTP 请求方法为 POST 的数据包 | |
http.response.code != 404 |
过滤 HTTP 响应状态码不是 404 的数据包 |
说明:
- 逻辑操作符:通过
and,or,not等运算符组合多个条件,以实现复杂的过滤逻辑。 - 协议过滤:可以过滤出特定协议的流量,例如 HTTP、TCP、UDP 等。
- 字段值过滤:基于特定字段的值进行过滤,比如 IP 地址、端口号、TCP 序列号等。
- 高级协议过滤:通过 TCP 和 ICMP 等协议的标志位来筛选特定的状态或事件(如 SYN, FIN, 重传等)。
- TCP 流量过滤:基于 TCP 流的特性进行过滤,例如过滤特定的 TCP 流或序列号。
- 数据包内容过滤:可以基于数据包中的具体内容进行过滤,适用于字符串匹配。
- 网络错误过滤:用于查找异常或错误的网络流量,例如 ICMP 错误或 TCP 分析标志。
- 网络流量统计:通过数据包的大小等属性进行流量统计分析。
- 多协议过滤:结合多种协议进行过滤,帮助分析混合协议流量。
- 组合字段过滤:通过组合多个字段来实现更精细的筛选条件。
这些高级过滤命令提供了非常强大的功能,能够帮助你在 Wireshark 中快速定位和分析复杂的网络流量。
Wireshark 的数据结构可以从多个层次和类别进行分类。下表提供了 Wireshark 中常见数据结构的分类,涵盖了从网络层到应用层的各个层级,及其相应的字段和描述。
| 层级 | 数据结构名称 | 描述 | 相关字段/协议 |
|---|---|---|---|
| 链路层 | Ethernet (以太网) | 以太网帧结构,包含目的 MAC 地址、源 MAC 地址、EtherType 等。 | eth.addr, eth.type, eth.src, eth.dst |
| 802.11 (Wi-Fi) | Wi-Fi 帧结构,适用于无线网络的帧,包含更多的控制和管理信息。 | wlan.fc.type, wlan.addr, wlan.ssid |
|
| PPP (点对点协议) | 点对点链路协议,用于串行通信,主要用于 ISP 连接等场景。 | ppp.protocol |
|
| 网络层 | IP (Internet Protocol) | IP 数据包结构,主要包括 IPv4 和 IPv6,负责网络层的数据转发。 | ip.src, ip.dst, ip.version, ip.ttl, ipv6.src, ipv6.dst |
| ARP (地址解析协议) | 用于将 IP 地址解析为 MAC 地址的协议。 | arp.src.protoaddr, arp.dst.protoaddr, arp.opcode |
|
| ICMP (Internet Control Message Protocol) | 用于网络诊断和错误报告的协议,包含回显请求/应答等。 | icmp.type, icmp.code, icmp.id, icmp.seq |
|
| 传输层 | TCP (Transmission Control Protocol) | 面向连接的协议,提供可靠的、顺序的字节流传输。 | tcp.srcport, tcp.dstport, tcp.seq, tcp.ack, tcp.flags |
| UDP (User Datagram Protocol) | 无连接的协议,不保证数据传输的可靠性,常用于实时应用。 | udp.srcport, udp.dstport, udp.length |
|
| 会话层 | SSL/TLS (Secure Sockets Layer / Transport Layer Security) | 用于加密通信的协议,常用于 HTTPS 等应用。 | ssl.record.version, ssl.handshake.type, ssl.certificates |
| 应用层 | HTTP (Hypertext Transfer Protocol) | 用于网页浏览的协议,支持请求/响应模型。 | http.request.method, http.response.code, http.host, http.uri |
| DNS (Domain Name System) | 用于域名解析的协议,将域名转换为 IP 地址。 | dns.qry.name, dns.qry.type, dns.a, dns.ptr |
|
| FTP (File Transfer Protocol) | 用于文件传输的协议,支持客户端与服务器之间的文件操作。 | ftp.request.command, ftp.response.code, ftp.data |
|
| SMTP (Simple Mail Transfer Protocol) | 用于电子邮件发送的协议,通常用于客户端与邮件服务器之间的通信。 | smtp.sender, smtp.recipient, smtp.command |
|
| DHCP (Dynamic Host Configuration Protocol) | 用于自动分配 IP 地址的协议。 | dhcp.msg.type, dhcp.option.hostname, dhcp.option.dnserver |
|
| POP3 (Post Office Protocol 3) | 用于从邮件服务器接收电子邮件的协议。 | pop3.command, pop3.response.code |
|
| 其他协议 | SNMP (Simple Network Management Protocol) | 网络管理协议,用于监控和管理网络设备。 | snmp.version, snmp.community, snmp.pdu.type |
| LDAP (Lightweight Directory Access Protocol) | 目录服务协议,用于访问和管理网络中的目录信息。 | ldap.opcode, ldap.result.code, ldap.search.filter |
|
| 多层协议 | VLAN (Virtual LAN) | 用于网络分段的协议,通常嵌套在以太网帧中。 | vlan.id, vlan.priority |
| 错误分析 | TCP重传、乱序、丢包等 | 用于 TCP 流量分析,标识重传、乱序、丢包等异常情况。 | tcp.analysis.retransmission, tcp.analysis.out_of_order |
| 层次分析 | 解码器结构 (Dissector) | Wireshark 中的协议解码器,负责解析特定协议的数据结构。 | dissector |
说明:
- 链路层 (Link Layer):这一层处理的是数据帧的传输,包括 MAC 地址、帧类型等信息。Wireshark 处理的协议有 Ethernet、Wi-Fi 等。
- 网络层 (Network Layer):负责数据包的路由和转发,Wireshark 处理的协议有 IPv4、IPv6、ARP 等。
- 传输层 (Transport Layer):负责端到端的数据传输,包括流量控制、错误检查等,Wireshark 处理的协议有 TCP、UDP、ICMP 等。
- 会话层 (Session Layer):主要负责建立、管理、终止会话,这一层的协议包括 SSL/TLS 等加密协议。
- 应用层 (Application Layer):这一层的协议处理数据的具体内容,包括 HTTP、DNS、FTP 等。
- 多层协议 (Multi-layer Protocols):一些协议涉及多层的信息交互,例如 VLAN,它既有链路层也有网络层的内容。
- 错误分析 (Error Analysis):Wireshark 可以分析 TCP 流量中的异常情况,比如重传、丢包、乱序等。
这些数据结构帮助 Wireshark 精确解析网络流量,并将其分层显示,使用户能够高效地进行协议分析和故障排除。
一个 Wireshark 数据包分类的表格,涵盖了不同层次的协议和相关的字段。此表格帮助理解 Wireshark 如何按协议层级分类并解析数据包。
| 层级 | 协议名称 | 描述 | 相关字段/协议 |
|---|---|---|---|
| 链路层 (Data Link Layer) | Ethernet (以太网) | 以太网数据帧,包含目的源 MAC 地址、EtherType 等。 | eth.addr, eth.type, eth.src, eth.dst |
| 802.11 (Wi-Fi) | 无线局域网帧结构,包含更多控制和管理信息。 | wlan.fc.type, wlan.addr, wlan.ssid |
|
| PPP (点对点协议) | 点对点连接的协议,常用于串行连接。 | ppp.protocol |
|
| 网络层 (Network Layer) | IPv4 (Internet Protocol v4) | IPv4数据包,提供地址和路由功能。 | ip.src, ip.dst, ip.version, ip.ttl |
| IPv6 (Internet Protocol v6) | IPv6数据包,IPv4的继任者,具有更大的地址空间。 | ipv6.src, ipv6.dst, ipv6.version |
|
| ARP (地址解析协议) | 用于将IP地址映射为MAC地址的协议。 | arp.src.protoaddr, arp.dst.protoaddr, arp.opcode |
|
| ICMP (Internet Control Message Protocol) | 用于网络诊断、错误报告的协议。 | icmp.type, icmp.code, icmp.id, icmp.seq |
|
| 传输层 (Transport Layer) | TCP (Transmission Control Protocol) | 面向连接的协议,提供可靠的传输服务。 | tcp.srcport, tcp.dstport, tcp.seq, tcp.ack |
| UDP (User Datagram Protocol) | 无连接、不可靠的协议,用于快速传输数据。 | udp.srcport, udp.dstport, udp.length |
|
| 会话层 (Session Layer) | SSL/TLS (Secure Sockets Layer / Transport Layer Security) | 提供安全通信的协议,常用于HTTPS。 | ssl.record.version, ssl.handshake.type, ssl.certificates |
| 应用层 (Application Layer) | HTTP (Hypertext Transfer Protocol) | 用于Web浏览的协议,支持请求/响应模型。 | http.request.method, http.response.code, http.host |
| DNS (Domain Name System) | 将域名解析为IP地址的协议。 | dns.qry.name, dns.qry.type, dns.a, dns.ptr |
|
| FTP (File Transfer Protocol) | 用于文件传输的协议,支持文件的上传和下载。 | ftp.request.command, ftp.response.code, ftp.data |
|
| SMTP (Simple Mail Transfer Protocol) | 电子邮件发送协议。 | smtp.sender, smtp.recipient, smtp.command |
|
| POP3 (Post Office Protocol 3) | 用于从邮件服务器接收邮件的协议。 | pop3.command, pop3.response.code |
|
| DHCP (Dynamic Host Configuration Protocol) | 用于自动分配IP地址的协议。 | dhcp.msg.type, dhcp.option.hostname, dhcp.option.dnserver |
|
| 多层协议 (Multi-Layer Protocols) | VLAN (Virtual LAN) | 用于网络虚拟化,标识虚拟局域网的协议。 | vlan.id, vlan.priority |
| 错误分析 (Error Analysis) | TCP重传、乱序、丢包分析 | Wireshark 用于分析 TCP 流量中的异常情况,如重传、乱序等。 | tcp.analysis.retransmission, tcp.analysis.out_of_order |
| 其他协议 (Miscellaneous Protocols) | SNMP (Simple Network Management Protocol) | 用于网络设备管理的协议。 | snmp.version, snmp.community, snmp.pdu.type |
| LDAP (Lightweight Directory Access Protocol) | 目录服务协议,用于访问和管理目录信息。 | ldap.opcode, ldap.result.code, ldap.search.filter |
说明:
- 链路层 (Data Link Layer):处理物理连接和数据帧传输,涉及Ethernet、Wi-Fi、PPP等协议。
- 网络层 (Network Layer):涉及IP协议(IPv4、IPv6)以及地址解析协议(ARP)等,主要负责数据包的路由和传输。
- 传输层 (Transport Layer):包含TCP、UDP等协议,负责在端到端之间传输数据,确保数据传输的可靠性或速度。
- 会话层 (Session Layer):主要处理加密和会话管理,如SSL/TLS协议。
- 应用层 (Application Layer):处理网络应用中的协议,HTTP、DNS、FTP、SMTP等应用协议位于此层。
- 多层协议 (Multi-Layer Protocols):一些协议跨越多个层,如VLAN协议涉及链路层和网络层。
- 错误分析 (Error Analysis):Wireshark 可分析 TCP 流中的异常,如重传、丢包、乱序等问题。
- 其他协议 (Miscellaneous Protocols):其他网络协议,如SNMP、LDAP等,通常用于管理和监控。
Wireshark 根据这些协议分类和解析数据包,帮助用户进行网络流量分析、故障排查和安全审计。
Wireshark 解密 HTTPS 数据包的过程涉及多个步骤和协议层的解码。Wireshark 主要通过 SSL/TLS 协议进行 HTTPS 数据包的解密。下面的表格展示了在 Wireshark 中进行 HTTPS 解密时常见的分类和相关协议,以及它们如何影响数据包的解码过程。
| 层级 | 协议名称 | 描述 | 相关字段/协议 |
|---|---|---|---|
| 链路层 (Data Link Layer) | Ethernet / Wi-Fi / PPP | 包含传输数据的物理网络层信息,Wireshark 根据链路层协议获取数据。 | eth.addr, wlan.addr, ppp.protocol |
| 网络层 (Network Layer) | IPv4 / IPv6 | 网络层协议,用于传输数据包,Wireshark 会识别 IP 地址、TTL 等字段。 | ip.src, ip.dst, ipv6.src, ipv6.dst, ip.ttl |
| 传输层 (Transport Layer) | TCP (Transmission Control Protocol) | 传输层协议,确保数据可靠传输。Wireshark 解析 TCP 连接、端口等信息。 | tcp.srcport, tcp.dstport, tcp.seq, tcp.ack |
| 会话层 (Session Layer) | TLS (Transport Layer Security) / SSL (Secure Sockets Layer) | 提供加密的安全传输,Wireshark 用于解密 SSL/TLS 数据包。 | ssl.record.version, ssl.handshake.type, ssl.certificates |
| 应用层 (Application Layer) | HTTP (Hypertext Transfer Protocol) | 解密后的应用层协议,Wireshark 可以查看解密后的 HTTP 请求和响应。 | http.request.method, http.response.code, http.host |
| 解密相关协议 (Decryption Related Protocols) | TLS 解密密钥 / SSL 解密密钥 | 提供用于解密加密数据流的密钥,Wireshark 使用这些密钥进行解密。 | ssl.keylog(在浏览器中设置) |
| 解密设置 (Decryption Settings) | SSL/TLS 密钥文件 / 私钥 | 用于对 SSL/TLS 流量进行解密的密钥文件,Wireshark 使用私钥解密流量。 | ssl.keys (在 Wireshark 配置中设置) |
| TLS 握手 (TLS Handshake) | ClientHello / ServerHello | TLS 握手消息中的加密协商信息,Wireshark 解析以识别加密算法、密钥交换等。 | tls.handshake.ciphersuite, tls.handshake.extensions |
| 会话层 (Session Layer) | 证书交换 (Certificate Exchange) | 在 TLS 握手阶段,Wireshark 可以解析和展示服务器和客户端的证书。 | tls.handshake.certificate |
| TLS 流量分析 (TLS Traffic Analysis) | 应用数据 (Application Data) | 解密后的数据,Wireshark 可以显示经过加密的 HTTPS 数据。 | tls.record.application_data |
解密 HTTPS 数据包的关键步骤:
-
捕获数据包:使用 Wireshark 捕获到含有 HTTPS 流量的原始数据包,确保捕获的流量没有被过滤或丢失。
-
TLS 握手分析:在解密过程中,Wireshark 需要 TLS 握手过程中的
ClientHello和ServerHello消息来识别使用的加密算法、密钥交换方式等。 -
解密密钥:
- 私钥解密:如果使用传统的 RSA 密钥交换方式,并且你能获取到服务器的私钥,可以在 Wireshark 中通过加载该私钥来解密流量。
- 会话密钥解密:对于现代的加密套件(如 Diffie-Hellman 和 ECDHE),Wireshark 无法直接通过私钥解密流量,但可以通过启用 SSL/TLS 密钥日志(在浏览器中设置
SSLKEYLOGFILE环境变量)来获得会话密钥,Wireshark 可以用这些密钥来解密流量。
-
解密 HTTPS 流量:一旦正确配置了解密密钥或密钥日志,Wireshark 会自动将加密的 HTTPS 流量解密为明文 HTTP 数据,并呈现出来。
-
分析应用层数据:解密后的 HTTPS 流量将变为可读的 HTTP 请求/响应数据,Wireshark 允许你查看 HTTP 方法、头部、正文等内容。
解密设置说明:
-
SSL/TLS 密钥文件:你需要获得 HTTPS 服务器使用的私钥,或浏览器生成的密钥日志。这个私钥可以用来解密在建立连接期间发生的 TLS 加密流量。
-
浏览器 SSL 密钥日志:现代浏览器(如 Firefox 和 Chrome)支持生成密钥日志文件,它记录了每个 TLS 会话的密钥,Wireshark 可以使用这些密钥来解密通过 TLS 加密的 HTTPS 流量。这是解密现代 HTTPS 流量的主要方法。
常见场景:
- 浏览器解密:可以在浏览器中设置
SSLKEYLOGFILE环境变量,指定日志文件路径。Wireshark 可以使用该日志文件来解密与浏览器相关的 HTTPS 流量。 - 服务器私钥解密:如果你能获取到 HTTPS 服务器的私钥,并且该服务器使用 RSA 加密进行密钥交换,Wireshark 可以通过私钥直接解密 TLS 流量。
通过这些方法,Wireshark 能够解析和解密 HTTPS 流量,帮助进行详细的网络分析与排查。
Wireshark 提供的 External Capture Tools (extcap) 插件,可以帮助用户从不同的来源捕获数据包或与外部工具进行集成。下面是将这些插件按功能分类后整理成的表格:
| 插件名称 | 功能分类 | 描述 | 使用场景 |
|---|---|---|---|
| Androiddump | Android 设备数据捕获 | 用于捕获 Android 设备上的网络流量。可以通过 USB 或 ADB 接口从 Android 设备捕获数据包。 | 适用于在 Android 设备上进行网络分析,支持 ADB 方式捕获流量。 |
| Etwdump | Ethernet Traffic Dump | 从带有 etw (Event Tracing for Windows) 支持的 Windows 设备上捕获以太网流量。 | 用于 Windows 系统的网络分析,尤其是通过 ETW 捕获的网络流量。 |
| Randpktdump | 随机数据包生成 | 用于生成随机的网络数据包并捕获它们。可用于网络性能测试或生成特定模式的流量。 | 用于网络流量模拟、性能测试或产生特定的测试数据包。 |
| Sshdump | SSH 数据包捕获 | 捕获通过 SSH 协议加密的流量。可以用于捕获 SSH 会话中的数据包。 | 用于分析和捕获通过 SSH 进行的网络通信(加密流量)。 |
| Ciscodump | Cisco 路由器和交换机捕获 | 用于与 Cisco 设备交互,捕获 Cisco 设备的网络流量。 | 适用于分析来自 Cisco 网络设备的流量(如路由器、交换机)。 |
| Wifidump | Wi-Fi 网络数据捕获 | 用于捕获 Wi-Fi 网络的流量,可以监控无线网络中的数据包。 | 用于分析 Wi-Fi 网络流量,进行无线网络的安全分析和流量监控。 |
| Udpdump | UDP 流量捕获 | 用于捕获 UDP 协议的数据包。适用于需要监控和分析 UDP 流量的场景。 | 适用于实时分析 UDP 数据包的传输、流量监控和故障排除。 |
插件功能概述:
-
Androiddump:专为 Android 设备设计的插件,可以通过 ADB (Android Debug Bridge)从 Android 设备上获取流量。对于开发人员和网络分析师来说,特别有用,特别是在调试与 Android 应用相关的网络通信时。
-
Etwdump:该插件允许 Wireshark 从 Windows 系统的 ETW(Event Tracing for Windows)中捕获网络数据。这对于 Windows 平台上的网络问题诊断尤为有用。
-
Randpktdump:这个插件生成并捕获随机数据包,适用于网络负载测试、性能测试或某些特定类型的流量模拟。
-
Sshdump:它允许从 SSH 会话中捕获流量,对于那些需要分析加密 SSH 流量的场景十分有用,尽管 SSH 会话本身是加密的,这个插件能够捕获经过加密的网络流量。
-
Ciscodump:用于与 Cisco 网络设备(如交换机、路由器)集成的插件,可以直接从这些设备获取网络流量,适合网络管理员用于捕获并分析 Cisco 设备的网络流量。
-
Wifidump:支持捕获无线网络中的数据包,对于进行 Wi-Fi 网络的安全分析、流量监控等非常有用。
-
Udpdump:此插件专门捕获 UDP 流量,适用于实时监控和分析基于 UDP 协议的通信数据。常用于需要分析 VoIP、视频流等应用的场景。
通过这些插件,Wireshark 可以与多种外部工具进行集成,支持更广泛的网络数据捕获场景,极大扩展了 Wireshark 的功能和适用范围。
Npcap 1.79 是 Npcap 网络捕获库的一个版本,它是 Wireshark 等网络分析工具用来捕获网络流量的底层库。Npcap 是 WinPcap 的继任者,WinPcap 是一种广泛使用的 Windows 平台网络数据包捕获工具库。
为什么 Wireshark 需要安装 Npcap?
Wireshark 依赖于 Npcap 来访问网络接口并捕获数据包。在 Windows 操作系统上,Wireshark 不能直接访问网络接口,必须通过 Npcap 来与网络硬件进行交互。Npcap 提供了以下几个重要功能:
-
数据包捕获:Npcap 允许 Wireshark 捕获计算机网络接口(如以太网卡、Wi-Fi 适配器等)上流动的网络数据包。
-
增强的功能:Npcap 相比于 WinPcap 提供了一些额外的特性和增强功能,例如:
- 支持 Loopback 接口(即对本机流量的捕获)。
- 更高效的捕获性能,尤其是在高速度网络和多核处理器上。
- 改进的 Wi-Fi 捕获支持,支持更广泛的无线网络监控。
- 支持 Windows 10 和 Windows 11 的优化和兼容性。
- 更好的支持 Packet Filtering 和 IPv6。
-
增强的安全性:Npcap 提供比 WinPcap 更强的安全功能。它要求管理员权限来安装,并且使用了更多的安全措施来防止恶意软件的滥用。
-
与 Windows 10 的兼容性:Wireshark 在 Windows 10 上运行时,需要 Npcap 来提供良好的性能和兼容性。Wireshark 和 Npcap 都会得到微软操作系统对网络驱动和权限管理的支持。
为什么选择 Npcap 1.79?
具体来说,Npcap 1.79 是 Npcap 系列的一次更新版本,可能包含了以下改进:
- bug 修复:修复了一些已知的 bug 或性能问题。
- 新特性支持:新增了一些特性或对网络捕获的优化,可能包括更好的驱动支持、改进的 Wi-Fi 捕获支持等。
- 安全性提升:加强了与 Windows 安全模型的兼容性,提供更强的保护机制。
- 性能优化:可能包含了对网络数据捕获效率的提升,尤其是在高速网络环境下。
为什么需要安装 Npcap?
Wireshark 在 Windows 操作系统上不直接包含网络捕获驱动程序,所以需要安装外部的捕获库。Wireshark 推荐使用 Npcap,而不再使用过时的 WinPcap,因为 Npcap 提供了更好的性能和安全性,同时支持更多的现代网络协议和功能。
总结一下,安装 Npcap 1.79 是为了让 Wireshark 或其他需要数据包捕获的应用程序能够高效、可靠地捕获和分析网络数据包,同时确保与现代 Windows 操作系统的兼容性和安全性。

浙公网安备 33010602011771号