有个想法:买几把市面上常见的、老旧一点的二手电子门锁回来——就是前几年、甚至前年去年的那种型号,二手三手的价格比新品低一大截——然后按「电子」的方式去拆它、研究它。不是撬锁,是把它的固件、它的蓝牙通信、它和手机 App 之间的对话,一层层扒开来看。这一篇,先把这个想法的边界说清楚,然后把「该买哪几把锁、为什么买它们」的选型调研做实。
一、先把边界说清楚:这是「研究」,不是「开锁」
开头必须先把这件事定性,否则后文没法谈。
- 买回来的锁是我自己的,研究自己的设备完全合法。这和 GeekPwn 上选手买门锁回来现场破解是同一性质——安全研究。
- 红线只有一条:不对别人在用的锁动手。目标是别人家的门、别人的锁,性质就变成了非法侵入,这不在我的任何设想之内。
- 我会留好购买凭证和实验记录,所有操作只在自己搭建的测试环境里进行。
这个系列只做一件事:拆解「电子门锁」这类设备在真实世界里到底有多脆弱,以及普通人该怎么防。攻击面的研究,最终都是为了防御。
二、为什么是「二手老锁」?——这是一个选型逻辑问题
为什么不是买最新的锁,而是买旧的二手锁?这不是预算问题,是方法问题:
- 老旧型号 = 攻击面更真实。安全研究里最「好啃」的目标,永远是那些已经停产、厂商不再更新、漏洞已经公开但大量设备仍在服役的型号。它们代表的是「现实世界里的存量风险」,而不是「实验室里的理想目标」。
- 价格低,可以多买几把做对照。二手三手的旧锁几十到几百块一把,同样的预算能覆盖多个品牌、多种架构,横向对比才有意义。
- 旧锁的资料往往最全。新锁的漏洞还在保密期,旧锁的公开逆向报告、CVE、拆解视频已经铺满全网——对学习者是现成的「参考答案」。
一句话:研究旧锁,不是因为新锁安全,而是因为旧锁把「不安全」暴露得更彻底,更适合拿来当教材。且这些旧锁 仍然有很多用户在使用且漏洞是非常明显的,所以具备研究价值
三、选型调研:哪些锁「值得买回来拆」
按「公开资料充分度 + 攻击面典型性 + 二手可得性」三个维度,调研了国内智能门锁的安全研究现状。结论是下面这几类最值得入手。
3.1 果加智能门锁——国内公开逆向资料最完整的一把锁
果加是中国早期公寓市场占有率极高的品牌,被自如、万科、绿地、途家等公寓广泛使用,因此二手市场上存量巨大、价格极低。更重要的是,它是国内被逆向研究得最透彻的门锁之一:
- 2017 年 GeekPwn:安全极客在「无需物理接触、无需拆解门锁」的情况下,获得了果加互联网智能门锁的所有开锁密码。
- 2018 年 XPwn:胖猴实验室披露了果加家庭版智能门锁的两个漏洞,利用任意一个即可控制门锁。
- 2019 年:胖猴实验室再次爆料果加公寓版智能门锁存在可被恶意攻击者控制的漏洞。
- 2022 年「胖猴小玩闹」专题:胖猴实验室用整整一个系列(Part 1-7 + 番外)完整逆向分析了果加门锁,公开了从固件提取到加密算法定位的全流程。
对研究者来说,果加的价值在于:它几乎是国内唯一一把有「从 0 到 1 完整公开逆向教程」的门锁,二手又好买。作为第一把入手的目标,没有悬念。
3.2 果加门锁的技术画像——拆开它会看到什么
胖猴实验室的逆向报告,把果加门锁的技术底细扒得很清楚,这里提炼出「买回来之后我要验证什么」:
| 维度 | 果加门锁的真实情况 | 我要验证的点 |
|---|---|---|
| 主控芯片 | STM32L071RZT6(Arm Cortex-M0+ 内核) | 拆机核对芯片刻印型号 |
| 家用版通信 | BLE 蓝牙低功耗,手机 App 间接连云端 | BLE 抓包,还原开锁指令 |
| 公寓版通信 | 433MHz 射频,经网关连云端 | 射频信号是否可重放 |
| 固件形态 | 纯可执行二进制(无 Linux 文件系统,binwalk 无法识别) | IDA 手动指定 Armv7-M 加载 |
| 加密算法 | TEA 轻量级加密,密钥存于内存 0x20001848 |
定位 Encrypt/Decrypt 函数 |
| 消息格式 | 固定魔数 0xBABEC0DE 开头 + CRC 校验 |
验证帧格式是否可预测 |
这套「画像」本身就是一份极好的逆向路线图——别人已经标好了路标,我要做的是自己走一遍,并把每一步验证清楚。
这里值得把胖猴实验室「如何一步步扒开果加锁」的完整技术脉络还原出来,因为它几乎是一份现成的逆向方法论教科书:
- 逆向 App 定位关键代码:用 JEB 反编译果加 App,发现 BLE 开锁的核心逻辑在
cn.igoplus.locker.ble包,但真正的指令生成是在 native 层——libBleCmd.so这个动态库里,里面有Encrypt和Decrypt函数,命名暗示用了 TEA 加密算法。 - 从 App 提取加密常量:在
Decrypt函数的反编译代码里,找到了 TEA 算法的关键常量0xCE6D。 - 用常量在固件里定位同名函数:在 IDA 里用「搜索常量」功能(
Alt+T)搜0xCE6D,在门锁固件中定位到了对应的 Encrypt/Decrypt 函数。 - 顺藤摸瓜找消息处理逻辑:通过交叉引用,找到了 BLE 消息的魔数
0xBABEC0DE(所有消息的开头标志),以及消息预处理函数sub_800B528(负责校验消息头、CRC 校验、解密)。 - 推导内存布局:推断出解密密钥存在
0x20001848、收到的密文存在0x20002D44等关键内存地址。
这条链路有一个非常值得学习的方法论内核:面对一个「没有任何调试信息、没有任何可读字符串」的裸机固件,逆向者不能蛮干,而要借助 App 侧的加密常量作为「锚点」,在固件里反向定位对应代码。 这种「以 App 为桥,反查固件」的思路,几乎是所有 IoT 设备逆向的通用套路。
胖猴实验室给新手的三个「元启示」
除了具体的技术步骤,胖猴实验室这套逆向过程还藏着三个”元层面的启示”,比”怎么破果加锁”本身更有价值:
逆向是”考古”,不是”爆破”:他们不是”找到一个漏洞、打进去”,而是耐心地、一层层地还原整个系统的设计逻辑——先搞清芯片是什么、固件怎么存、加密用什么算法、消息什么格式。逆向的本质是”还原作者的思路”,而不是”找一个可以打的点”。
App 是”最软的柿子”:很多人一想到”逆向门锁”,就直奔”拆芯片、接调试口”。但胖猴实验室的路径恰恰相反——先捏最软的 App(有符号、有逻辑、能反编译),从 App 里拿到”锚点”,再反推最硬的固件。这个”从软到硬”的顺序,是新手最容易忽略、也最该学的。
公开研究是”站在巨人的肩膀上”:果加之所以值得研究,很大程度上是因为胖猴实验室把它”研究透了、还公开了”。公开的逆向报告,是后来者最好的教材。 这也提醒我们:安全研究的价值,不只在于”发现了漏洞”,更在于”把方法讲清楚、让别人能接着做”。
这三个启示,其实回答了一个更根本的问题:一个没有任何逆向基础的人,能不能入门 IoT 硬件安全? 答案是——能,只要你愿意从”最软的地方”(App)开始,从”别人公开的成果”(逆向报告)学起,一步一步往”最硬的地方”(芯片)走。 果加 + 胖猴实验室,恰好提供了这样一条现成的路。
3.3 耶鲁(Yale)智能门锁——海外品牌的「对照样本」
胖猴实验室的 Part 3 专题还逆向过耶鲁品牌的智能门锁,同样是 BLE 方向,重点分析了安卓 App 端的代码,并计划用 USB dongle 嗅探 BLE 通信。它的价值在于提供跨品牌的横向对照:同样的 BLE 攻击思路,在不同厂商的实现里,弱点出现在不同的地方。
3.4 海康萤石智能门锁——「网关型」锁的样本
看雪论坛上有一篇海康萤石智能门锁网关的分析,展示了另一类架构:锁本身不直接联网,而是通过网关(Hub)转接云端。这类锁的攻击面从「锁本身」转移到了「网关」——网关往往是一台小型 Linux 设备,攻击面反而更大。如果预算允许,收一套带网关的旧萤石锁,能补上「网关侧安全」这个重要课题。
四、四条攻击路线,对应四类工具
把「电子方式破解门锁」这件事,落到可执行的路线图上:
| 攻击路线 | 核心思路 | 需要的工具 | 成本 |
|---|---|---|---|
| ① BLE 抓包与重放 | 嗅探手机开锁的蓝牙指令,分析协议,尝试重放 | nRF52840 Dongle / Ubertooth | ¥100-200 |
| ② 固件提取与逆向 | 从 App 抓固件下载地址(Fiddler),或用调试口 dump,再 IDA 分析 | Fiddler、USB-TTL、IDA/Ghidra | ¥20-50 |
| ③ App 逆向 | 反编译配套 App,找 BLE 指令生成逻辑、密钥 | JEB/Jadx、IDA | 0(软件) |
| ④ 物理调试口 | 找 UART 调试口,进 shell 或读固件 | USB-TTL 转接板、万用表 | ¥10-20 |
四条路线里,②③ 是胖猴实验室已经完整走通的(他们正是用 Fiddler 抓到了果加固件下载地址,再结合 App 逆向定位了 TEA 算法),所以对我这个「实践新手」来说,果加 + 路线②③ 是最优的入门组合:有参考答案,能边做边对。
下面把这四条路线的具体步骤再展开一层,方便后续动手时对照:
① BLE 抓包与重放:用 nRF52840 Dongle(刷上 Wireshark 配套的 sniffer 固件)靠近门锁,在手机开锁的瞬间捕获蓝牙空中数据包;然后分析这些包的格式——哪些是「开锁指令」、有没有加密、有没有随机数防重放。如果厂商为了省功耗去掉了「每次开锁用不同随机数」的握手,那么抓到的一条「开锁指令包」,就能原样重放,实现「隔空开锁」。
② 固件提取与逆向:先在手机上装 Fiddler 的根证书、开代理,再触发 App 的「检查更新」,就能抓到门锁固件的下载 URL,把 .bin 文件拉下来;接着用 IDA(手动指定 Armv7-M 架构、ROM 起始地址 0x08000000)加载,从中断向量表找到入口点开始反汇编。
③ App 逆向:用 JEB 或 Jadx 反编译 App,重点看 ble 相关的包和 native 库(.so 文件);这些 native 库里藏着 BLE 指令的生成逻辑和加解密函数,是「还原开锁协议」的关键。
④ 物理调试口:拆机找 UART 焊盘,用万用表识别 GND/TX/RX,接 USB-TTL 转接板读启动日志;运气好的话能直接进 shell 或 U-Boot,把 Flash 里的固件整段 dump 出来。
四条路线的「依赖关系」:不是并列,而是递进
很多人会把上面四条路线理解成”四个并列的可选项”,但实际上它们是有依赖关系的递进链条:
1 | ③ App 逆向(先) |
这个依赖关系,决定了动手的顺序也应该遵循它:
- 先做 ③:App 逆向是”性价比最高”的起点——零硬件成本,却可能直接挖出加密算法和密钥。
- 再做 ②:用 App 里挖到的”锚点”(如 TEA 常量
0xCE6D)去固件里定位对应函数,事半功倍。 - 然后 ①:带着已知的协议格式去抓 BLE 包,你才知道”该看哪些字段”。
- 最后 ④:如果前三步都卡住了(比如固件加密、协议未知),才需要动用物理调试口”暴力”读固件。
换句话说,门锁逆向不是”挑一条路走到底”,而是”按依赖顺序,四条路都走一遍,互相印证”。 这也是胖猴实验室系列给新手最大的启示:他们的成果,是四条路”合围”的结果,而不是单点突破。
为什么「果加」是最优的「第一把锁」——三条理由
前面 3.1 说”果加作为第一把入手的目标没有悬念”,这里把理由讲透,因为它其实是一个”选型方法论”的示范:
资料最全 = 学习成本最低:胖猴实验室的 Part 1-7 系列,已经把”从固件提取到加密算法定位”的每一步都写清楚了。对学习者来说,这等于有了”参考答案”——你逆向遇到瓶颈,可以回头查”别人是怎么过的这一关”。“有参考答案”和”盲人摸象”,学习效率差一个数量级。
二手便宜 = 试错成本低:果加是早期公寓市场霸主,二手市场上几十到一百多块就能收到。这意味着你可以放心拆、放心接调试口、放心试错——拆坏了不心疼,才能放开手脚学。 如果用一把几千块的新锁学逆向,反而会束手束脚。
架构典型 = 迁移价值高:果加用的是 STM32L071(Arm Cortex-M0+),这是嵌入式世界最主流的芯片家族之一。你吃透了它的逆向方法,换一把同样用 STM32 的门锁、手环、传感器,方法是通用的。学的是”果加”,练的是”整个 STM32 生态”的逆向功夫。
这三条理由,其实可以套用到任何”买设备来学安全”的选型上:优先选”资料全、便宜、架构典型”的目标。 反过来,最该避开的,是”资料零、贵、架构冷门”的设备——那不是学习,是自讨苦吃。
五、我的计划与装备清单
分三步走:
- 选型采购(现在):先收一把果加家庭版/公寓版二手锁,价格低、资料全。
- 软件侧动手(第一批):逆向果加 App,用 Fiddler 抓固件,尝试定位 BLE 指令与加密逻辑——这一步几乎零硬件成本。
- 硬件侧动手(第二批):拆机核对芯片,接 UART 调试口,用 nRF52840 抓 BLE 空中包,验证重放可行性。
装备清单(按需逐步添置,不一步到位):
| 装备 | 用途 | 预估成本 |
|---|---|---|
| 二手果加门锁 | 主角 | ¥50-150 |
| nRF52840 Dongle | BLE 抓包嗅探 | ¥100-200 |
| USB-TTL 转接板 | UART 调试口 | ¥10-20 |
| 万用表 + 螺丝刀/撬片 | 拆机、测引脚 | ¥50-80 |
起步成本大约 ¥200-400,符合「二手低价」的思路。
一条「预算友好的采购清单」:先买什么、后买什么
把装备清单按”优先级 + 依赖关系”重新排一下,会更实用——因为你不必一次买齐,而是按学习进度”滚雪球”:
| 阶段 | 买什么 | 花费 | 能做什么 |
|---|---|---|---|
| 第一批(软件侧) | 二手果加锁 + Fiddler + JEB/Jadx | ¥100-200 | 逆向 App、抓固件、定位加密逻辑(零硬件) |
| 第二批(物理侧) | 螺丝刀 + 撬片 + 万用表 + USB-TTL | ¥100 | 拆机、找调试口、读串口日志 |
| 第三批(无线侧) | nRF52840 Dongle | ¥100-200 | BLE 抓包、验证重放 |
| 第四批(进阶) | 逻辑分析仪 / 编程器 | ¥100-200 | SPI 嗅探、Flash 直读 |
这份清单的排序逻辑是:先”软件”(零硬件成本,最便宜),再”物理”(拆机找接口),再”无线”(抓蓝牙),最后”进阶”(深入芯片)。 每一批的产出,都是下一批的前提——先逆向出 App 里的加密逻辑,才知道抓 BLE 包时要”看什么字段”;先拆机找到调试口,才谈得上”从 UART 读固件”。
总预算约 ¥500-700,分四批投入,就能走完整条”门锁逆向”链路。 这和”一次买几千块的设备、却不知道从哪下手”相比,是更聪明、也更符合”二手低价”思路的路径。
六、普通人怎么防:从「门锁脆弱性」反推防御
研究攻击面的最终目的,是搞清楚「普通用户到底该怎么选、怎么防」。把上面的攻击路线反过来看,能得出几条非常实用的结论:
- 优先选大牌、在售、持续更新的型号:虽然我也研究旧锁,但那是「研究用」。普通人买锁,恰恰要反着来——选大牌在售款,因为它们在出厂前经过了更严格的安全测试,且漏洞能被及时 OTA 修复。旧锁的问题不是「能被研究」,而是「被研究出漏洞后没人修」。
- 看它有没有「物理防拆 + 电子防拆」双保险:拆机是很多攻击的第一步,好的门锁在撬开面板时会触发报警、甚至锁死电路。买锁时可以问一句「有没有防拆报警」。
- 蓝牙开锁尽量用「带独立安全芯片」的型号:安全芯片(SE,Secure Element)能把密钥存在一个物理上难以读取的独立硬件里,而不是存主控的 Flash 里——这直接抬高了「固件逆向 + 密钥提取」的门槛。
- 机械锁芯仍然是最后一道防线:电子门锁再先进,也建议保留一个高安全等级的机械锁芯(C 级)作为备用。电子攻击再厉害,也绕不开这道「物理底线」。
- 联网功能能关就关:如果不需要远程开门,就关闭门锁的 Wi-Fi/网关功能。多一条联网通道,就多一个攻击面。
一句话总结:普通用户和研究者走的是相反的路——研究者买旧锁,是为了看清「不安全长什么样」;普通用户买新锁,是为了让自己「离那种不安全远一点」。
六·补:一个「零基础」也能照做的第一个实验
看完上面的路线图,你可能想知道「我到底该怎么开始第一步」。这里给一个完全不依赖「买锁」就能做的热身实验,先把工具链跑通:
实验目标:用 nRF52840 Dongle 抓到一部手机的蓝牙广播
- 买一块 nRF52840 Dongle(约 100-200 元,淘宝/官方渠道都有)。
- 刷 sniffer 固件:用 Nordic 官方的 nRF Connect 桌面工具,把 Dongle 刷成「BLE Sniffer」模式。
- 配 Wireshark:装好 Wireshark,导入 Nordic 的 sniffer 插件。
- 抓包:手机打开蓝牙,在 Wireshark 里就能看到手机发出的 BLE 广播包(Advertising Packet)——里面有手机的 MAC 地址、设备名、广播数据。
这个实验的「价值」不在于抓到了什么(蓝牙广播本来就是公开的),而在于你把「BLE 抓包」这条工具链跑通了。跑通之后,再面对门锁、手环、智能锁的 BLE 通信,你才知道「信号是怎么被抓下来、怎么被分析」的。它相当于「硬件安全」的 Hello World。
同样的热身还有:
- 用 USB-TTL 转接板接一块开发板(如 ESP32),读串口日志——练「找 TX/RX、设波特率」;
- 拆一台旧路由器,用
binwalk拆它的固件——练「固件分析」。
这几件事做完,你就不再是「纸上谈兵」,而是真正摸过工具、见过信号的人了。 这也是我买锁回来之前,想先让自己具备的基本功。
七、结语:从「写设备」到「摸设备」
这个系列对我自己有个特殊的意义。过去我写了很多安全文章,但坦诚地讲,不少内容是资料研究,设备我并没有真正摸过。买几把二手锁回来拆,是想把这件事从「纸上」落到「手上」。
后面的每一篇,我都会如实记录:哪一步成功了、哪一步卡住了、我猜错了什么。失败的过程,和成功一样有记录价值——因为真实的安全研究,本来就是反复试错,而不是照着答案念。
下一期,我会从「收到第一把锁 + 逆向果加 App」开始,把这套方法真正落到一次动手实践上。
最后,把这一篇的核心判断再钉一次:研究二手门锁,不是”玩票”,而是一次严肃的”从资料研究转向硬件实战”的转身。 我过去写的很多安全文章,素材来自公开资料,设备并没有真正摸过。买几把锁回来拆,是为了把”纸上谈兵”变成”手上见真章”。无论最终破得开还是破不开,这个过程本身,就是我想要的那一类内容——真实、可复现、有血有肉。
如果你也曾经”写了很多设备相关的文章,却从没摸过那台设备”,那这个系列,或许就是给你的一个示范:设备不贵,门槛不高,缺的只是一次”真的下单买回来”的决心。
素材来源与延伸阅读:
- 胖猴实验室「智能门锁与BLE设备安全」专题(果加门锁全面分析:STM32L071 芯片、Fiddler 抓取固件、IDA 逆向、TEA 加密、0xBABEC0DE 魔数)
- 胖猴小玩闹 Part 3:耶鲁智能门锁分析(BLE 方向、App 逆向、USB dongle 嗅探)
- 看雪论坛《海康萤石智能门锁的网关分析》(网关型锁架构逆向)
- 2017 GeekPwn 果加互联网智能锁破解(央广网/中新网报道)
- 2018 XPwn / 2019 胖猴实验室果加门锁漏洞披露(嘶吼报道)
- 相关文章:你家的智能设备,可能正被当「肉鸡」用:IoT 安全审计入门
评论