经典蓝牙抓包解析说明

描述

在无线通信协议的开发过程中,抓包器是工程师们不可或缺的工具。掌握抓包器的使用,就如同拥有了能够洞察无线电波的“火眼金睛”。这不仅使我们能够验证发出的数据包是否准确,检查流程或时序的合理性,还能帮助我们更便捷地定位和解决各种技术难题。对于蓝牙技术而言,抓包器的作用同样不可小觑。它强大的捕获功能让我们能够轻松获取空中传输的包的详细信息,包括频率、频率偏差、长度、信号强度以及具体传输内容等。此外,抓包器还具备出色的解析能力,能够按照协议层级对捕获的包进行分类,从而更有效地分析各个层面可能出现的问题。

本文将通过使用广泛认可的Ellisys抓包器为例,首先简要介绍其基本使用方法,然后结合实际案例,展示抓包器在蓝牙开发中的高效应用。我们会特别针对Ellisys在分析经典蓝牙连接过程、加密数据和通信频率等常用功能上进行解析。

对于低功耗蓝牙的抓包和解析,您还可以参考我们之前发布的经典教程:【技术专栏】蓝牙抓包工具Ellisys(上)——原来Debug这么容易。这将为您提供更多深入的指导和帮助。

1

ellisys抓包器用法简介

市面上众多品牌的抓包器中,Ellisys因其全面的功能和高效性能成为我们的首选工具。它采用全频带并发通道嗅探技术,能够实时捕捉所有蓝牙频点,提供便捷的使用体验和丰富的数据捕获。除了捕获空中数据包,Ellisys还能通过USB、UART、SPI等接口获取HCI信息,进一步增强了其分析能力。内置的逻辑分析器功能允许我们将逻辑信号与空中包进行对比,为开发和调试过程中的问题定位提供了强有力的支持。

蓝牙

图1.ellisys抓包器

首先,接通抓包器电源,并使用USB线直接连接至电脑的USB端口,避免使用USB集线器以保证数据传输的效率。接着,在电脑上打开Ellisys提供的上位机软件,按照图2的指示,进入菜单栏选择“Record”->“Recording Options”。在弹出的配置窗口中,根据您的需求选择要捕获的无线或有线协议、逻辑分析仪的信号通道等,完成设置后点击“OK”保存配置,即可开始高效的数据捕获与分析。

蓝牙

图2.抓包器上位机界面

蓝牙

图3.抓包器配置界面

点击工具栏中的Record按钮,抓包器就会开始抓取空中包,并将获取到的信息实时显示在下方的各个窗口中如图4所示,A区为抓到的所有空中包的总览,可以通过该区域上方的工具栏来筛选出各个协议的包或者包含指定数据的包;B区为选中空中包的详细信息,这里会自动解析出在A或C区选中的包的信道、能量以及内容等;C区则以时间为横轴,显示了空中包的时序,可以直观地看出空中包发送的时间以及长度;D区为包的原始信息,通过这里我们可以直接分析空中包的数据是否正确等。上位机的layout可能会有所不同,如果找不到这些区域可点击菜单栏中的layout->reset layout就可以将layout恢复成原始设定。

蓝牙

图4.抓包器上位机各区域

我们已经概述了抓包器的基本操作,这为您提供了分析问题所需的初步技能。现在,让我们通过一些实际案例来深化对抓包器的理解,并探索其更高级的功能。通过这些示例,您将学习到如何更有效地利用抓包器,以提升您的分析技巧和效率。

2

蓝牙抓包解析实例 

在以下实例中我们使用泰凌B91开发板作为Central device来连接蓝牙耳机,同时使用ellisys抓包器来抓取两者发送的空中包,并对连接流程以及数据交换等行为进行分析。

蓝牙

图5.B91开发板

3

建立连接流程分析

首先,我们需要将抓包器开启,然后使用我们的开发板与耳机进行配对,抓包器就会抓取到建立连接的整个流程,观察抓到的空中包我们就会发现除了我们的设备发出的包还会有很多其它的包,这是因为往往我们生活环境中不只有一两个蓝牙设备,其它蓝牙设备发出的包也会被抓包器抓取到,这将会对我们的分析造成一定的困难,这时我们就可以使用filter来筛选出我们想要的设备,如图6所示,我们可以通过设备名称和address来选出想要的设备,然后将其添加到左侧,点击ok返回到主界面我们就可看到只剩下了选中设备发出或收到的包。

蓝牙

图6.通过filter筛选出需要抓取的设备

接下来从空中包中找到paging连接从这里开始,如图7所示,我们可以清晰地看到连接建立的全部流程,先通过page获取到基础的时钟、设备名等信息,然后通过LMP去交换双方的版本、特性、名字等,之后Central发起Host connection,Peripheral回复表示接受,最后双方都发送Setup Complete表示连接正式建立。

蓝牙

图7.抓包器抓取到的连接流程

4

加密数据包分析

蓝牙协议为了保证数据的安全加入了加密的能力,大部分数据包都是在加密的情况下发送的,所以抓包器也为我们提供了解密的能力。找到上位机中的Security窗口,如果我们已经抓到了一些连接的话,这里将会把它们显示出来,如图7所示,可见Key的位置为missing,因为蓝牙是通过一个密钥来加密的,抓包器作为第三方无法得知密钥是什么,这就需要我们在开发过程中使用一些debug手段来获取,这里我们使用Telink开发板的串口将link key打印出来,然后双击missing就会弹出一个输入框,将获取到的key输入其中点击ok就可以发现原本加密的空中包已经可以看到真实的内容了。

蓝牙

图8.Security窗口

蓝牙

图9.输入link key进行解密

蓝牙

图10.解密出来的空中包

5

通信频点分析

由于生活中有大量设备使用着与蓝牙相同的2.4G频段,这都会对蓝牙通信造成干扰,因此蓝牙选择使用跳频技术来对抗干扰,抓包器也为我们提供了相应的功能来让我们可以直接看到一段时间内空中各个频段包的使用情况,这将极大地便利了我们对此类问题的分析。

同样我们需要在上位机中找到对应的窗口,这里使用的是Spectrum和Channels两个窗口,前者可以直观显示空中所有频点上的包在时序上的情况,而后者则是统计了各个频点上的包数量以及丢包率等。如下图所示,红框圈住的地方是环境中WiFi的信号,而我们的蓝牙为了提高通信质量就将这一块干扰严重的频段避开了,从图中可以看到这些频点中的蓝牙包数量非常的少。

蓝牙

图11.Spectrum和Channels窗口

6

总结

抓包器的用途远不止于此,它在经典蓝牙开发中扮演着至关重要的角色。精通抓包器的操作,不仅能帮助我们深入理解蓝牙通信的细节,还能显著提高开发效率。因此,熟练掌握抓包器的使用方法对于蓝牙开发者来说是非常宝贵的技能。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分