bullitt186/prusa-buddy3d-camera-re
GitHub: bullitt186/prusa-buddy3d-camera-re
该项目逆向了 Prusa Buddy3D 摄像头的云协议,并提供树莓派设备模拟器和本地 RTSP 流代理,让用户摆脱对 Prusa Connect 云端的强制依赖。
Stars: 0 | Forks: 0
# Prusa Buddy3D Camera — 协议逆向工程与模拟器
对 **Prusa Buddy3D Camera** 云协议(固件 `3.1.5`)的逆向工程,
外加两个可用的实现方案,让 Linux 机器(Raspberry Pi)能够替代该摄像头
或在本地拉取其视频流。
该摄像头通常只能通过 Prusa Connect 的云端运行。本项目从 ARM 固件中记录了其
协议,并对其进行了重新实现,以便你可以:
- **模拟**来自 Raspberry Pi + 任意摄像头模块的设备——它会作为
一台真正的 Buddy3D 摄像头注册到 Prusa Connect。 → [`pi-impersonator/`](pi-impersonator/)
- **代理**已注册摄像头的云端 WebRTC 流到本地 RTSP URL,并
发送控制命令(重启、分辨率、IR 模式)。 → [`proxy/`](proxy/)
## 从这里开始
| 如果你想… | 请阅读 |
|---|---|
| 了解哪些功能真正可用,哪些仍停留在理论阶段 | [`docs/status.md`](docs/status.md) ⭐ |
| 了解网络协议(规范说明) | [`docs/protocol.md`](docs/protocol.md) |
| **设置 Pi 模拟器(一条命令)** | [`pi-impersonator/README.md`](pi-impersonator/README.md) ⭐ |
| 运行本地 RTSP 代理 / 控制工具 | [`proxy/README.md`](proxy/README.md) |
| 复现或扩展逆向工程工作 | [`docs/reverse-engineering.md`](docs/reverse-engineering.md) |
| 查看尝试过但失败的内容 | [`docs/dead-ends.md`](docs/dead-ends.md) |
| 了解所用工具 | [`docs/tools.md`](docs/tools.md) |
| 了解固件 / 项目来源 | [`docs/sources.md`](docs/sources.md) |
| 查看官方 REST 规范(不含 WebRTC) | [`docs/openapi.yaml`](docs/openapi.yaml) — 指向 Prusa 源码的链接 |
| 了解许可与知识产权边界 | [`NOTICE.md`](NOTICE.md) |
## 仓库结构
```
├── README.md ← you are here (index)
├── NOTICE.md licensing decision + Prusa-IP / firmware boundary
├── docs/
│ ├── status.md confirmed vs pending, evidence vs assumption ⭐
│ ├── protocol.md definitive wire-protocol spec (single source of truth)
│ ├── implementation.md build guide with constants & payload shapes
│ ├── reverse-engineering.md how to reproduce the RE (Ghidra, VMAs, techniques)
│ ├── tools.md every tool used
│ ├── sources.md firmware image + third-party projects referenced
│ ├── openapi.yaml Prusa's official Camera API spec (v0.22.0, REST only — no WebRTC)
│ ├── dead-ends.md errors, red herrings, corrected assumptions
│ ├── next-steps.md prioritised open work
│ ├── camerainfo-verification.md checklist that pinned the CameraInfo struct
│ └── journal/ raw research journal (archive; contains superseded claims)
├── pi-impersonator/ Python impersonator that runs on the Pi (primary impl)
│ ├── bootstrap.sh one-command fresh-Pi provisioning (run from your machine)
│ ├── deploy.sh overlay-aware deploy (dev: fast rsync; prod: maintenance dance)
│ ├── config.ini.example config template (copy → config.ini, fill in token — never commit)
│ └── systemd/ ready-to-install unit files
├── proxy/ Rust cloud-stream proxy + camera control tool
├── config/ config templates (real secrets stay out of git)
└── research/ RE helper scripts (struct generator, OTA script)
```
## 证据约定
在整个文档中:
- **已确认** / 现场验证 / 观察到 = 已在真实固件或后端中得到证明。
- **假设** / 可能 / 大概 / *猜测* = 推断得出,尚未证实。
- `` = 从真实抓包中隐去(脱敏)的值(IP、MAC、SSID、token)。请自行替换为你自己的值。
## 未包含的内容(出于特定目的)
由于知识产权(IP)原因,本仓库**未**包含 Prusa 固件二进制文件、其反编译代码以及
Ghidra 数据库——文档仅记录了*如何获取和分析它们*。请参阅
[`docs/sources.md`](docs/sources.md) 和 [`NOTICE.md`](NOTICE.md)。
标签:3D打印, Raspberry Pi, RTSP代理, WebRTC, 云资产清单, 内存执行, 协议分析, 可视化界面, 权限提升, 物联网, 逆向工具, 逆向工程, 通知系统