Wireshark 核心功能
三、核心功能
先区分两种过滤器,这是初学者最容易混淆的地方:
| 对比项 | 捕获过滤器 | 显示过滤器 |
|---|---|---|
| 生效时机 | 抓包前,内核层过滤 | 抓包后,界面上过滤 |
| 语法 | BPF,如 tcp port 443 | Wireshark 表达式,如 tcp.port == 443 |
| 影响 | 不匹配的包直接被丢弃,文件更小 | 不影响已抓内容,只改变显示 |
| 典型用法 | 长时间抓包时减小体积 | 分析时反复切换视角 |
常用显示过滤器:
| 过滤器 | 作用 |
|---|---|
ip.addr == 203.0.113.10 | 只看与某主机相关的双向流量 |
tcp.port == 443 | 只看 443 端口的 TCP 流量 |
http.request.method == "POST" | 只看 POST 请求,排查提交类接口 |
http.response.code >= 400 | 只看错误响应,快速定位 4xx / 5xx |
tcp.analysis.retransmission | 只看重传,丢包的直接证据 |
tcp.analysis.zero_window | 只看零窗口,接收方处理不过来的信号 |
tls.handshake.extensions_server_name | 按 SNI 过滤 TLS 目标域名 |
tcp.flags.reset == 1 | 只看 RST 包,定位连接被拒或被断 |
除了过滤,真正提高效率的是这几项功能:着色规则给异常包上色(黑色背景代表 TCP 问题包,红色是错误包),扫一眼就能发现异常;Statistics 菜单下的 Conversations 能列出流量最大的通信对,Flow Graph 能把一次交互画成时序图,一眼看出谁在等谁;Follow 菜单下的 TCP Stream / HTTP Stream 会把整段会话拼成可读文本,看请求响应最快;File 菜单下的 Export Objects 能从流量里还原出 HTTP 传输的文件;Analyze 下的 Expert Information 会把重传、乱序、窗口异常、连接复位等自动汇总,是排查的起点。
抓 HTTPS 明文有两条正路:一是设置环境变量 SSLKEYLOGFILE,让浏览器把会话密钥写入文件,再在 Wireshark 的 TLS 协议首选项里指定该文件,即可解密自己发起的那部分流量;二是用受控的中间代理,并在客户端安装信任的证书。两者都必须在自有或已授权环境内做。
# 让浏览器导出 TLS 会话密钥(仅用于自有环境调试)
export SSLKEYLOGFILE=/tmp/sslkeylog.txt
google-chrome --user-data-dir=/tmp/chrome-debug
# 在 Wireshark 中指定密钥日志:
# Preferences -> Protocols -> TLS -> (Pre)-Master-Secret log filename
