260529_卓创sci99_Wireshark
Windows 本地软件联网接口抓取测试清单
20260528
- 以管理员模式 打开 powershell
- 输入
$env:SSLKEYLOGFILE="C:\temp\sslkeys.log"
Start-Process "C:\app\sci99\ht3\红桃3.exe"
- 唤起卓创软件
- 查看
C:\temp\sslkeys.log文件,确认在增长 - 打开Wireshark(桌面开发工具文件夹)
- 添加 Wlan
以管理员模式 打开 powershell Get-NetRoute -DestinationPrefix "0.0.0.0/0" | Select-Object InterfaceAlias, NextHop
- 进入卓创软件->我的模板->添加数据
- 设置 SSLKEYLOGFILE 环境变量并启动程序:
$env:SSLKEYLOGFILE="C:\temp\sslkeys.log" Start-Process "C:\app\sci99\ht3\红桃3.exe"
- 这个变量的作用和浏览器调试时一样——程序会把自己的 TLS 私钥写到这个文件。
- Wireshark 配置:
Edit → Preferences → Protocols → TLS → (Pre)-Master-Secret log filename 指向 C:\temp\sslkeys.log
- 抓包并定位流量:
- 先 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
- 导出后转 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 最终采用方案
- 不使用 Fiddler/Charles/Proxifier 做中间人代理(避免触发反代理/风控)。
- 使用 PowerShell 设置环境变量
SSLKEYLOGFILE后启动客户端进程。 - 用 Wireshark 抓包并加载 key log 文件,解密 TLS 流量。
- 从 Wireshark 的
Follow -> HTTP Stream导出请求/响应明文到http_stream.md。 - 用 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 关键配置
- 打开
Edit -> Preferences -> Protocols -> TLS - 在
(Pre)-Master-Secret log filename指向C:\temp\sslkeys.log - 开始抓包后先用
dns找目标域名对应 IP,再按 IP 过滤 443 流量:
ping open.sci99.com
ip.addr == 58.57.118.137 and (tcp.port == 443 or udp.port == 443)
- 已验证样例:
- 域名:
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 解密可能没有生效,检查:
- 编辑 → 首选项 → Protocols → TLS → (Pre)-Master-Secret log filename 是否指向 C:\temp\sslkeys.log
- sslkeys.log 文件大小是否在增长(不是 0 字节)
- 确认抓到了目标 IP 的 443 端口流量
推荐过滤组合
http and ip.addr == 223.96.90.167
这样只看目标服务器的 HTTP 流量,排除其他无关请求。
抓取树形结构数据的操作步骤
- 关掉卓创程序,清空或备份旧的 sslkeys.log(避免之前的会话流量干扰)
- 重新以 SSLKEYLOGFILE 方式启动:
$env:SSLKEYLOGFILE="C:\temp\sslkeys.log" Start-Process "C:\app\sci99\ht3\红桃3.exe"
- 启动 Wireshark 抓包,先不要做任何操作
- 进入"增加数据"页面,逐步展开左侧树节点:
- 点击"宏观数据" → 子节点加载
- 点击"人民生活与就业" → 再次加载子节点
- 点击"城镇居民家庭基本情况" → 加载具体指标列表
- 每次展开节点时,观察 Wireshark 中是否有新的 HTTPS 请求
- 关键过滤技巧:
- 先用 dns 看看有没有新的域名(树形数据接口可能和图表数据接口不同)
- 也可以用 http 过滤器,因为 Wireshark 解密后能看到 application/json 的 HTTP 响应
- 或者按时间段找——点节点的瞬间出现的 443 流量就是目标
- Follow HTTP Stream 查看请求/响应,树形结构的 JSON 大概率包含 children、parentId、name、code 等字段
评论 (1)
详细案例
发表评论