
Jiang-sustech/REA-ZWO

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

Jiang-sustech/REA-ZWO

REA(morluto/rea)와 Ghidra를 사용하여 ZWO ASIAIR 천체 사진 펌웨어를 리버스 엔지니어링하는 저장소. 3계층 아키텍처(수정된 INDI + 클로즈드 소스 SDK + Raspberry Pi OS), 세대 간 공통점, JSON-RPC 프로토콜 포트(4700/4350/4360 등), asiair_armhf.deb 추출을 통한 최저 위험 분석 경로, 로드맵, 법적 경계, 유지보수자를 위한 HANDOFF.md에 관한 발견을 포함한다. 벤더 펌웨어, 이미지, 추출된 바이너리를 명시적으로 호스팅하지 않는다.
설치 방법은 원본 출처를 확인하세요.
用 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 就是砖 |
| 层 | 跨代共用? | 说明 |
|---|---|---|
| 应用层 | ✅ 全型号共用,单一 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)构建。
binwalk / file / readelfasiair_armhf.deb,对 zwoair_imager 做静态摸底(架构、依赖、符号、硬编码协议)zwoair_imager / zwoair_guidernode v24.15.0,npm registry 可达github.com / raw.githubusercontent.com 从本机直连被重置,api.github.com 正常。下载 Ghidra、OpenAstro 等 GitHub 资源需要代理.gitignore 已按此设置了排除规则。