Roborock Local Server 逆向工程揭秘:如何让扫地机把云端请求打到你的本地服务器

发布时间:2026/10/23 7:34:11

Roborock Local Server 逆向工程揭秘:如何让扫地机把云端请求打到你的本地服务器 【免费下载链接】local_roborock_serverLocal HTTPS and MQTT cloud emulator for Roborock vacuums without rooting or hardware modifications项目地址https://gitcode.com/gh_mirrors/lo/local_roborock_server点击查看免费下载一、为什么扫地机离不开云端Roborock Local Server 是一个开源的本地 HTTPS 和 MQTT 云端模拟器它能把 Roborock石头科技扫地机的所有云端请求重定向到你局域网里的服务器无需 root、无需拆解硬件即可让扫地机、实时地图和本地控制完全脱离官方云。要理解它怎么做到这一点先要知道扫地机与官方云之间的三条通信链路协议用途REST (HTTPS)配对、登录、地图数据等主要发生在 onboarding配对阶段MQTT (TLS)云端与扫地机之间的命令/状态通道TCP (本地)手机 App 与扫地机在局域网内的直连通信 过去的两个枷锁地图被云锁定—— 尽管地图数据就存在扫地机本地但 Roborock 强制所有地图请求走官方云服务器云端健康检查—— 一旦扫地机连不上官方服务器它会反复重启自己的网络接口本地通信随之中断。Local Server 的思路就是在配对阶段接管扫地机让它把 REST 和 MQTT 的目的地都指到你的本地服务器。二、逆向工程全链路从抓包到公钥恢复下面按项目 docs/technical_writeup.md 中作者本人的逆向笔记还原整条技术路线。1. 抓包逆向摸清 onboarding 协议最初团队使用 mitmproxy 抓取全部 REST 报文和加密的 MQTT 消息再用 Wireshark rvictl 让 iPhone 流量经过 Mac观察本地 TCP 连接上部分明文消息。这条路线搞清了基础流程但当不同机型的参数、方法各不相同时就触及了天花板。随后转向App 逆向用 jadx 反编译 Roborock APK 得到 onboarding 与 REST 请求的基础逻辑再用 python-roborock 的函数下载任意机型的 React Native bundleHermes 字节码用 hermes-dec 反编译后拆分成约 3000 个可读的 JS 文件拿到各机型的命令、属性和状态码。 关键洞察配对流程是控制一切的入口。作者用自己的电脑模拟手机/扫地机两端反复往返抓包最终完整复现了 onboarding 流程手机生成密钥对向扫地机发送hello和自己的公钥扫地机用该公钥加密返回会话密钥手机用会话密钥AES 加密下发 Wi-Fi 配置和token含地区码r扫地机把地区码注入模板api-%s.roborock.com然后请求/region端点附带设备 ID、产品 ID、nonce 和一个RSA 签名signature。2. 关键转折向扫地机注入自定义 URL配对报文中的地区码会被注入 URL 模板而扫地机对注入内容没有长度限制、也不做任何净化。作者把token.r设为myserver.domain.com/扫地机请求的地址就变成了自己控制的服务器 —— 域名注入成功但当时的死胡同在于官方服务器返回的 region 信息是用存放在 Roborock 服务器上的公钥加密的本地没有这把公钥扫地机就不认你的响应。而私钥又锁在扫地机固件里root 刷自定义固件才能拿到。这条路在 2025 年初被判了死刑。3. 神来之笔用 GCD 从签名里恢复公钥2026 年作者借助 AI Agent 重新出发给 Agent 提供 root 后的 S7 SSH 权限、固件文件、python-roborock 库、APK 反编译结果以及把固件跑进 QEMU ARM chroot 的模拟器让 Agent 可以在本地反复验证假设。Agent 最终指出突破口就在/region请求里的那个signature参数。数学原理其实很巧妙RSA PKCS#1 v1.5 签名是确定性的sig pad(SHA256(msg))^d mod n其中pad()是固定的 ASN.1 前缀 哈希验证等式为sig^e mod n pad(SHA256(msg))公开指数e 65537已知sig、可自行计算pad(SHA256(msg))唯一的未知数是模数n即公钥本体变形得sig^e - pad(SHA256(msg)) k * n也就是差值是n的整数倍收集两条不同查询串带签名的请求各算一次差值再取最大公约数GCD剔除小素因子后就是n。一句话总结不需要私钥不需要破解 RSA只需要两条带签名的请求和一次 GCD。拿到模数后用n e65537重建完整公钥就能像官方服务器一样加密 bootstrap 响应扫地机完全无法分辨。这部分实现位于 device_key_recovery.py使用 gmpy2 处理 2048 位大数运算。4. MQTT 桥接最简单的一环TLS 证书问题因为域名是自己注入的而变得平凡。真正有意思的是 MQTT 消息路由。每台设备有 4 类主题rr/d/i/{did}/{mqtt_user}—— 扫地机 → 服务器rr/d/o/{did}/{mqtt_user}—— 服务器 → 扫地机rr/m/i/{...}/{userid}/{duid}—— 用户App→ 服务器rr/m/o/{...}/{userid}/{duid}—— 服务器 → 用户所谓云端做的核心事情就是把rr/m/i上的消息转发到对应的rr/d/o把rr/d/i上的消息转发到rr/m/o。这个桥接逻辑实现在 topic_bridge.py用两条正则分别匹配两类主题即可完成转发。5. 官方 App 重定向最后让手机端也入伙用 MITM 抓取 App 登录时返回的 user data内含所有 Roborock 服务器 URL把 URL 全部改写成你的本地服务器地址App 后续所有 API 调用就都打向本地了之后可以关掉 MITM。项目提供 mitm_redirect.py 脚本完成这一步详见 docs/roborock_app.md。三、项目结构每个机关在哪里如果你想对照源码理解整套机制这几个位置最值得看bootstrap 路由扫地机配对时请求的/region、/nc、/time等端点routes/bootstrap/其中 region.py 和 nc_prepare.py 就是 URL 注入后扫地机最先打到的接口响应会用恢复出的公钥加密。公钥恢复算法device_key_recovery.py签名采样、GCD 求模数、公钥验证都在这里。MQTT Broker 与主题桥mqtt_broker_server/ 提供 TLS MQTT 服务topic_bridge.py 负责rr/d/*与rr/m/*的双向转发。本地 API 路由表endpoint_rules.py 集中注册了 v1~v5 的登录、用户、设备、场景等全部端点相当于迷你 Roborock 云的路由索引。配对脚本在第二台电脑上运行start_onboarding.py 与 Web 版 start_onboarding_gui.py。四、快速上手从克隆到配对完成⚠️ 前置要求一个你拥有的域名子域名需以api-开头如api-rr.example.com、能改写本地 DNS 的网络Pi-hole / AdGuard Home / 路由器、以及一台用于配对的辅助电脑。安装—— 按 docs/installation.md 用 Docker Compose 或 Home Assistant 插件方式部署并先用 admin 面板完成云端数据导入家庭、房间、已知设备清单。注意主机名去掉api-前缀后加:端口/不能超过 32 字符短域名更安全。选择证书路径—— 不同机型信任不同的证书链先查 docs/tested_vacuums.md多数用户选 ZeroSSL老机型可考虑 Actalis。运行配对—— 在第二台电脑上执行引导脚本详见 docs/onboarding.mduv run start_onboarding.py --server api-rr.example.com脚本会提示你重置扫地机 Wi-Fi、切到扫地机热点、再切回家用 Wi-Fi然后轮询服务器等待签名样本增加、公钥恢复完成。观察结果—— 首次配对通常会增加签名采样数若公钥尚未确定再跑 1~3 个配对周期直到提示 Public Key determined 且扫地机显示已连接本地服务器。手机 App 接入—— 按 docs/roborock_app.md 完成官方 App 重定向或改用开源的 LocalRock 直连。✅ 至此扫地机的 REST、MQTT 流量全部落在你的局域网里。想撤回重置扫地机 Wi-Fi 即可回到出厂配对模式整个过程可逆且风险极低。五、已知限制与兼容性暂不支持入门级 Q 系列如 Q7注意不是 QRevo因为证书校验方式不同固件更新、定时任务Schedules暂不可用场景Routines/Scenes正常国行机型在境外使用会被固件rrcheck区域校验拒绝相机直播流需配合 TURN 中继仅验证过 Saros 10R 和 Qrevo MaxV。完整清单见 docs/known_limitations.md。写在最后这套方案最精妙之处在于它是一个零风险利用攻击面需要物理接触扫地机和你的局域网且几秒即可撤销。作者也坦承——Roborock 本可以让地图请求走本地连接让设备 100% 离线工作。Local Server 用一次教科书级的协议逆向确定性签名 GCD 公钥恢复把这件事变成了现实。如果你想动手从 docs/index.md 的文档索引开始即可。赞分享【免费下载链接】local_roborock_serverLocal HTTPS and MQTT cloud emulator for Roborock vacuums without rooting or hardware modifications项目地址https://gitcode.com/gh_mirrors/lo/local_roborock_server点击查看免费下载相关推荐如何让Roborock扫地机器人真正融入你的智能家居系统你是否曾经遇到过这样的困扰想要远程控制扫地机器人却不得不在手机App和HomeAssistant之间来回切换现在通过homeassistant robo物联网智能家居推荐本地Web服务器——local-web-server推荐本地Web服务器——local web server 在开发过程中一个强大且灵活的本地Web服务器是必不可少的工具今天我们要向你推荐的就是这样一个利器开发工具后端如何免密钥激活 Windows 11 与 OfficeMAS 脚本 3 种方式一条命令搞定如何免密钥激活 Windows 11 与 OfficeMAS 脚本 3 种方式一条命令搞定 MAS 激活脚本Microsoft Activation Scr运维上一篇MoviePilot终极指南如何实现NAS媒体库的智能洗版与自动化升级下一篇Nintendo Switch大气层系统5步掌握最稳定的破解方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/23 7:29:10

从零跑通 Pokemon Auto Chess:本地部署完整指南

从零跑通 Pokemon Auto Chess:本地部署完整指南 【免费下载链接】pokemonAutoChess Pokemon Auto Chess Game. Made by fans for fans. Open source, non profit. All rights to the Pokemon Company. 项目地址: https://gitcode.com/GitHub_Trending/po/pokemonA…

2026/10/23 10:45:12

credui.dll丢失怎么修复?系统文件恢复与DLL报错排查全攻略

今天在帮朋友处理一台电脑时,又看到那个熟悉的弹窗:打开某个软件,屏幕中间窜出一句“无法启动此程序,因为计算机中丢失credui.dll”,点“确定”之后,软件要么直接没反应,要么勉强能进但功能残缺…

2026/10/23 10:45:12

GnConv注入YOLO26:高阶空间交互提升小目标检测实践

1. 从一次模型迭代说起:为什么我会盯上GnConv 做目标检测的都知道,YOLO系列走到今天,骨干网络和颈部结构的成熟度已经非常高,常规的卷积替换、注意力插入、特征融合优化,能榨的汁基本都榨得差不多了。我今年在某个项目…

2026/10/23 10:45:12

ChatGPT提示词四模式:K12教师即学即用的Prompt工程指南

简介:本资源是一份面向K12教育工作者、AI初学者及自然语言处理实践者的ChatGPT高效交互指南,聚焦Prompt工程核心方法论,解决“如何精准提问、结构化指令、角色化引导以获得高质量输出”这一关键问题。PDF文档系统梳理了四大实用模式&#xff…

2026/10/23 10:45:12

IEC 61508-1功能安全母标准解读:安全生命周期与合规实践

简介:IEC 61508-1:2010《电气/电子/可编程电子安全相关系统的功能安全 第1部分:一般要求》是功能安全领域的基石性国际标准,面向汽车电子、工业控制、轨道交通等行业的系统工程师、安全评估人员及认证从业者。该标准为E/E/PE安全相关系统的设…

2026/10/23 10:45:12

大模型参数高效微调(PEFT)实战指南:从LoRA到QLoRA

大模型这波浪潮里,预训练是在“烧钱买地基”,全量微调则是“拿整栋楼重新装修”。几年前我们拿到一个开源底座模型,第一反应就是全量参数丢上去跑几个 epoch,效果不够就加数据加 GPU。现在这个玩法越来越奢侈:动辄几十…

2026/10/23 10:40:09

OPcache配置陷阱:代码更新不生效?

1. 引言很多朋友在部署 PHP 项目时都遇到过这样一个诡异的现象:明明把代码改好了,上传到服务器,刷新页面却还是老样子。清浏览器缓存没用,重启 Nginx 也没用,折腾半天才发现问题出在 OPcache 上。今天这篇文章就结合我…

2026/10/22 11:29:28

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/23 0:02:26

Verilog实现FPGA密码锁:矩阵键盘与状态机设计实战

说实话,这几年接触了不少想入门FPGA的朋友,如果你问哪个项目能一口气把Verilog的核心基本功串起来,我通常会推荐电子密码锁。这个项目看着不起眼,却把矩阵键盘扫描、按键消抖、状态机设计、动态显示刷新、外设控制这些数字逻辑里的…

2026/10/23 0:02:26

数据服务监控运维实战:从指标体系到告警治理与故障排查

周末凌晨两点,手机震了。第一反应是“数据服务挂了”。打开电脑看了下,果然,某张核心报表的数据产出时间已经超过SLA两小时,下游三个业务方连着发来问询。这种场景,做过大数据运维的人都不会陌生。数据服务的监控与运维…

2026/10/23 0:02:26

FreeRTOS任务通知实战详解:内核原理、API与避坑指南

裸机编程切到RTOS之后,任务之间的通信和同步永远是躲不开的坎。前面聊过队列、信号量、互斥锁、事件组,这次把FreeRTOS任务通知(Task Notification)单独拎出来讲透。原因很简单:任务通知是FreeRTOS里最容易用错、也最容…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑