«
Wireshark 常用表达式笔记
时间:2025-7-8 10:28
作者:wanzi
分类: 网络
使用Qwen 按 协议分类 + 应用场景 组织,覆盖 Web、流媒体、物联网、信令服务器等典型场景总结一篇可以随时翻看的笔记,适用于 抓包分析、故障排查、安全审计 等用途。
🧰 一、通用基础过滤表达式
1. 协议基础
协议 |
表达式 |
说明 |
TCP |
tcp |
所有 TCP 协议流量 |
UDP |
udp |
所有 UDP 协议流量 |
DNS |
dns |
所有 DNS 查询/响应 |
ICMP |
icmp |
所有 ICMP(Ping)流量 |
ARP |
arp |
地址解析协议流量 |
HTTP |
http |
HTTP 协议流量(不包括 HTTPS) |
TLS/SSL |
tls |
加密流量(HTTPS、MQTT over TLS 等) |
2. 端口与地址过滤
场景 |
表达式 |
说明 |
指定端口 |
tcp.port == 80 或 udp.port == 53 |
过滤特定端口流量 |
指定 IP |
ip.addr == 192.168.1.1 |
过滤源或目的 IP |
源 IP |
ip.src == 192.168.1.1 |
仅源地址匹配 |
目的 IP |
ip.dst == 192.168.1.1 |
仅目的地址匹配 |
MAC 地址 |
eth.addr == 00:11:22:33:44:55 |
过滤特定 MAC 地址 |
🌐 二、Web 与小程序相关
1. HTTP 请求与响应
场景 |
表达式 |
说明 |
GET 请求 |
http.request.method == "GET" |
过滤所有 GET 请求 |
POST 请求 |
http.request.method == "POST" |
过滤所有 POST 请求 |
特定路径请求 |
http.request.uri contains "/login" |
URI 包含关键词 |
HTTP 状态码 |
http.response.code == 200 |
过滤特定状态码(如 404、500) |
Host 头 |
http.host == "example.com" |
过滤特定域名请求 |
大响应体 |
http.content_length > 1000 |
过滤大文件传输 |
2. HTTPS/TLS
场景 |
表达式 |
说明 |
TLS 握手 |
tls.handshake.type == 1 |
ClientHello(类型 1) |
证书信息 |
tls.x509_certificate |
显示证书字段 |
SNI 过滤 |
tls.handshake.extensions_server_name == "example.com" |
过滤特定域名的 HTTPS 请求 |
解密流量 |
配合 SSLKEYLOGFILE 解密(需浏览器支持) |
分析 HTTPS 内容 |
📺 三、流媒体协议
1. RTMP(实时消息传输协议)
场景 |
表达式 |
说明 |
RTMP 流量 |
rtmp |
过滤所有 RTMP 协议 |
推流请求 |
rtmp.app == "live" |
过滤推流应用名 |
流名称 |
rtmp.playpath == "stream123" |
过滤特定流名 |
2. HLS(HTTP Live Streaming)
场景 |
表达式 |
说明 |
M3U8 索引文件 |
http.request.uri ends_with ".m3u8" |
过滤索引文件请求 |
TS 分片 |
http.request.uri ends_with ".ts" |
过滤视频分片请求 |
HLS 域名 |
http.host == "hls.example.com" |
过滤特定 CDN 的 HLS 流量 |
3. RTSP(实时流协议)
场景 |
表达式 |
说明 |
RTSP 请求 |
rtsp.request.method |
显示所有 RTSP 方法(如 SETUP、PLAY) |
OPTIONS 请求 |
rtsp.request.method == "OPTIONS" |
过滤 OPTIONS 方法 |
流 ID |
rtsp.rtp_interleaved == 0 |
过滤 RTP 通道数据 |
4. WebRTC(实时通信)
场景 |
表达式 |
说明 |
ICE 候选 |
stun.attribute.type == 0x0001 |
过滤 STUN Binding Request |
SDP 信息 |
sip.session_id 或 sdp |
显示会话描述协议内容 |
RTP/RTCP |
rtp 或 rtcp |
过滤音视频传输流量 |
📡 四、物联网与信令协议
1. SIP(会话发起协议)
场景 |
表达式 |
说明 |
SIP 注册 |
sip.method == "REGISTER" |
过滤注册请求 |
呼叫建立 |
sip.method == "INVITE" |
过滤呼叫邀请 |
呼叫终止 |
sip.method == "BYE" |
过滤挂断请求 |
SIP 域名 |
sip.host == "sip.example.com" |
过滤特定域的 SIP 流量 |
2. MQTT(轻量级物联网协议)
场景 |
表达式 |
说明 |
MQTT 连接 |
mqtt.conflag.cleansession == 1 |
过滤 Clean Session 为 1 的连接 |
主题订阅 |
mqtt.topic == "sensor/temperature" |
过滤特定主题的消息 |
QoS 等级 |
mqtt.qos_level == 2 |
过滤 QoS 2 的消息 |
连接失败 |
mqtt.return_code != 0 |
过滤连接拒绝(返回码非 0) |
3. GB28181(安防视频联网标准)
场景 |
表达式 |
说明 |
REGISTER 请求 |
sip.method == "REGISTER" |
设备注册 |
INVITE 请求 |
sip.method == "INVITE" |
视频流拉取 |
SDP 媒体类型 |
sdp.media == "video" |
过滤视频流描述 |
RTP 端口 |
rtp.port == 8000 |
过滤视频传输端口 |
🌍 五、网络服务与基础协议
1. DNS
场景 |
表达式 |
说明 |
DNS 查询 |
dns.qry.name == "example.com" |
过滤特定域名查询 |
A 记录 |
dns.qry.type == 1 |
IPv4 地址查询 |
AAAA 记录 |
dns.qry.type == 28 |
IPv6 地址查询 |
DNS 响应延迟 |
dns.time > 0.1 |
过滤响应时间超过 100ms 的请求 |
2. NTP(网络时间协议)
场景 |
表达式 |
说明 |
NTP 请求 |
ntp |
过滤所有 NTP 流量 |
时间偏移 |
ntp.offset > 1 |
过滤偏移超过 1 秒的同步 |
🧪 六、异常检测与高级技巧
1. TCP 异常
场景 |
表达式 |
说明 |
重传 |
tcp.analysis.retransmission |
过滤 TCP 重传包 |
乱序 |
tcp.analysis.out_of_order |
过滤乱序包 |
零窗口 |
tcp.window_size == 0 |
接收方窗口关闭(可能导致卡顿) |
2. 组合过滤(逻辑运算)
场景 |
表达式 |
说明 |
多条件与 |
http && ip.addr == 192.168.1.1 |
同时满足 HTTP 和 IP 条件 |
多条件或 |
sip || rtmp |
过滤 SIP 或 RTMP 流量 |
非条件 |
!arp |
排除 ARP 流量 |
3. 正则匹配(需启用 GRegex
)
场景 |
表达式 |
说明 |
URI 匹配 |
http.request.uri matches ".*\.php" |
过滤 PHP 脚本请求 |
User-Agent |
http.user_agent matches "iPhone" |
过滤 iPhone 客户端请求 |
📊 七、统计与分析工具(Wireshark 内置)
工具 |
路径 |
说明 |
协议分级 |
Statistics > Protocol Hierarchy |
查看流量协议分布 |
会话统计 |
Statistics > Conversations |
分析通信对(IP + 端口) |
流量图 |
Statistics > Flow Graph |
生成 TCP/UDP 流量图 |
IO 统计 |
Statistics > IO Graphs |
自定义 X/Y 轴分析流量趋势 |
📌 注意事项
- HTTPS 解密:需配置
SSLKEYLOGFILE
环境变量(Chrome/Firefox 支持),或使用服务器私钥解密。
- 捕获过滤 vs 显示过滤:
- 捕获过滤(
tcpdump
语法):port 80 and host 192.168.1.1
- 显示过滤(Wireshark 语法):
http && ip.addr == 192.168.1.1
- 性能优化:避免使用复杂正则或全量抓包,可通过
capture filter
减少数据量。