当前位置: 首页 > article >正文

从抓包分析看BLE ATT协议:手把手教你用nRF Sniffer解读空中交互的PDU

从抓包分析看BLE ATT协议手把手教你用nRF Sniffer解读空中交互的PDU蓝牙低功耗BLE技术已成为物联网设备通信的核心支柱而属性协议ATT作为其数据交互的基础层直接决定了设备间如何高效可靠地传输信息。对于协议分析工程师和逆向调试人员而言能够直观解读空中传输的原始数据包不仅是排查连接故障的利器更是深入理解蓝牙通信本质的钥匙。本文将带您使用nRF Sniffer这类专业抓包工具结合Wireshark分析技巧逐步拆解ATT层协议数据单元PDU的二进制奥秘让无形的射频信号转化为可读的操作逻辑。1. 搭建BLE协议分析环境1.1 硬件工具选型指南nRF Sniffer北欧半导体推出的低成本抓包方案支持BLE 4.x/5.x协议通过USB接口与Wireshark联动实时显示空中数据包Ellisys Bluetooth Analyzer商业级协议分析仪提供精确的时间戳和频谱分析功能适合企业级研发调试TI CC2540 Sniffer基于CC2540芯片的经典方案适合传统BLE 4.0设备分析提示nRF Sniffer固件需定期更新以支持最新蓝牙规范建议从Nordic官网获取v3.x以上版本1.2 软件环境配置# 安装Wireshark并添加BLE解析插件 sudo apt install wireshark git clone https://github.com/nordic-semiconductor/nRF-Sniffer-for-Bluetooth-LE.git cp -r nRF-Sniffer-for-Bluetooth-LE/3.0.0/* ~/.config/wireshark/plugins/配置完成后在Wireshark的Capture Interfaces中应能看到nRF Sniffer设备。关键参数设置建议参数项推荐值作用说明Channel Map0x7扫描全部3个广播信道PHY ModeLE 1M兼容BLE 4.x/5.x标准速率Pcapng Format启用保留完整抓包元数据2. ATT协议框架解析2.1 属性数据模型剖析BLE设备通过属性Attribute暴露数据接口每个属性包含四个核心要素Handle0x0001-0xFFFF16位唯一标识符相当于数据地址指针TypeUUID区分属性类别如0x2800主服务声明0x2803特征值声明0x2902客户端特性配置描述符Value实际存储的数据内容长度受ATT_MTU限制Permissions访问控制标志位包括读写权限Read/Write加密要求Encryption认证级别Authentication2.2 PDU通信规则矩阵ATT层定义六种基本交互模式构成完整的请求-响应机制PDU类型方向确认要求典型应用场景CommandClient→Server无快速写入操作RequestClient→Server需响应读取特征值ResponseServer→Client-返回请求结果NotificationServer→Client无心率测量数据推送IndicationServer→Client需确认关键状态变更提醒ConfirmationClient→Server-确认Indication已接收3. 实战抓包分析案例3.1 MTU交换过程解码在Wireshark中过滤btatt.opcode 0x02可捕获MTU交换请求。以下是一个典型交互流程客户端发起请求Opcode: 0x02 (Exchange MTU Request) Client Rx MTU: 0x00D3 (211 bytes)服务端响应# 解析响应PDU的Python示例 pdu b\x03\xA0\x00 # 原始字节流 opcode pdu[0] # 0x03表示Exchange MTU Response server_mtu int.from_bytes(pdu[1:3], little) # 0x00A0160结果协商双方取较小值本例为160字节作为后续通信的MTU3.2 特征值通知解析当设备发送Handle Value Notification时Opcode0x1B关键字段包括#pragma pack(1) typedef struct { uint8_t opcode; // 0x1B uint16_t handle; // 特征值句柄 uint8_t value[]; // 可变长度数据 } att_notification_pdu;在Wireshark中可观察到如下实际数据Attribute Opcode: Handle Value Notification (0x1B) Handle: 0x000E Value: 48656c6c6f (ASCII: Hello)3.3 长数据写入过程对于超过MTU限制的数据BLE采用Prepare Write队列机制。以下为写入128字节数据的抓包示例序号PDU类型参数说明数据分片1Prepare Write RequestHandle0x0012, Offset0Data[0:19]2Prepare Write Response返回相同偏移量确认-3...每次递增20字节偏移量Data[20:39]等7Execute Write RequestFlags1 (立即执行)-8Execute Write Response写入完成状态-4. 高级调试技巧4.1 错误代码速查表当收到Error Response PDUOpcode0x01时错误代码含义如下错误码宏定义触发条件0x01ATT_ERR_INVALID_HANDLE属性句柄不存在0x02ATT_ERR_READ_NOT_PERM读权限不足0x03ATT_ERR_WRITE_NOT_PERM写权限不足0x0DATT_ERR_INVALID_PDU协议格式错误4.2 自定义Wireshark着色规则通过View → Coloring Rules添加以下规则可提升协议分析效率# 高亮关键操作 btatt.opcode 0x0A || btatt.opcode 0x12 Cyan # 读/写请求 btatt.opcode 0x1B || btatt.opcode 0x1D Pink # 通知/指示 btatt.opcode 0x01 Red # 错误响应4.3 使用Python解析抓包数据以下脚本可提取pcapng文件中的ATT操作统计from pyshark import FileCapture def analyze_att_packets(pcap_path): cap FileCapture(pcap_path, display_filterbtatt) opcode_stats {} for pkt in cap: opcode int(pkt.btatt.opcode, 16) opcode_stats[opcode] opcode_stats.get(opcode, 0) 1 print(ATT PDU 统计:) for code, count in sorted(opcode_stats.items()): print(f0x{code:02X}: {count}次)在实际项目中发现多数连接问题源于MTU协商失败或权限配置不当。通过对比正常与异常场景的抓包数据往往能快速定位到缺失的Authentication位或过小的MTU设置值。

相关文章:

从抓包分析看BLE ATT协议:手把手教你用nRF Sniffer解读空中交互的PDU

从抓包分析看BLE ATT协议:手把手教你用nRF Sniffer解读空中交互的PDU 蓝牙低功耗(BLE)技术已成为物联网设备通信的核心支柱,而属性协议(ATT)作为其数据交互的基础层,直接决定了设备间如何高效可…...

3步解锁音乐自由:qmc-decoder帮你将QQ音乐专有格式转换为MP3/FLAC

3步解锁音乐自由:qmc-decoder帮你将QQ音乐专有格式转换为MP3/FLAC 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否遇到过这样的困扰:从QQ音乐…...

3个技巧轻松搞定代码复杂度分析:Lizard助你写出高质量代码

3个技巧轻松搞定代码复杂度分析:Lizard助你写出高质量代码 【免费下载链接】lizard A simple code complexity analyser without caring about the C/C header files or Java imports, supports most of the popular languages. 项目地址: https://gitcode.com/gh…...

JetBrains IDE试用期重置终极指南:简单三步无限续杯

JetBrains IDE试用期重置终极指南:简单三步无限续杯 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为JetBrains IDE试用期到期而烦恼吗?IDE Eval Resetter是解决这个问题的完美工具&a…...

LangChain之大模型介绍

一、认识模型模型是一个从数据中学习规律的“数学函数”或“程序”。旨在处理和生成信息的算法,通常模仿人 类的认知功能。通过从大型数据集中学习模式和洞察,这些模型可以进行预测、生成文本、图像或其 他输出,从而增强各个行业的各种应用。…...

SAP AVC实战:从MTO订单到交付的可配置物料全链路解析

1. 可配置物料的前世今生:从LO-VC到AVC的进化之路 第一次接触可配置物料是在2015年,当时客户需要定制一批液压系统,每个订单的参数都不同。传统做法是给每个变体创建独立物料号,结果一个月下来物料主数据暴涨300%,MRP跑…...

echarts 折柱混合图,渐变切图例和x轴滚动可自动切换

echarts 折柱混合图,渐变切图例和x轴滚动可自动切换,并且自定义图例,一般使用在大屏项目上,效果如图getSZCharts(val) {this.mySZFXChart this.$echarts.init(document.getElementById("isSZCharts"));let bardata1 [6, 6, 5, 3, 8];let bardata2 [8, 8, 8, 6, 7]…...

从‘饱和’与‘残存失调’聊起:手把手分析OOS与IOS两种失调消除技术该怎么选

从‘饱和’与‘残存失调’谈OOS与IOS技术选型:工程师的决策指南 在高速高精度比较器设计中,失调消除技术的选择往往成为影响整体性能的关键决策点。当您面对一个增益设计较高的前置放大器时,输出饱和风险与残余失调容忍度之间的矛盾会变得尤为…...

Pearcleaner:为你的Mac来一次彻底的数字大扫除

Pearcleaner:为你的Mac来一次彻底的数字大扫除 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 你是否曾经疑惑过,为什么删除了一个应…...

如何批量清理文件名数字前缀?3个方法一键批量清理文件名数字前缀

一、为什么文件名要删数字?先聊聊这些数字编号的"坑":比如项目结束后整理资料,"3.最终版PPT"和"5.最终版PPT"混在一起,发邮件时领导可能收到错版本;或者客户突然要旧资料,按…...

文档插件《道斯通图》不震撼首发 免费下载直接使用

最后有下载地址,免费下载,安装后直接使用。(限时7天)后续会在视频平台发布详细的操作视频教程,以下操作流程仅供参考。你是否还在为 Word 文档处理繁琐操作头疼?批量合并、格式转换、排版统一、内容替换、图…...

基于单片机的超声波避障小车(有完整资料)

资料查找方式:特纳斯电子(电子校园网):搜索下面编号即可编号:T1932310M设计简介:本设计是基于单片机的超声波避障小车,主要实现以下功能:通过温度传感器检测温度 通过超声波模块检测…...

办公族必看!5个亲测有效的PPT压缩方法,轻松减小文件大小提升效率

在数字化办公场景中,PPT文件体积过大已成为职场人普遍面临的难题。无论是邮件发送时被系统拦截、在线平台上传超时,还是会议演示时因文件臃肿导致设备卡顿,都会严重影响工作效率。本文基于大量职场用户实测数据,系统拆解五种不同场…...

【实战】工程造价从业者如何快速搭建AI辅助系统(附DMXAPI接入指南)

一、前言 本文面向有一定技术基础、想快速在内部系统接入AI能力的开发者。通过一个真实项目案例,讲解如何借助DMXAPI实现多模型统一调用,同时控制开发成本。二、需求背景 维度 具体需求 业务场景 工程造价智能辅助系统 核心功能 历史清单智能分…...

YOLOv26蜜蜂识别检测系统:8080张图像+PyQt5界面+模型权重+远程部署(含训练曲线/混淆矩阵)

摘要 本文基于YOLO26目标检测算法构建了一套蜜蜂识别检测系统,用于自动识别图像中的蜜蜂目标。数据集共包含8,080张标注图像(训练集5,640张、验证集1,604张、测试集836张),类别仅为bees。实验结果表明,模型在验证集上的…...

Windows开发环境配置

1、安装JDK 1.1、jdk 8 D:\software\Java\jdk1.8.0_2021.2、jdk 17 D:\software\Java\jdk-171.3、jdk 25 D:\software\Java\jdk-251.4、配置环境变量 JAVA8_HOMED:\software\Java\jdk1.8.0_202 JAVA25_HOMED:\software\Java\jdk-25 JAVA_HOME%JAVA8_HOME%1.5、配置Path2、安装M…...

用魔法打败魔法:AI代码提示词验证流程

三步走:第一步:让AI根据我的要求给我写提示词和精简提示词;第二步:把AI提供的提示词写到AI中,让AI生成代码;第三步:把AI写的代码问AI是否可以编译和运行通过。循环三步,得到较好的提…...

城通网盘加速终极指南:3步免费突破下载限制,速度提升10倍!

城通网盘加速终极指南:3步免费突破下载限制,速度提升10倍! 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘的龟速下载而烦恼吗?ctfileGet是…...

别再手动抄坐标了!用Python一键提取UG模型边界点(附完整代码)

用Python自动化提取UG模型边界坐标的工程实践 在逆向工程、3D打印预处理和CAE分析中,工程师经常需要从三维模型中提取大量边界点坐标。传统手动记录或界面导出方式不仅耗时耗力,还容易引入人为错误。本文将分享一套基于Python的自动化解决方案&#xff0…...

告别屏幕撕裂和亮度不均:手把手教你用ILI9341的B组命令优化显示效果

告别屏幕撕裂和亮度不均:手把手教你用ILI9341的B组命令优化显示效果 在嵌入式显示项目中,ILI9341驱动芯片凭借其出色的色彩表现和灵活的接口配置,成为中小尺寸TFT-LCD的首选方案。但许多开发者在完成基础驱动后,常会遇到屏幕撕裂、…...

从停机到秒级自愈:Docker 27健康探测+设备数字孪生联动实践——某汽车焊装线72小时零非计划停机实录

第一章:从停机到秒级自愈:Docker 27健康探测设备数字孪生联动实践——某汽车焊装线72小时零非计划停机实录在某主机厂焊装车间,传统PLC控制的机器人焊接工位曾因通信抖动、IO模块异常或冷却液压力突降导致平均每月3.2次非计划停机。项目团队将…...

别再乱接线了!STM32F407ZGT6连接ST-LINK与USB转TTL的保姆级图文指南(附舵机驱动)

STM32F407ZGT6开发板极简接线手册:从ST-LINK调试到舵机控制的避坑指南 刚拿到STM32开发板的新手们,往往会被密密麻麻的引脚和五花八门的连接线搞得晕头转向。我见过太多人因为接错一根线而浪费数小时排查——电源接反烧坏芯片、调试接口混乱导致无法下载…...

长芯微LMD9633完全P2P替代AD9633,四通道12位采样80/105/125MSPS 模数转换器ADC

描述长芯微LMD9633是一款四通道、12位、80/105/125MSPS 模数转换器(ADC),具有片内采样保持电路,旨在实现低成本、低功耗、小尺寸和易用性。该产品以高达 125 MSPS 的转换速率运行,并针对要求小封装尺寸至关重要的应用进…...

半导体标签

解决方案是面向半导体、PCB制造、电子组装、医疗器械、精密元器件生产等静电敏感行业的全流程静电防护合规标识一体化方案,核心解决生产、流转、追溯全环节的静电损伤、合规不符、标识失效痛点,完全契合ANSI/ESD S20.20、SEMI、IPC等国际行业标准。一、方…...

用.editorconfig统一团队C++代码风格:从VS配置导出到Git提交前检查

用.editorconfig统一团队C代码风格:从VS配置导出到Git提交前检查 当团队规模扩大到5人以上时,代码风格差异带来的隐性成本开始显现。根据2023年开发者调查报告,67%的技术负责人将代码风格不一致列为协作效率的首要障碍。一个典型的C项目可能同…...

FlicFlac音频转换工具深度解析:从轻量级设计到企业级音频处理解决方案

FlicFlac音频转换工具深度解析:从轻量级设计到企业级音频处理解决方案 【免费下载链接】FlicFlac Tiny portable audio converter for Windows (WAV FLAC MP3 OGG APE M4A AAC) 项目地址: https://gitcode.com/gh_mirrors/fl/FlicFlac 在当今数字化音频处理…...

Swagger接口文档除了在线看,还能怎么用?我整理了3种本地化导出方案(含Word/Excel)

Swagger接口文档的本地化应用:3种高效导出方案深度解析 在API开发领域,Swagger已经成为事实上的接口文档标准。但很多团队仅仅将其作为在线参考工具,却忽视了这些结构化数据的更大价值。想象一下:当客户要求提供完整的接口规范作为…...

Aspose.Words 24.2 升级踩坑记:从目录页码错乱到表格跨页,我的Java自动化报告修复实战

Aspose.Words 24.2 升级实战:Java自动化报告生成中的目录页码与表格跨页问题深度解析 当项目依赖的文档处理库迎来重大版本更新时,开发团队往往既期待新功能带来的效率提升,又担忧潜在兼容性问题。作为长期使用Aspose.Words进行Java自动化报告…...

如何快速完成小爱音箱AI升级:3步打造智能语音助手

如何快速完成小爱音箱AI升级:3步打造智能语音助手 【免费下载链接】mi-gpt 🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt 还在为小爱音箱的"人工智障&q…...

百度Create大会双主论坛议程揭晓,多项重磅升级发布将集中亮相

Create2026百度AI开发者大会将于5月13日至14日在北京国家会议中心二期举办。本届大会迎来战略升级:首次整合“Create 百度AI开发者大会”与“云智大会”,并启用双主论坛全新架构,从企业技术底座、个体应用范式两大维度,全面解码AI…...