NEE's Blog

逆向工程 Kickstarter 智能眼罩:从蓝牙协议到全用户 EEG 数据泄露

February 15, 2026

本文翻译自 Reverse Engineering a Sleep Mask,原载于 Hacker News。

起因

作者最近从 Kickstarter 众筹平台上入手了一款智能睡眠眼罩。本来只是想改善睡眠质量,没想到最后竟然获得了读取陌生人脑电波并向其发送电刺激脉冲的能力。

这款眼罩来自一家中国的小型研究公司,硬件配置相当硬核:

  • EEG 脑电监测:实时监测大脑活动
  • EMS 电肌肉刺激:眼部周围的微电流刺激
  • 振动马达:温和唤醒
  • 加热功能:舒缓眼部疲劳
  • 音频播放:白噪音或冥想音乐

不过官方 App 还不够成熟,经常断连。于是作者决定让 Claude(Opus 4.6)帮忙逆向工程蓝牙协议,自己做一个简洁的 Web 控制面板。

蓝牙协议逆向

Claude 首先扫描附近的 BLE(Bluetooth Low Energy)设备。在 35 个设备中找到了目标眼罩,成功连接并映射出接口——两个数据通道:一个发送命令,一个接收流数据。

接下来是协议猜解。Claude 尝试了大约一百种不同的命令模式:Modbus 帧、JSON、原始字节、常见协议头…遗憾的是,设备毫无反应。显然,这不是一个标准协议。

反编译 Android App

既然协议无法直接猜出,Claude 转向了官方 App。

  1. 获取 APK:下载 Android 安装包
  2. 反编译:使用 jadx 工具

但问题来了——这个 App 是用 Flutter 开发的。

Flutter 的特殊性在于:它将 Dart 源代码编译成原生 ARM64 机器码,而不是像传统 Android 应用那样使用 Java/Kotlin 字节码。这意味着你无法像反编译普通 Android 应用那样直接读取代码逻辑。真正的业务逻辑被封装在一个 9MB 的二进制文件中。

strings 命令的威力

即使是编译后的二进制文件,也包含大量字符串:错误消息、URL、调试日志。

Claude 对二进制文件运行了 strings 命令,这成为整个会话中最有成效的一步。在成千上万行 Flutter 框架的噪音中,找到了关键信息:

  • 硬编码凭证:公司消息代理服务器的用户名密码(每份 App 副本共享同一套凭证)
  • 云 API 端点
  • 15 个命令构建函数名:振动、加热、电刺激等所有功能的函数名
  • 协议调试消息:揭示了数据包结构——头部、方向字节、命令类型、负载、尾部

至此,协议的轮廓已经清晰。但还差实际的字节值。

Blutter:Flutter 逆向神器

Claude 使用了 blutter——一个专门用于反编译 Flutter Dart 快照的工具。它能够重建带有可读注释的函数。

通过分析反编译结果,Claude 成功破译了编码方式,直接从每个函数中读出了所有命令字节。15 个命令,完整映射。

成功控制设备

Claude 发送了一个 6 字节的查询数据包。设备返回了 153 字节的数据:

  • 型号、固件版本、序列号
  • 8 个传感器通道配置:EEG(250Hz)、呼吸、3 轴加速度计、3 轴陀螺仪
  • 电池电量:83%

所有功能都正常工作:振动控制、加热、EMS 电刺激、音乐播放。Claude 还做了一个简洁的 Web 控制面板,用滑块控制所有参数。

到这里,故事本该结束了。

意外发现:所有人的脑电波

还记得之前发现的硬编码凭证吗?

Claude 尝试用这些凭证连接公司的 MQTT 代理服务器。MQTT 是物联网领域标准的发布/订阅消息系统,设备发布传感器数据,订阅控制命令。

连接成功。然后开始接收数据。不仅是作者自己的设备——是所有设备

大约 25 台活跃设备在发送数据:

  • 睡眠眼罩:实时发布 EEG 脑电波数据
  • 空气质量监测器:报告温度、湿度、CO2
  • 存在传感器:检测房间是否有人

Claude 捕获了几分钟来自两台活跃睡眠眼罩的 EEG 数据:

  • 一位用户似乎处于 REM 睡眠期(快速眼动期,混合频率活动)
  • 另一位处于深度慢波睡眠(强 delta 波,频率低于 4Hz)

来自世界各地真实用户的真实脑电波。

电刺激的安全风险

眼罩还支持 EMS(电肌肉刺激)功能,控制命令很简单:模式、频率、强度、持续时间。

由于所有设备共享相同的凭证和同一个消息代理,如果你能读取某人的脑电波,你也能向他们发送电刺激脉冲

安全披露

出于显而易见的原因,作者没有在文章中透露产品或公司名称,但已经联系厂商告知这一安全问题。

这件事让作者重新思考了 Karpathy 的 Digital Hygiene 文章,建议你也读一读。


关键启示

  1. 物联网安全任重道远:硬编码凭证、共享消息代理、缺乏设备认证,这些低级错误在消费级 IoT 设备中仍然普遍存在

  2. Flutter 不是安全的混淆方案:虽然 Flutter 编译成原生代码,但 blutter 等工具可以有效地反编译,字符串分析仍然暴露大量信息

  3. AI 大幅降低逆向工程门槛:蓝牙扫描、APK 反编译、Dart 二进制分析、MQTT 发现——Claude 在 30 分钟的自主会话中一气呵成。这既是生产力的提升,也意味着攻击者可以更容易地发现漏洞

  4. 医疗/健康数据的敏感性:脑电波数据、睡眠模式、心率变异性…这些生物识别数据的泄露比普通隐私泄露严重得多

  5. 负责任的披露:发现漏洞后联系厂商而非公开 exploiting,这是正确的做法


整个逆向工程过程——蓝牙协议分析、APK 反编译、Dart 二进制分析、MQTT 发现——由 Claude(Opus 4.6)在 30 分钟的自主会话中基本一次性完成。

comments powered by Disqus