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, 云资产清单, 内存执行, 协议分析, 可视化界面, 权限提升, 物联网, 逆向工具, 逆向工程, 通知系统