REA MCP
☰
KO
● — 명 접속 중 · 조회 — 회
후원사례 제출
GitHub 저장소 · 작성자 Jiang-sustech

REA-ZWO

REA-ZWO는 REA(Reverse Engineer Anything)와 Ghidra를 사용하여 ZWO ASIAIR 천체 사진 박스의 펌웨어를 리버스 엔지니어링하는 조사 프로젝트로, 아키텍처 분석, 세대 간 공통점, JSON-RPC/INDI 통신 프로토콜, 리버스 엔지니어링 절차 노트를 수록하며, 벤더 펌웨어와 바이너리를 다운로드하거나 배포하지 않는다는 점을 명확히 밝히고 있다.

번역 완료

이 사례에 대하여

REA(morluto/rea)와 Ghidra를 사용하여 ZWO ASIAIR 천체 사진 펌웨어를 리버스 엔지니어링하는 저장소. 3계층 아키텍처(수정된 INDI + 클로즈드 소스 SDK + Raspberry Pi OS), 세대 간 공통점, JSON-RPC 프로토콜 포트(4700/4350/4360 등), asiair_armhf.deb 추출을 통한 최저 위험 분석 경로, 로드맵, 법적 경계, 유지보수자를 위한 HANDOFF.md에 관한 발견을 포함한다. 벤더 펌웨어, 이미지, 추출된 바이너리를 명시적으로 호스팅하지 않는다.

설정

설치 방법은 원본 출처를 확인하세요.

원문 / README

REA-ZWO

用 REA(Reverse Engineer Anything — 给 AI agent 接上 Ghidra / IDA / Hopper 的 MCP 工具链)来拆 ZWO ASIAIR 天文盒子的固件。

本仓库只存放调研结论、脚本、笔记和抓包。 不存放 ZWO 的原厂固件、镜像或提取出的二进制——原因见文末《法律边界》。

⚠️ 寻找接手人 本仓库发起者没有 ASIAIR 设备,纯静态条件下能做的调研已基本完成。 继续推进(取 OTA 更新包、补全协议、验证跨代一致性)需要有人手上有实机。 详见 HANDOFF.md —— 里面列了待办、优先级和参与方式。


已知结论

截至 2026-10-11 的调查结果。逐条证据见 docs/findings-01-架构底细.md。

ASIAIR 不是自研系统,是三层拼装:

| 层 | 实际是什么 | |---|---| | 应用层 | 魔改 INDI(C++,XML 协议)为核心。赤道仪走 INDI,单反走 gphoto2,ZWO 自家相机 / 电调 EAF / 滤镜轮 EFW 走闭源 SDK(libASICamera2.so、libasi) | | 二进制 | 设备 /home/pi/ASIAIR/bin/:zwoair_imager、zwoair_guider、zwoair_updater、zwoair_daemon.sh。C / C++,未见 Go 痕迹 | | 内嵌开源 | FFmpeg 4.2.2-Kodi、libyuv、OpenCV、IJKPlayer、SQLCipher / MMKV、TUTK P2P、RKNN 模型(nanotrack 目标跟踪) | | OS | 魔改 Raspberry Pi OS / Raspbian(Debian,32-bit armhf),自编 kernel 4.19.x | | 通信 | 明文换行分隔 JSON-RPC,无加密。主控制 4700;另有 4800/4801/4900/4500/4400 侧通道;OTA 在 4350/4360 | | 手机 App | Android 原生 com.zwoasi.asiair,v3.0.0,约 1.17 GB |

硬件分三代,逆向路线完全不同

| 型号 | 取固件方式 | 风险 | |---|---|---| | ASIAIR Pro | 拔 SD 卡 → dd | 最低 | | ASIAIR Plus(CM4,早期 32 GB) | USB-C + rpiboot 挂 eMMC(reset 键接 nRPI_BOOT) | 低 | | ASIAIR Plus 256GB / Mini(Rockchip RK3568B2 / RV1126) | maskrom + rkdeveloptool | 高——ZWO 不提供任何官方镜像,进不了 maskrom 就是砖 |

各代核心功能是否一样?—— 应用层共用,OS 层分叉

| 层 | 跨代共用? | 说明 | |---|---|---| | 应用层 | ✅ 全型号共用,单一 armhf | 一套 asiair_armhf.deb + indi-y_armhf.deb + libgphoto2 喂所有机型;连 Seestar 都共用 | | OS 层 | ❌ 按 SoC 分叉 | Pi 系(Pro、AA+ CM4)与 Rockchip 系(Mini、AA+ 256GB)两套底座 |

所以逆向目标锁定 asiair_armhf.deb 就对了,跟手上是哪台无关。「型号决定路线」指的是怎么把固件取出来,不是分析对象。 逐条证据见 docs/findings-02-跨代共性.md。

最低风险入口

先拆 .deb,不要先拆机器。 官方更新包是 Debian 包 asiair_armhf.deb:

ar x asiair_armhf.deb        # → control.tar.xz / data.tar.xz / debian-binary
unxz data.tar.xz
tar -xvf data.tar            # → home/pi/ASIAIR/{bin,lib,config,model}

拆出来的 bin/zwoair_* 就是主目标,全程不碰硬件、零变砖风险。 包名 armhf = 32 位 ARM,本身即印证了它照 Raspberry Pi OS(armhf)构建。


路线图

  • [ ] 搭环境:WSL2 + Debian,装 binwalk / file / readelf
  • [ ] 拆 asiair_armhf.deb,对 zwoair_imager 做静态摸底(架构、依赖、符号、硬编码协议)
  • [ ] 确定设备具体型号,决定是否/如何做整盘备份
  • [ ] 接 REA + Ghidra,反编译 zwoair_imager / zwoair_guider
  • [ ] 梳理 App ↔ 设备 的 JSON-RPC 协议(4040 / 4360 / 4700)

环境备忘

  • 本机 Windows 11,node v24.15.0,npm registry 可达
  • github.com / raw.githubusercontent.com 从本机直连被重置,api.github.com 正常。下载 Ghidra、OpenAstro 等 GitHub 资源需要代理
  • REA 在 Windows 上只有实验性 Ghidra 支持(只读、仅原生 x86-64 PE),而目标是 ARM Linux 二进制——正经分析走 WSL2

法律边界

  • 逆向工程本身:为互操作性做逆向,在多数量辖区属合法范畴;但可能违反 ZWO 的最终用户许可协议(EULA)。
  • 这个仓库的自我约束:不提交原厂固件、镜像、提取出的二进制或反编译产物。 逆向分析和再分发是两回事——后者是明确的版权问题。.gitignore 已按此设置了排除规则。
  • 涉及设备操作(挂载 eMMC、maskrom 刷写)有变砖风险,且先做整盘备份是回到官方固件的唯一退路。

相关

  • REA — 本项目的工具链
  • OpenAstro — 社区在 ASIAIR 硬件上跑 Debian 的项目

비슷한 프로젝트