ble扫描相关的问题,蓝牙 MAC 是否可以确定厂商?

结论先说:

D2:6F:A6:57:89:7B 不能用来确定厂商。

下面严谨解释原因。


一、蓝牙 MAC 是否可以确定厂商?

传统上:

  • MAC 前 3 字节 = OUI(Organizationally Unique Identifier)

  • 由 IEEE 分配

  • 可以查到厂商

例如:

复制代码
00:1A:7D → Apple
3C:5A:B4 → Samsung

二、但你这个地址有问题

MAC:

复制代码
D2:6F:A6:57:89:7B

看第一个字节:

复制代码
D2

转换为二进制:

复制代码
1101 0010

重点看最低两位:

复制代码
bit0 = 0
bit1 = 1

位含义:

含义
bit0 单播(0) / 组播(1)
bit1 全球唯一(0) / 本地管理(1)

你的地址:

bit1 = 1

意味着:

这是 Locally Administered Address(本地管理地址)


三、什么是本地管理地址?

这种地址:

  • 不是 IEEE 分配

  • 不属于固定厂商 OUI

  • 通常是:

    • 随机生成

    • BLE 隐私地址

    • 手机随机地址

    • Windows 随机地址

    • iOS 隐私地址

    • Android 随机地址


四、BLE 常见随机地址类型

BLE 有三种随机地址:

  1. Static Random Address

  2. Resolvable Private Address(RPA)

  3. Non-Resolvable Private Address

现在几乎所有:

  • iPhone

  • Android

  • Windows

  • 蓝牙耳机

  • BLE 标签

都会使用随机地址防止跟踪。


五、如何判断是不是随机地址?

看第一字节前两位:

复制代码
xx:xx:xx:xx:xx:xx
↑
第一个字节

规则:

前两位 类型
00 Public
01 Random Static
10 Random Private Resolvable
11 Random Private Non-Resolvable

你的:

复制代码
D2 = 1101 0010

前两位:

复制代码
11

属于:

Random Private Non-Resolvable Address


六、意味着什么?

✔ 每次广播可能变

✔ 无法反查厂商

✔ 无法固定识别设备

✔ 设计目的就是防追踪


七、那什么时候可以查厂商?

只有当:

  • 地址是 Public Address

  • 且 bit1 = 0

  • 且前三字节属于 IEEE OUI

才能查厂商。


八、结合你前面的数据

你之前发的:

复制代码
Company ID = 0x0006

那是 Manufacturer Data 里的 Company ID。

⚠️ 那个可以确定厂商

但 MAC 地址不行。


九、如何识别厂商更可靠?

优先顺序:

  1. Manufacturer Data(Company ID)

  2. Service UUID

  3. 设备名称模式

  4. 特征广播结构

  5. GATT 服务

不要依赖 MAC。


十、如果你在做 BLE 设备识别系统

(结合你之前的扫描项目)

建议:

复制代码
if manufacturer_id == 0x004C:
    vendor = "Apple"
elif manufacturer_id == 0x0006:
    vendor = "Microsoft"

不要用 MAC 前缀。


最终结论

复制代码
D2:6F:A6:57:89:7B

是:

随机 BLE 私有地址

无法确定厂商

设计上就是防止识别


相关推荐
MonkeyKing13 小时前
蓝牙GAP通用访问协议详解:从原理到多平台实战代码
flutter·蓝牙
byte轻骑兵14 小时前
【HID】规范精讲[6]: 蓝牙HID系统设计指南——从合规到体验的全维度要求
人机交互·蓝牙·键盘·鼠标·遥控·hid
yanlaifan15 小时前
经典蓝牙中信道和链路的关系
蓝牙
yanlaifan2 天前
蓝牙领域中的带宽和宽带
蓝牙
byte轻骑兵2 天前
【HID】规范精讲[5]: 蓝牙 HID Boot Protocol Requirements 详解
人机交互·蓝牙·键盘·鼠标·hid
古茗前端团队3 天前
钉钉小程序蓝牙打印探索与实践
前端·蓝牙
yanlaifan3 天前
Bluetooth Classic中的速率区别
蓝牙
HiDev_4 天前
iOS 蓝牙开发进阶:彻底理解 CBManager(状态、权限与正确使用方式)
ios·objective-c·蓝牙·ble
byte轻骑兵7 天前
【HID】规范精讲[3]: 蓝牙HID协议消息详解——无线交互的数据传输语言
人工智能·人机交互·蓝牙·键盘·hid
WeeJot嵌入式7 天前
【串口】蓝牙模块与简易数据包解析
stm32·单片机·嵌入式硬件·蓝牙