TI cc2540 usb dongle smartRF packet sniffer 的初级抓包使用及过滤特定数据包

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_24179601/article/details/87184803

在我们开发蓝牙过程中,有时候不可避免的需要分析蓝牙空中包,来判断到底是主机问题还是从机问题;这时就需要用到抓包,但是先进的抓包设备如Frontline ComProbe BPA系列,动辄上万;虽说抓的包比较详细并且能将各个数据进行自动协议归类但是一般不是很有必要;最近项目中我就选用了TI的smartRF packet sniffer,也是刚开始用这个工具抓包,所以在这里将一些操作经验记录分享下来;

一、

在这里插入图片描述
插上USB dongle工具,打开软件,这里我们选择支持BLE协议,然后点击start。之后我们可以做一个简单的测试,如下图操作,在这里插入图片描述
设置好抓包通道,由于BLE 4.0有3个通道,但该工具同时只能抓取一个通道,这里我们设置第37通道。然后点击小三角形开始抓包;如果周围有蓝牙设备在广播或者扫描的话,接下来就会看到有很多的包出来,如序号4的广播包和序号5的扫描请求包。

二、对特定广播包进行过滤

在抓包中,我们的需求往往是只想看到所调试设备的包而不是周围所有的包,这时我们需要用到Display filter,如下图:
在这里插入图片描述
红色框处是对数据包里的特定数据进行过滤,这里因为我的广播包是ADV_IND AdvA类型,所以选择ADV_IND AdvA,然后点击First,这里还有一个And,主要用于多个条件同时过滤。
等号后写上自己广播设备的MAC 地址,我的选择如下:
在这里插入图片描述
即可实现过滤

三、抓取连接成功后的数据包

一般情况下,起码需要抓两次,第一次,先选择抓包通道为37通道。并且通过从机端MAC地址进行过滤,避免数据包太多,当和主机连接成功后会停在如下界面:

在这里插入图片描述
这里我们可以知道主机地址,之后再将主机地址填入,并且打上勾,然后再从头抓取。
在这里插入图片描述
抓取连接成功后的包可能一次不会成功,需要设置到38 39通道,并且多试几次。

另外,在实测中也可以看到,每次连接成功后接入地址都是变化的:
在这里插入图片描述
在这里插入图片描述

四、一次读写过程

在这里插入图片描述
从上图我们可以看到从机向主机notify了一次数据,并且之后主机也返回了一段ATT_WRITE_Command数据,具体值为AttValue。结合相邻两个包,因为在一次呼吸包里,总是先M->S,再S->M,所以一次由从机发起的数据及收数据通常不在同一个通道上了。这里还有一个微妙的地方,从抓包里我们可以看到这次数据发收间隔时间为19771us。红框处这次连接间隔时间为230(从机的反应时间)+19771(主机的反应时间和连接间隔时间) us或者 18073022-18053021:连接间隔为相邻M->S的时间点之差的绝对值。

猜你喜欢

转载自blog.csdn.net/qq_24179601/article/details/87184803
今日推荐