nRF Connect 广播数据解析:从RAW Hex到设备识别的3步逆向工程

📅 2026/7/10 4:00:41
nRF Connect 广播数据解析:从RAW Hex到设备识别的3步逆向工程
nRF Connect广播数据逆向解析从Hex到设备识别的实战指南蓝牙设备的广播数据包就像一张电子名片承载着设备类型、服务能力、厂商信息等关键数据。但面对一串看似随机的十六进制代码大多数开发者往往感到无从下手。本文将带你深入nRF Connect的广播数据解析世界通过三个关键步骤实现从原始Hex到设备识别的完整逆向工程。1. 广播数据基础BLE通信的第一印象当蓝牙设备开启广播时它就像站在拥挤房间里的自我介绍者不断向周围发送包含自身信息的短数据包。这些广播包采用特定的数据结构由若干AD Structure组成每个结构包含三个部分Length1字节当前AD Structure的总长度AD Type1字节数据类型标识符AD Data可变长度实际数据内容常见的AD Type及其含义类型值(Hex)类型名称数据内容说明0x01FLAGS设备发现模式和能力0x02-0x05UUID16/32/128位服务UUID0x08NAME设备简称或全名0x09TX Power发射功率等级0xFFManufacturer厂商自定义数据在nRF Connect中获取原始广播数据的两种方式点击设备名称展开详情选择RAW按钮使用CLONE功能复制广播包后在广播者标签页查看提示广播间隔影响数据更新频率通常20ms到10.24s不等。间隔越短设备被发现越快但功耗越高。2. Hex解码实战逐字节解析广播包让我们以一个真实的广播包为例演示完整的解析过程原始数据02 01 06 03 03 AA FE 11 16 AA FE 10 00 03 6E 6F 72 64 69 63 5F 68 72 5F 73 65 6E 73 6F 72结构化解析表字节位置长度字段值(Hex)解析结果0-12起始标记-广播数据开始21Length0x02后续2字节为第一个AD Structure31AD Type0x01FLAGS类型41AD Data0x06含义LE通用发现模式 BR/EDR不支持51Length0x03后续3字节为第二个AD Structure61AD Type0x0316位UUID列表7-82AD Data0xAAFEUUID: 0xFEAA (Eddystone)91Length0x11后续17字节为第三个AD Structure101AD Type0x16服务数据(16位UUID)11-122AD Data0xAAFE关联的UUID: 0xFEAA131-0x10帧类型: URL(0x10)141-0x00发射功率: 0dBm15-2915-多种URL编码数据:nordic_hr_sensor关键发现技巧字节序转换蓝牙采用小端序0xAAFE实际表示UUID 0xFEAA厂商数据解析0xFF类型后通常跟2字节厂商ID如Nordic为0x0059动态字段服务数据(0x16)结构由厂商自定义需查阅对应规范# Python示例简单解析广播包中的设备名称 import binascii raw_data 0201060303AAFE1116AAFE1000036E6F726469635F68725F73656E736F72 data binascii.unhexlify(raw_data) index 0 while index len(data): length data[index] if length 0: break ad_type data[index1] ad_data data[index2:index1length] if ad_type 0x08 or ad_type 0x09: # 设备名称 print(fDevice Name: {ad_data.decode(ascii)}) index 1 length3. 设备指纹识别构建特征数据库通过解析出的信息我们可以创建设备识别特征库。以下是关键识别维度1. UUID签名标准服务UUID如0x180A为设备信息服务厂商自定义UUID如Nordic的UART服务0x00012. 广播模式特征- 广播间隔分布 - 每个广播周期包含的PDU数量 - 是否同时发送SCAN_RSP响应包3. 厂商数据指纹Apple设备典型特征 - 包含0x4C厂商ID - iBeacon数据格式02 01 06 1A FF 4C 00 02 15... 小米设备典型特征 - 包含0xFE95厂商ID - MiBeacon数据格式16 95 FE 30 58 01 00...4. RSSI行为分析信号强度随距离的衰减曲线信号稳定性指标波动范围典型发射功率值如0x09类型数据建立识别规则的示例流程检查FLAGS字段确定设备基本能力匹配标准UUID列表判断设备类别解析厂商特定数据获取详细型号结合广播间隔和TX Power验证识别结果注意某些设备会伪装广播数据建议结合多个特征维度进行交叉验证。4. 高级逆向技巧动态分析与协议仿真当基础解析无法满足需求时需要更深入的逆向手段1. 广播包历史分析在nRF Connect中使用MORE按钮查看历史记录观察数据包变化规律如动态计数器捕获连接建立后的后续通信2. 数据包注入测试# 使用nRF Connect的CLONE功能修改广播数据 adb shell am start -n no.nordicsemi.android.nrfconnect/.ScannerActivity \ --es clone_data 0201061107AAFE004E6F726469635F44656D6F3. 协议逆向工具链Wireshark BLE嗅探器捕获空中数据Ubertooth进行低频蓝牙监控BlueZ工具包中的hcitool和gatttool4. 常见广播协议解析表协议类型识别特征数据格式iBeacon厂商ID 0x004C02 01 06 1A FF 4C 00 02 15 [UUID] [Major] [Minor] [TxPower]EddystoneUUID 0xFEAA02 01 06 03 03 AA FE ...AltBeacon厂商特定02 01 06 1B FF [MFG_ID] 00 BE AC [ID] [RefRSSI] [Reserved]实际项目中我曾遇到一个伪装成iBeacon的自定义设备。通过以下步骤成功识别发现异常的厂商ID(0xFFFF)替代了Apple的0x004C分析广播间隔呈现固定200ms周期在厂商数据段发现隐藏的设备序列号通过RSSI三角定位确认设备物理位置这种深度解析需要结合协议知识和实际测试经验nRF Connect提供的RAW数据视图和包历史功能是不可或缺的调试工具。