完成官方管线全量逆向与 demo3 v5 复刻,清理仓库
- 逆向:Ghidra/IDA 全量反编译 CoreSDKLib.dll/ThermalSDK.dll/libthermalSDK.so/ libcoresdk.so(ARM64)/libmagcore.so,导出 analysis/ida/export/ - 解码官方渲染管线:DDT 校准表加载->快门端点选择->Q12 插值->ref(4x type1 帧 均值)->NUC 查表->盲元补偿->窗口->LUT1024 重建->2x 升采样->调色板 - 逐像素验证:NUC+盲元 0/19200、插值 0 误差、2x 0/76800、窗口一致 - demo3 v5:完整复刻官方管线(含 DDT 解析、FFC 状态机、快门温度驱动), 修复 load_ddt 表错位导致的零像素问题 - 鬼影根因分析写入 analysis/reverse_20260813_full.md - 心跳/恢复机制:analysis/session_state.md + tools/resume_rev.ps1 - 新增 tsdk_pair3 增强采集工具;历史工具归档 csdk/tools/legacy/; 根目录抓帧残留删除,历史文档归档 analysis/history/ - csdk/README.md 完整使用文档;.gitignore/.gitattributes 补 LFS 规则
This commit is contained in:
@@ -1,38 +1,64 @@
|
||||
# MAG160C 热像仪逆向工程
|
||||
|
||||
本仓库记录 MAG160C 热像仪的 USB 协议、官方 Windows/Android SDK 逆向结果、纯 C SDK、官方渲染管线分析、抓帧数据和 demo3 实机调试过程。
|
||||
MAG160C 热像仪(160×120,USB VID 0x833C)的 USB 协议、官方 SDK 逆向、纯 C SDK
|
||||
和**官方渲染管线逐像素复刻**(demo3 v5)的完整工程。
|
||||
|
||||
## 从这里开始
|
||||
|
||||
新接手者先阅读:
|
||||
新接手者按顺序阅读:
|
||||
|
||||
1. `交接_完整逆向工程说明_20260811.md`
|
||||
2. `analysis/handoff_20260813.md`
|
||||
3. `analysis/handoff_20260811_full.md`
|
||||
4. `analysis/protocol_spec.md`
|
||||
5. `csdk/tools/mag160c_demo3.c`
|
||||
1. `analysis/reverse_20260813_full.md` — 官方管线 Ghidra 全量逆向 + 鬼影根因(最新)
|
||||
2. `analysis/session_state.md` — 当前会话状态与恢复点(心跳锚点)
|
||||
3. `交接_完整逆向工程说明_20260811.md` — 项目总交接(目录/环境/历史/失败路线)
|
||||
4. `analysis/protocol_spec.md` — USB 协议/帧/命令/温度规格
|
||||
5. `csdk/README.md` — **C SDK 完整使用文档**(构建/API/工具/测试)
|
||||
6. `csdk/tools/mag160c_demo3.c` — 主程序(官方管线复刻)
|
||||
|
||||
完整交接文档包含目录说明、环境部署、官方管线结论、当前源码状态、已失败方案、剩余问题和给下一位 AI 的接手提示词。
|
||||
## 当前状态(2026-08-13)
|
||||
|
||||
## 当前硬件
|
||||
- demo3 v5 已完整复刻官方渲染管线:DDT 校准表加载 → 快门驱动端点选择与
|
||||
Q12 插值 → ref=FFC 窗口 4×type1 帧均值 → NUC 查表 → 盲元补偿 →
|
||||
窗口 → LUT1024 重建 → 灰度 → 2x 升采样 → 官方调色板
|
||||
- 逐像素验证:NUC+盲元 0/19200、插值 0 误差、2x 0/76800、窗口一致
|
||||
- 同静态场景 gray 直方图与官方相关性 0.92(跨会话)
|
||||
- 原"鬼影"问题的根因已定位并复刻官方行为(见 reverse_20260813_full.md §7)
|
||||
|
||||
- 设备:MAG160C 热像仪
|
||||
- 分辨率:160×120
|
||||
- USB VID:`0x833C`
|
||||
- 常见 PID:`0x0001`
|
||||
- 原始帧:19200 个小端 `uint16`
|
||||
- 实时帧端点:`0x81`
|
||||
- 命令端点:`0x03`,响应端点:`0x82`
|
||||
## 硬件
|
||||
|
||||
## 当前演示程序
|
||||
- 设备:MAG160C 热像仪,分辨率 160×120,15 fps
|
||||
- USB VID:`0x833C`,常见 PID:`0x0001`
|
||||
- 帧:19200 个小端 `uint16`;端点:命令 `0x03`/响应 `0x82`/实时帧 `0x81`
|
||||
|
||||
- 源码:`csdk/tools/mag160c_demo3.c`
|
||||
- 程序:`build-artifacts/mag160c_demo3.exe`
|
||||
- 运行目录:`build-artifacts`
|
||||
- 官方 NUC 表:`build-artifacts/mag160c_official_nuc_gain.bin`、`build-artifacts/mag160c_official_nuc_thr.bin`
|
||||
## 快速入口
|
||||
|
||||
编译和启动命令见完整交接文档。不要在没有阅读交接文档的情况下继续调窗口、调色板或显示层去鬼影。
|
||||
```powershell
|
||||
# 编译 demo3(官方管线复刻)
|
||||
gcc -O2 -w -DMAG160C_STATIC -I"csdk\third_party\libusb\win64" -I"csdk\include" -I"csdk\src" `
|
||||
-o build-artifacts\mag160c_demo3.exe csdk\tools\mag160c_demo3.c `
|
||||
csdk\src\mag160c_display.c csdk\src\mag160c_error.c `
|
||||
csdk\third_party\libusb\win64\libusb-1.0.x64.a -lgdi32 -luser32
|
||||
|
||||
# 启动
|
||||
Start-Process "build-artifacts\mag160c_demo3.exe" -WorkingDirectory "build-artifacts"
|
||||
```
|
||||
|
||||
详细用法见 `csdk/README.md`。
|
||||
|
||||
## 仓库结构
|
||||
|
||||
| 路径 | 用途 |
|
||||
|---|---|
|
||||
| `csdk/` | 纯 C SDK + 工具(见 `csdk/README.md`)|
|
||||
| `analysis/` | 逆向证据:反编译导出(`ida/`)、协议规格、交接文档、抓帧数据 |
|
||||
| `IR_Camera_SDK-1.0.1/` | 原厂 Windows/Android/Linux SDK |
|
||||
| `build-artifacts/` | 运行目录(demo3 exe、DDT 表、官方抓帧工具)|
|
||||
| `docs/` `vendor-docs/` `app/` | 历史资料与模块文档 |
|
||||
| `tools/resume_rev.ps1` | 会话恢复脚本(心跳配套)|
|
||||
|
||||
历史文档(早期 findings/progress/task_plan、根目录抓帧残留)已归档到
|
||||
`analysis/history/`;早期探索工具源码在 `csdk/tools/legacy/`。
|
||||
|
||||
## 仓库说明
|
||||
|
||||
仓库包含官方 SDK、第三方依赖、二进制样本和抓帧数据。部分内容可能受原厂许可限制,仅用于本项目的互操作性研究和设备调试。大型文件使用 Git LFS。
|
||||
仓库包含官方 SDK、第三方依赖、二进制样本和抓帧数据。部分内容可能受原厂
|
||||
许可限制,仅用于本项目的互操作性研究和设备调试。大型文件使用 Git LFS。
|
||||
|
||||
Reference in New Issue
Block a user