BLE 抓包解码框架 — 完整解码流程说明

WCH BleAnalyzer BLE 抓包解码框架 — 完整解码流程说明
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

后缀 全称 含义 通信模式
IND Indication 指示/告知 单向通知。一方主动告知对端某个状态变更或即将执行的操作,不需要对方回复确认(或说不期待一个专门的 Response 包回复)
REQ Request 请求 双向握手。发起方请求操作,必须等待对方回复
RSP Response 响应 对 Request 的回复,成对出现

BLE 抓包解码框架 — 完整解码流程说明

第一层:原始输入

抓包硬件捕获空中 BLE 无线帧,得到原始字节流 Raw Bytes,作为整个解码框架的输入。


第二层:基础工具层 mDefine.txt

所有解码工作的地基,提供以下公共能力:

  • 字节读取器 read_uint / read_int — 从缓冲区按位读取无符号或有符号整数
  • 格式转换器 hexDump / binaryToHexStr — 原始字节转可读 HEX 字符串
  • 小端序转换器 leBytesToUint64 — Little-Endian 字节序转 64 位整数
  • 元信息提取器 getIndex / getRSSI / getDirection / getChannel / getMacAddr / getPayload — 从帧中提取信号强度、信道号、设备物理地址等元数据
  • 基础对象构造器 decoder / context / ret — 构建解码上下文与返回值容器

第三层:包类型判断 PKT_TYPE_NAME

依据帧头字段识别包类型,分四条路径:


路径 A — 调试旁路 dbg_trans.txt

不做协议解码,专注数据导出:

  • dbg_run_transcation — 过滤指定 MAC 地址,将时间戳、RSSI、方向、信道等写入 CSV
  • dbg_run_end — 安全关闭 CSV 文件句柄

路径 B — 自定义 2.4G 包 userdef24.txt

  • decode() 注册 USER_DEFINE_PKT 类型处理函数
  • 解析 data0 / data1 两字节自定义结构,供用户自行扩展

路径 C — 广播包 adv.txt

首先解析 PDU Header(PDU Type / TxAdd / RxAdd / Length),再按 ADV PDU Type 细分:

ADV 类型 说明 解析字段
ADV_IND 可连接非定向广播 AdvA + AdvData(AD Structure 循环解码,含设备名/UUID/TxPower)
ADV_DIRECT_IND 可连接定向广播 AdvA + TargetA
SCAN_REQ 扫描请求 ScanA + AdvA
SCAN_RSP 扫描响应 AdvA + ScanRspData(AD Structure 循环解码)
CONNECT_IND 连接请求 InitA + AdvA + LLData(AccessAddress / CRCInit / WinSize / Interval / Latency / Timeout)
ADV_EXT_IND 扩展广播(BLE 5.0) Extended Header / AdvMode / AuxPtr / ADI / TxPower / ACAD

路径 D — 连接包 conn.txt

首先解析 Data PDU Header(LLID / NESN / SN / MD / CP / Length),再按 LLID 分两条子路径:


子路径 D-1 — LLID = 3,链路层控制包 LL_Control.txt

读取 Opcode 操作码,查表 handlers_control_data,按 Control Opcode 细分:

Opcode 说明 解析字段
LL_CONNECTION_UPDATE_IND 连接参数更新指示 WinSize / WinOffset / Interval / Latency / Timeout / Instant
LL_CHANNEL_MAP_IND 信道映射更新指示 ChM 5字节37bit + Instant
LL_TERMINATE_IND 连接终止指示 ErrorCode
LL_ENC_REQ/RSP 加密协商请求/响应 Rand / EDIV / SKDm / IVm(用于协商 LTK 长期密钥)
LL_VERSION_IND 版本信息指示 VersNr / CompId / SubVersNr
LL_FEATURE_REQ/RSP 特性集合协商 FeatureSet 8字节64bit
LL_PHY_REQ/RSP / LL_PHY_UPDATE_IND 物理层 PHY 协商 TX_PHYS / RX_PHYS / Instant(1M/2M/Coded PHY)
LL_LENGTH_REQ/RSP 数据长度协商 MaxRxOctets / MaxRxTime / MaxTxOctets / MaxTxTime
其他 PING / UNKNOWN / CTE 等 对应结构体解码

子路径 D-2 — LLID = 1/2,链路层数据包 LL_Data.txt

解析 L2CAP Header(Length / CID),再按 CID 信道标识符 分三条子路径:


CID = 4,ATT 属性协议信道 LL_Data_ATT.txt

读取 Opcode 操作码,查表 handlers_attribute_opcode,按 ATT Opcode 细分:

Opcode 说明 解析字段
ATT_ERROR_RSP 错误响应 ReqOpcode / Handle / ErrorCode
ATT_FIND_INFO_REQ 查找属性信息请求 StartHandle / EndHandle
ATT_FIND_INFO_RSP 查找属性信息响应 Format + UUID 列表(16bit 或 128bit)
ATT_READ_REQ 读取属性请求 AttributeHandle
ATT_READ_RSP 读取属性响应 AttributeValue(hexDump 显示)
ATT_WRITE_REQ/CMD 写入请求/命令 Handle + Value(REQ 需确认,CMD 无需确认)
ATT_HANDLE_VALUE_NTF/IND 服务端通知/指示 Handle + Value(NTF 无需确认,IND 需 ATT_CONFIRM 回复)
ATT_READ_BY_TYPE_REQ/GROUP_REQ 按类型/组批量读取 StartHandle / EndHandle / UUID(用于 GATT 服务与特征发现)
其他 PREPARE_WRITE / EXECUTE_WRITE 等 对应结构体解码

CID = 5,L2CAP 信令信道 LL_Data_SIG.txt

读取 Code 命令码 + ID + Length,查表 handlers_sig_cmd_fmt,按 SIG Command Code 细分:

Code 说明 解析字段
CONNECTION_PARAM_UPDATE_REQ/RSP 连接参数更新请求/响应 IntervalMin / IntervalMax / Latency / Timeout
LE_CREDIT_BASED_CONN_REQ/RSP 基于信用的 L2CAP 连接(CoC) SPSM / MTU / MPS / InitialCredits
FLOW_CONTROL_CREDIT_IND 流控信用点数指示 CID + Credits
DISCONNECTION_REQ/RSP L2CAP 信道断开请求/响应 DestCID + SourceCID
其他 COMMAND_REJECT 等 对应结构体解码

CID = 6,SMP 安全管理信道 LL_Data_SMP.txt

读取 Code 命令码,查表 handlers_SMP_code,按 SMP Code 细分:

Code 说明 解析字段
PAIRING_REQUEST/RESPONSE 配对请求/响应 IOCapability / OOB / AuthReq / MaxKeySize / InitiatorKeyDist / ResponderKeyDist(协商 JustWorks / Passkey / OOB 配对方式)
PAIRING_CONFIRM 配对确认值 Confirm Value 16字节(验证配对参数一致性)
PAIRING_RANDOM 配对随机数 Random Value 16字节(用于生成 STK 短期密钥)
ENCRYPTION_INFORMATION 加密信息分发 LTK 长期密钥 16字节(重连时恢复加密)
MASTER_IDENTIFICATION 主机标识信息 EDIV + Rand(配合 LTK 识别密钥)
IDENTITY_INFORMATION 身份解析信息 IRK 身份解析密钥 16字节(解析私有地址 RPA)
IDENTITY_ADDRESS_INFORMATION 身份地址信息 AddrType + Address(公共或静态随机地址)
其他 SIGNING_INFO / SECURITY_REQ 等 对应结构体解码

第四层:输出汇总

各路径解码完成后,统一将结果写入 ret 对象,返回上层调用方,输出内容包含:

  • 结构化协议字段(字段名 + 解析值)
  • 原始 HEX 字节数据(hexDump 格式)
  • 供 UI 渲染展示或写入日志记录

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐