查看: 824|回复: 0
打印 上一主题 下一主题

如何使用CC2540 USB-Dongle进行抓取蓝牙通讯数据包--红萝卜

[复制链接] qrcode

32

主题

63

帖子

163

积分

注册会员

Rank: 2

积分
163
楼主
跳转到指定楼层
发表于 2015-10-22 10:07 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

参考链接:http://blog.csdn.net/mzy202/article/details/32408223


一、实验目的

1、利用CC2540 USB-Dongle来抓取蓝牙主机与从机之间的通讯数据;


二、说明

1、蓝牙从机在广播的时候,广播的通道是可以指定的,广播信道分别是37、38、39,可以指定在任意个通道上广播或三个通道同时广播,更改广播通道参考链接http://blog.csdn.net/feilusia/article/details/48781611;


2、在TI协议栈的官方例程里是默认在广播的时候同时广播三个通道(37、38、39),但是一旦跟主机连接上后,就只在其中的一个信道传输数据,这个是随机性的,这样说,总有一次总有一个通道能捕抓到数据,所以做实验的时候要多试几次;


3、关于对Connect to initiator address 功能的理解:

在第一行的参考链接中,阿莫有提到要填入发起者地址并勾上Connect to initiator address选项,经过本来多次测试并发现勾不勾上好像没有太多区别(有可能是自己知识薄浅),所以对Connect to initiator address这个功能的认识很模糊,在查看手册时发现是这样解释的:

上面英文的大概意思是:在Radio Configuration tab选项中勾上Connect to Initiator Address并填入主机地址,捕抓设备将根据填入的地址去跟随主机与从机之间的数据连接,如果不选择这个选项,捕抓设备不会跟踪指定连接,会开始跟随在当前广播通道上(37)的出现第一个数据连接;

我的理解是:勾上之后,抓包工具就会在设定的当前通道上(37),根据你填入的地址来捕捉数据连接(只会捕抓填入的主机地址的数据连接),而不勾选的话,捕抓工具将捕抓当前通道上(37)第一个出现的数据连接;

在以下实验中不勾选Connect to Initiator Address;

SmartRF Packet Sniffer使用手册中文版:http://pan.baidu.com/s/1o6AbAqu

SmartRF Packet Sniffer使用手册英文版:http://pan.baidu.com/s/1o608kL8


三、实验平台

1、蓝牙协议栈:1.3.2

2、抓包工具:CC2540 USB Dongle

3、抓包软件:SmartRF Packet Sniffer 2.16.3

4、软件平台:IAR For 8051 8.10.3

5、硬件平台:Smart RF开发板(从机),ios官方APP(主机)


四、实验步骤

1、 “ sniffer_fw_cc2540_usb.hex” 固件烧录到CC2540 USB Dongle,并在电脑上安装 SmartRF Packet Sniffer 驱动,这里就不详细解释(很简单的事); 

2.打开SmartRF Packet Sniffer软件:

选择Bluetooth Low Energy并点击Start:

如何使用CC2540 USB-Dongle进行抓取蓝牙通讯数据包--红萝卜

3、点击Start开始捕抓数据:

如何使用CC2540 USB-Dongle进行抓取蓝牙通讯数据包--红萝卜

4、从机开始广播,捕捉到数据如下:

如何使用CC2540 USB-Dongle进行抓取蓝牙通讯数据包--红萝卜


5、主机连接从机,捕抓数据如下:

如何使用CC2540 USB-Dongle进行抓取蓝牙通讯数据包--红萝卜


默认37通道,由于上面说明过:从机广播时是同时广播37、38、39通道,所以不管设置哪个通道都能捕抓到广播数据,在主机和从机连接上之后,会随机选择一个通道进行数据传输,所以这里开始的时候选择37、38、39任何一个通道都一样,没有太大意义和区别,因为广播的时候是3个通道都有数据,而连接上之后,连接通道是随机的,选哪个通道概率都一样;


如果捕抓的数据中有黄色数据,说明主机成功连接从机,并且连接后的数据传输通道是当前通道;


如果没有出现黄色数据而出现卡住的现象,说明主机成功连接从机,但是连接后的数据传输通道不是当前通道37,所以在当前通道是看不到数据的;

那么在此就会想到切换到其他通道去捕抓,先是暂停,然后切换通道到38或39,点击开始,那么你会发现数据还是卡住不动,原因就是在每次暂停之后开始,从机都要重新广播,SmartRF Packet Sniffer才能重新捕抓到数据,那么既然是重新广播了,既代表着主机再次连接上从机时,数据传输的通道又是随机选择了,可能是38.39,也可能是37;

以上想说明的是没必要去重新切换通道,因为切换后就重新广播了,连接后传输通道又是随机了,所以就使用一个通道捕抓就好(当然也可以是38.39);


那么当卡住的时候,只要重新广播(重新广播时如果SmartRF Packet Sniffer数据没有刷新,那就先暂停,再开始就好了),再连接,重复几次,总会有一次看到黄色数据的(不行就多试几次);


6、捕抓主机读操作数据如下:

如何使用CC2540 USB-Dongle进行抓取蓝牙通讯数据包--红萝卜

主机去读从机的数据时,如上图所示,可以捕抓到读请求和读回复;


7、捕抓主机写数据如下:

如何使用CC2540 USB-Dongle进行抓取蓝牙通讯数据包--红萝卜

主机去读从机的数据时,如上图所示,可以捕抓到读请求和读回复;



五、补充

1、首先感谢阿莫和香瓜的支持;

2、之所以写这篇文章是因为我既然用了2天时间才捕抓到数据包,多么低的效率和多么痛苦的事情,先让我哭会,哭完了,我要把它记录下来,让更多的人不要走弯路,当然也有可能我写的不好,还会误导人,所以请各位同学指点指点,共同学习;

3、事情是这样的:由于程序出现通讯问题,所以我想抓一下数据包看看,然后我就去问香瓜,香瓜叫我去看阿莫的教程(就是第一行的链接),我去看了,但是心里没底,明明按照阿莫的方式做了,可还是没有数据出来,本来看阿莫教程后,思路是很清晰的,但有时候又有数据,而别人就分分钟可以,一下子乱了,各种换硬件,换手机,还是不行啊,然后这样下去不是方法啊,绝知此事要躬行,所以觉得不试了,去找各种资料了,逛各种论坛了,完了回来很淡定,就一个37通道,一直重复广播连接,然后几下黄色就出来了,,然后试着读数据写数据,还没捕抓到,心累,不断尝试,有时候又可以看到数据,不知所措,最后想到换个软件试试,结果就OK了,那个软件是IOS调试APP,一下子明了,因为之前用的调试APP不是官方的,是私人做的,有可能那个APP的发送数据格式不符合SmartRF Packet Sniffer的数据格式,所以就捕抓不到了,这是硬伤,所以能用借个苹果手机调试就不要用安卓手机调试了,不可预知的问题搞死人;

4、在“ sniffer_fw_cc2540_usb.hex” 固件烧录到CC2540 USB Dongle时,下载完成后,你会发现CC2540 USB Dongle绿灯是亮的,拔下来再插上去,绿灯就不亮了,这不是什么硬件啊 驱动啊的问题,只是烧录固件的时候,没有接触好,多烧录几次;


六、总结

1、只需要用一个通道去捕抓数据,在一个通道上多尝试几次就会捕抓到连接后的数据,这时肯定的;

2、如果连接上之后可以看到底层的通讯数据,而看不到自己读操作和写操作的数据,那就换苹果手机的调试APP,因为有些山寨的调试APP可能会有BUG;


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表