上期能源深度行情 Wireshark 插件
基于《深度行情发布平台接口规范 v1.00》的 Lua 解析插件,支持 MDQP(TCP 快照查询)与 MIRP(UDP 增量行情)。
环境要求
- Wireshark 4.6.x(已在 4.6.8 上验证;需支持 Lua 插件)
- 操作系统:Windows / macOS / Linux 均可
- 无需编译,单文件
.lua脚本,复制即可使用
说明: 请使用官方 Wireshark 安装包。便携版若未启用 Lua,插件将无法加载。可在菜单
Help → About Wireshark中确认是否包含 Lua 支持。
下载
| 插件 | 传输 | 说明 | 下载 |
|---|---|---|---|
| MDQP Dissector | TCP | 解析 MDQP 行情查询协议(快照、登录、增量补包等) | mdqp_dissector.lua |
| MIRP Dissector | UDP | 解析 MIRP 增量行情,含 PacketNo / ChangeNo 连续性检测与丢包高亮 | mirp_dissector.lua |
注:由于网站安全设置无法直接下载.lua文件,下载后去掉.txt扩展,将文件重命名为.lua文件,如果浏览器直接打开了该文件,请复制所有内容并保存为.lua文件
安装与加载
1. 复制插件文件
将下载的 .lua 文件放入 Wireshark 个人插件目录(两个插件可同时安装):
| 系统 | 插件目录 |
|---|---|
| Windows | %APPDATA%\Wireshark\plugins\ |
| macOS | ~/.local/lib/wireshark/plugins/ |
| Linux | ~/.local/lib/wireshark/plugins/ |
也可在 Wireshark 中通过 Help → About Wireshark → Folders 查看 Personal Lua Plugins 路径。
2. 加载插件
- 启动或重启 Wireshark
- 菜单选择
Analyze → Reload Lua Plugins - 打开抓包文件,在
Edit → Preferences → Protocols中应能看到 MDQP、MIRP
3. 手动指定协议(可选)
若端口未自动识别,对目标包右键 → Decode As… → 选择 MDQP 或 MIRP。
MDQP 配置(TCP)
路径:Edit → Preferences → Protocols → MDQP
| 选项 | 默认值 | 说明 |
|---|---|---|
| TCP ports | 33022 |
MDQP 服务端口,源或目的端口匹配即可;支持逗号、范围,如 33022,33023 |
| Heuristic dissection | 关 | 扫描全部 TCP 流量,大文件较慢,建议保持关闭并指定端口 |
TCP 重组(必开)
MDQP 报文可能跨多个 TCP 段,请确认:
Edit → Preferences → Protocols → TCP
- 勾选 Allow subdissector to reassemble TCP streams
Info 列显示字段
完整解析后 Info 列展示:
SnapDate、SnapTime、SnapMillisec、PacketNo、InstrumentID、InstrumentNo
显示过滤器示例
mdqp
mdqp.type_id == 0x32
tcp.port == 33022 && mdqp
mdqp.contract.instrument_id == "rb2510"
MIRP 配置(UDP)
路径:Edit → Preferences → Protocols → MIRP
| 选项 | 默认值 | 说明 |
|---|---|---|
| UDP ports | 21000,25000 |
增量组播端口,逗号或范围,如 21000,25000、21000-21005 |
| Heuristic dissection | 关 | 建议关闭,仅绑定已知端口(性能最佳) |
| Track PacketNo continuity | 开 | 按 TopicID + CenterChangeNo 检测 PacketNo 跳号 |
| Track ChangeNo continuity | 开 | 按合约检测 ChangeNo 跳号 |
| Auto-install gap color rules | 开 | 丢包包黑底白字高亮(需重启 Wireshark 加载着色规则) |
显示过滤器示例
mirp
mirp.topic_id == 100
mirp.packet_status == 2
mirp.gap_loss == 1
mirp.contract.instrument_no == 20
丢包标记黑色高亮
跳号后首包设置 mirp.gap_loss == 1。着色规则写入:
%APPDATA%\Wireshark\colorfilters (Windows)下载修改好的文件
修改着色规则后需重启 Wireshark(Reload Lua 不会刷新 colorfilters)。
常见问题
过滤 mdqp / mirp 没有结果?
显示过滤器只能匹配已成功解析的包。请先用 tcp.port == 33022 或 udp.port == 21000 确认有流量,再 Reload Lua,或 Decode As 手动指定协议。
MDQP 仍显示为 TCP?
- 确认 Preferences → MDQP → TCP ports 已填写
- 确认 TCP 已开启 subdissector reassemble
- 对含完整 payload 的包尝试 Decode As → MDQP
插件加载报错?
查看 Analyze → Reload Lua Plugins 下方 Lua 控制台输出;请使用 Wireshark 4.6.x,旧版 API 可能不兼容。
