QuantLab
技术干货

260529_卓创sci99_Wireshark

小年糕 ·

Windows 本地软件联网接口抓取测试清单

20260528

  1. 以管理员模式 打开 powershell
  2. 输入
$env:SSLKEYLOGFILE="C:\temp\sslkeys.log"
Start-Process "C:\app\sci99\ht3\红桃3.exe"
  1. 唤起卓创软件
  2. 查看 C:\temp\sslkeys.log 文件,确认在增长
  3. 打开Wireshark(桌面开发工具文件夹)
  4. 添加 Wlan

以管理员模式 打开 powershell Get-NetRoute -DestinationPrefix "0.0.0.0/0" | Select-Object InterfaceAlias, NextHop

  1. 进入卓创软件->我的模板->添加数据
  1. 设置 SSLKEYLOGFILE 环境变量并启动程序:

$env:SSLKEYLOGFILE="C:\temp\sslkeys.log" Start-Process "C:\app\sci99\ht3\红桃3.exe"

  1. 这个变量的作用和浏览器调试时一样——程序会把自己的 TLS 私钥写到这个文件。
  2. Wireshark 配置:

Edit → Preferences → Protocols → TLS → (Pre)-Master-Secret log filename 指向 C:\temp\sslkeys.log

  1. 抓包并定位流量:
  • 先 ping open.sci99.com 拿到 IP(文档中示例是 58.57.118.137)
  • Wireshark 过滤:ip.addr == 58.57.118.137 and tcp.port == 443
  • 查看 HTTP + length
  • 右键目标包 → Follow → HTTP Stream,就能看到明文 HTTP/1.1 200 OK + JSON 响应体
  • 显示为 UTF-8
  1. 导出后转 curl:

把 HTTP Stream 另存为 http_stream.md,再用你已有的转换脚本生成可复现的 curl 命令: python "AIDataDictionary-report/4_数据工具/http_stream_to_curl.py" "AIDataDictionary-report/4_数据工具/http_stream.md"

一句话总结: SSLKEYLOGFILE 环境变量 + Wireshark 解密,是目前对该软件唯一稳定可用的抓包方式,代理类工具(Fiddler/Charles/Proxifier)会被反代理机制拦截。文档中"1.2 最终采用方案"那一段就是已验证的完整结论。


0. 一键执行清单(先看这个)

  • [ ] 关闭 Windows Proxy、关闭 Proxifier 规则(避免代理链路触发拦截)
  • [ ] 关闭目标软件,PowerShell 设置环境变量并启动:
$env:SSLKEYLOGFILE="C:\temp\sslkeys.log"
Start-Process "C:\app\sci99\ht3\红桃3.exe"
  • [ ] 确认 C:\temp\sslkeys.log 文件在增长
  • [ ] Wireshark 配置 TLS -> (Pre)-Master-Secret log filename = C:\temp\sslkeys.log
  • [ ] 开始抓包后先用 dns 找目标域名(例如 open.sci99.com
  • [ ] 记录 DNS 解析出的 IP(例如 58.57.118.137
  • [ ] 用过滤器查看目标业务流:
ip.addr == 58.57.118.137 and (tcp.port == 443 or udp.port == 443)
  • [ ] 右键目标包 Follow -> HTTP Stream,确认出现 HTTP/1.1 200 OK 和 JSON 内容
  • [ ] 导出明文请求/响应为 http_stream.md
  • [ ] 运行转换工具生成 curl
python "AIDataDictionary-report/4_数据工具/http_stream_to_curl.py" "AIDataDictionary-report/4_数据工具/http_stream.md"

1. 本次已验证可用的完整路径(最终版)

1.2 最终采用方案

  1. 不使用 Fiddler/Charles/Proxifier 做中间人代理(避免触发反代理/风控)。
  2. 使用 PowerShell 设置环境变量 SSLKEYLOGFILE 后启动客户端进程。
  3. 用 Wireshark 抓包并加载 key log 文件,解密 TLS 流量。
  4. 从 Wireshark 的 Follow -> HTTP Stream 导出请求/响应明文到 http_stream.md
  5. 用 Python 工具将 http_stream.md 自动转换为 curl 以便复现。

1.3 可直接复用的操作命令

PowerShell 启动方式(示例):

$env:SSLKEYLOGFILE="C:\temp\sslkeys.log"
Start-Process "C:\app\sci99\ht3\红桃3.exe"

说明:

  • 启动后若 C:\temp\sslkeys.log 持续增长,表示 TLS 会话密钥写出正常。
  • 控制台中的 cache/quota 警告一般不影响抓取流程。

1.4 Wireshark 关键配置

  1. 打开 Edit -> Preferences -> Protocols -> TLS
  2. (Pre)-Master-Secret log filename 指向 C:\temp\sslkeys.log
  3. 开始抓包后先用 dns 找目标域名对应 IP,再按 IP 过滤 443 流量:

ping open.sci99.com

ip.addr == 58.57.118.137 and (tcp.port == 443 or udp.port == 443)
  1. 已验证样例:
  • 域名:open.sci99.com
  • DNS:open.sci99.com -> 58.57.118.137
  • 协议:HTTP/1.1 200 OK
  • 数据类型:application/json(可见明文 JSON 响应体)

1.5 明文转 curl(已落地工具)

  • 工具脚本:AIDataDictionary-report/4_数据工具/http_stream_to_curl.py
  • 输入文件:AIDataDictionary-report/4_数据工具/http_stream.md

执行示例:

python "AIDataDictionary-report/4_数据工具/http_stream_to_curl.py" "AIDataDictionary-report/4_数据工具/http_stream.md"

输出到文件:

python "AIDataDictionary-report/4_数据工具/http_stream_to_curl.py" "AIDataDictionary-report/4_数据工具/http_stream.md" -o "AIDataDictionary-report/4_数据工具/curl_commands.sh"

1.6 注意事项

  • 若后续需要换账号抓取,建议每次先清空旧 sslkeys.log,避免会话混淆。
  • auth 等敏感请求头请勿外发,报告中建议脱敏。
  • 若目标切到 HTTP/3/QUIC 且无法解密,优先尝试让客户端回落 TCP/TLS 后再抓取。

2. 测试前准备

  • 关闭目标软件、Charles、Proxifier、浏览器(避免会话干扰)
  • 记录目标进程名(如 xxx.exe
  • Windows 系统代理恢复默认(避免全局代理污染)
  • 确认系统时间准确(证书校验依赖时间)

6. QUIC/HTTP3 排查(用 Wireshark)

4.1 抓包过滤表达式

先用:

udp.port == 443 or tcp.port == 443 or dns

若已知目标 IP,再加:

(udp.port == 443 or tcp.port == 443) and ip.addr == x.x.x.x

● 在 Wireshark 的过滤器栏直接输入即可:

常用 HTTP 过滤器

┌──────────────────────────────────┬──────────────────────────┐ │ 过滤器 │ 作用 │ ├──────────────────────────────────┼──────────────────────────┤ │ http │ 所有 HTTP 请求和响应 │ ├──────────────────────────────────┼──────────────────────────┤ │ http.request │ 只看请求(POST/GET 等) │ ├──────────────────────────────────┼──────────────────────────┤ │ http.response │ 只看响应(含 JSON 数据) │ ├──────────────────────────────────┼──────────────────────────┤ │ http.request.method == POST │ 只看 POST 请求 │ ├──────────────────────────────────┼──────────────────────────┤ │ http.request.uri contains "tree" │ URL 中包含 "tree" 的请求 │ ├──────────────────────────────────┼──────────────────────────┤ │ http.response.code == 200 │ 只看 200 成功的响应 │ ├──────────────────────────────────┼──────────────────────────┤ │ http contains "json" │ 内容中含 "json" 的包 │ └──────────────────────────────────┴──────────────────────────┘

实际操作

在 Wireshark 顶部过滤器栏输入 http 回车即可。前提是 TLS 解密已生效 — 你之前的 sslkeys.log 配好后,Wireshark 会自动把解密后的 HTTPS 流量识别为 HTTP 协议。

排查:如果输入 http 看不到任何包

说明 TLS 解密可能没有生效,检查:

  1. 编辑 → 首选项 → Protocols → TLS → (Pre)-Master-Secret log filename 是否指向 C:\temp\sslkeys.log
  2. sslkeys.log 文件大小是否在增长(不是 0 字节)
  3. 确认抓到了目标 IP 的 443 端口流量

推荐过滤组合

http and ip.addr == 223.96.90.167

这样只看目标服务器的 HTTP 流量,排除其他无关请求。

抓取树形结构数据的操作步骤

  1. 关掉卓创程序,清空或备份旧的 sslkeys.log(避免之前的会话流量干扰)
  2. 重新以 SSLKEYLOGFILE 方式启动:

$env:SSLKEYLOGFILE="C:\temp\sslkeys.log" Start-Process "C:\app\sci99\ht3\红桃3.exe"

  1. 启动 Wireshark 抓包,先不要做任何操作
  2. 进入"增加数据"页面,逐步展开左侧树节点:
  • 点击"宏观数据" → 子节点加载
  • 点击"人民生活与就业" → 再次加载子节点
  • 点击"城镇居民家庭基本情况" → 加载具体指标列表
  1. 每次展开节点时,观察 Wireshark 中是否有新的 HTTPS 请求
  2. 关键过滤技巧:
  • 先用 dns 看看有没有新的域名(树形数据接口可能和图表数据接口不同)
  • 也可以用 http 过滤器,因为 Wireshark 解密后能看到 application/json 的 HTTP 响应
  • 或者按时间段找——点节点的瞬间出现的 443 流量就是目标
  1. Follow HTTP Stream 查看请求/响应,树形结构的 JSON 大概率包含 children、parentId、name、code 等字段

评论 (1)

小年糕

详细案例

发表评论