蓝牙协议HCI抓包实验

蓝牙协议HCI抓包实验 实验准备 实验硬件 一台电脑 一台安卓手机(以VIVO手机为例) 一个蓝牙设备(以小米手环为例) 一根手机数据线 实验软件 安卓调试桥(ADB工具) 实验步骤 软件安装 下载ADB工具 访问链接后,根据电脑平台选择软件包 解压文件 下载得到一个压缩包,将其解压缩到一个文件夹中,并打开该文件夹 检查下载 在该目录下右键选择在终端中打开,或可以先行打开终端然后跳转到该目录。 输入.\adb.exe --version来检查是否可用,如果正常,应该会显示版本号。 手机设置 打开开发者模式 现在的安卓手机,开发者选项是隐藏的,需要手动打开开发者模式才能看到。 根据不同手机,可能有不同打开开发者模式的方法,vivo手机的方式是进入设置-关于手机-版本信息,连续点击软件版本号,即可开启开发者模式。大部分手机应该也是类似的方式,如果该操作不行,请自行搜索自己手机的开启方式。 开启日志功能 进入设置中,选择开发者选项,并将启用蓝牙HCI信息收集日志选项设置为启用。注意:如果此时蓝牙已经启动,应该将其关闭后重启,然后蓝牙日志就将开始记录。 开启USB调试功能 为了电脑能够读取日志,需要开启USB调试功能。 完成一次数据传输 正常情况下,手环只要是用过的,在手机蓝牙开启后都会自动连接到手机上,不过为了测试,我们可以手动打开手环软件,比如小米的运动健康,然后刷新手环数据。此时理论上我们的手机和手环会进行如下通信:手机告知手环自己需要的数据,手环将数据传输给手机,当然它们可能还会参杂一些其他相关的认证消息,但是总体内容应该差不多就是这些。 在完成了这个操作后,为了数据干净,就可以选择关闭蓝牙了,我们的通信日志已经被记录下来了。 开始调试 连接电脑 我们现在需要的工作就是将通信日志保存到电脑中,此时就需要用到我们的ADB调试工具了。首先将手机通过数据线连接电脑。 因为开启了USB调试模式,此时会弹窗问是否允许该电脑进行调试,选择允许即可。 然后选择传输模式为管理文件。 此时,我们的电脑已经可以对其进行调试了。 ADB读取报告 通过.\adb.exe bugreport然后加压缩包文件名的方式,可以将日志下载到一个压缩包中,该过程需要一两分钟。 下载完成后就可以解压缩该压缩包,然后通过访问这个路径,可以找到蓝牙日志。如果是其他手机,不确定是不是一样的,但是可以通过搜索hci和log两个关键字来查找。 其中btsnoop_hci.log.last就是我们的目标文件了,当然根据实际情况可能没有.last文件,此时只有.log文件大概率也是对的。 查看抓包内容 找到连接 打开WireShark,将btsnoop_hci.log.last拖拽进去打开。 现在我们关注Source和Destination,只要其中出现了我们的设备名,就说明抓包成功了。 可以发现,我们的手机先给手环发送了一个L2CAP发送包,然后手环回了一个L2CAP的接收包。我们知道L2CAP是用于蓝牙协议中建立连接的,故此可以知道我们的通信成功了。 观察数据 我们继续往下观察,可以发现RFCOMM协议的几个包,我们知道RFCOMM协议是用于构建虚拟串口的,显然这里是在构建通信连接。 而后我们继续观察,可以发现过了一段时间后,突然出现了大量的SPP包,我们知道这个包适用于规范RFCOMM传输内容的,而且通过数据包长度也可以知晓,这显然就是在传输我们的手环数据给手机。 让我们点开其中的一个看一下里面的数据: 这部分数据是data部分的内容,而具体内容则是非常杂乱的,我们在此可以猜测这个数据大概率是加密的数据,需要在手机软件中才会解密,防止被中间截获。

November 17, 2025 · 云雾海