蓝牙是什么?蓝牙是一种支持设备短距离通信(一般 10m 以内)的无线电技术,被广泛应用于手机、电脑、鼠标、键盘、蓝牙音箱,当下非常流行。从 1999 年的蓝牙 1.0 进化到 2016 年的蓝牙 5.0,从经典蓝牙到低功耗蓝牙,这项技术一直在进步,市场也在不断扩大。在未来,蓝牙也是我们生活之中不可缺少的一部分,正逐步改变我们的生活方式。本文主要对蓝牙地址做一下解析,方便我们在分析蓝牙数据包时不至于太盲目。
Bluetooth Device Address 蓝牙设备地址可分为两类:公开设备地址
(public device address)和随机地址
(random device address)。
Bluetooth Address 即 Public address ,并不针对 BLE 的 random address。公开设备地址需要向 IEEE 协会申请,是需要购买的,但是可以保证地址的唯一性。Bluetooth Address(BD_ADDR):是制造商分配给每个蓝牙设备的唯一 48 位。它是用来唯一识别一个物理设备的标识。正常情况下,该地址需要向IEEE 申请(购买),可以确保地址的唯一性。蓝牙地址通常显示为 6 个字节,以 16 进制表示,用冒号分隔(示例:- 00:11:22:33:FF:EE )。其中,蓝牙地址的 upper part(即most-significant 24 bits)被称为 Organizationally Unique Identifier(OUI)。它可以用来确定设备的制造商。OUI 是由电气和电子工程师协会IEEE 分配。另外,蓝牙设备地址还被用来在蓝牙设备之间的无线通信中确定跳频模式。
蓝牙地址结构由三部分组成:NAP、UAP 和 LAP。 NAP 非有效地址部分(2 个字节)。包含 OUI 的前 16 位。 NAP 值用于跳频同步帧。 UAP 高地址部分(1 个字节)。包含 OUI 的剩余 8 位。 UAP 值用于在各种蓝牙规范算法中。 LAP 低地址部分(3 个字节)。这部分蓝牙地址由设备供应商分配。 LAP 值将蓝牙设备唯一标识为每个传输帧中访问代码的一部分。 LAP 和 UAP 构成蓝牙地址的重要地址部分 (SAP)。
因为 Random Address 的设备地址不是固定分配的,而是在设备启动后随机生成的,而且会根据一定的周期发生变化。它的出现正是为了规避 Public Address申请/维护成本高、复杂等的问题的,当然这主要是可以保证地址可变,更安全。
通过ubertooth one设备运行ubertooth-rx命令嗅探到的蓝牙数据信息如下图:
关注👇公👇众👇号(Linux兵工厂),获取更多资讯👇👇👇