嘶吼RoarTalk2:对一款BLE灯泡的分析,【胖猴小玩闹】Part( 二 )


图3.1nRFConnectScan界面
嘶吼RoarTalk2:对一款BLE灯泡的分析,【胖猴小玩闹】Part
文章图片
在Scanner界面下 , 点击右上角的SCAN按钮开始扫描 。 在本专题第一篇文章中 , 我们介绍了Master和Slave的各种状态 , nRFConnect扫描时 , Android手机作为Master , 会接收周围各个Slave发出的广播包 , 这些广播包里包含了Slave的信息 。 点击扫描到的设备会展示nRFConnect从该设备的广播包里解析出来的信息 , 在详细信息页面中点击RAW按钮 , 会显示该设备广播包的原始二进制数据 。
B、与BLE设备进行通信
在Scanner界面下 , 点击CONNECT按钮即可向设备发起连接 , 连接建立之后就可以进行通信了 , 如图3.2所示 。
嘶吼RoarTalk2:对一款BLE灯泡的分析,【胖猴小玩闹】Part
文章图片
图3.2与BLE设备进行通信
读取Characteristic即为手机接收BLE设备的消息 , 写入Characteristic则代表向BLE设备发送消息 。
C、作为Advertiser发送广播包
此外 , nRFConnect还可以作为Slave , 进入Advertiser状态 , 向周围不断地发送广播 , 如图3.3所示 。
嘶吼RoarTalk2:对一款BLE灯泡的分析,【胖猴小玩闹】Part
文章图片
图3.3模拟Advertiser状态
在Advertiser状态下会持续发送广播包 , 广播包中包含了对于本设备的简单描述信息 , nRFConnect可以模拟其中5个基本信息 , 如TXpower、ManufacturerData等 。
3.2控制灯泡亮度
结合日志的分析结果 , 可以使用nRFConnect完成灯泡亮度的控制 , 具体的操作步骤如下:
1)在nRFConnect中 , 通过设备的MAC地址 , 找到需要操作的灯泡 , 如图3.4所示;
嘶吼RoarTalk2:对一款BLE灯泡的分析,【胖猴小玩闹】Part
文章图片
图3.4在Scanner状态下找到灯泡
2)与灯泡建立BLE连接 , 并找到需要写入的Service和Characteristic的UUID , 如图3.5所示;
嘶吼RoarTalk2:对一款BLE灯泡的分析,【胖猴小玩闹】Part
文章图片
图3.5与灯泡建立BLE连接
3)以hex形式 , 向Characteristic写入控制灯泡亮度的通信数据 , 如图3.6所示 。
嘶吼RoarTalk2:对一款BLE灯泡的分析,【胖猴小玩闹】Part
文章图片
图3.6向Characteristic写入数据
我们直接将灯泡亮度设置为0% , 如图3.7所示 , 点击SEND之后 , 可以看到灯泡的亮度随之出现了变化
嘶吼RoarTalk2:对一款BLE灯泡的分析,【胖猴小玩闹】Part
文章图片
图3.7调整灯泡亮度为0
4.总结
我们在这篇文章中 , 从app日志入手 , 分析了智能灯泡的BLE通信内容 , 随后使用nRFConnect直接与灯泡进行BLE通信 , 从而实现控制灯泡亮度的目的 。 上述分析表明 , LifeSmart与BLE智能灯泡之间并没有严格的绑定关系 , 所谓的“绑定”步骤 , 仅仅是app本地登记一下需要控制的智能灯泡 , 方便了下次操作 , 但BLE智能灯泡本身并不知道自己被绑定给了谁 。
本篇作为《胖猴小玩闹》专题的入门文章 , 分析就到此结束了 。 本系列后续文章中 , 我们会遇到更复杂的情况 , 如加壳、加密等等 , 届时会介绍更多的工具和方法 , 欢迎各位读者和我们一起探索 。
此外 , 为了激发大家的学习兴趣 , 给大家提供更多的动手实践机会 。 这里我们提出一个小问题 , 请感兴趣的读者可以将答案发送到胖猴实验室的邮箱(pwn@pwnmonkey.org) , 我们会挑选1-3位读者送上这篇文章中用到的智能灯泡 , 方便大家课外练习(由于还没回公司 , 尚不确定有几个灯泡 , 但至少有1个 , 就是图3.7中的那个) 。
今日问题是:请模拟一个Apple设备的广播 , 要求如图4.1中红框部分 , ManufacturerData部分的Company显示为Apple.Inc , 其他信息不做要求 。 将Advertisers设置界面(即图3.3所示界面 , 不同版本的nRFConnect , 该界面可能略有不同)的截图发送到胖猴的邮箱即可 。


推荐阅读