如何使用CC2540 USB-Dongle進行抓取藍牙通訊數據包

參考鏈接: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:


3、點擊Start開始捕抓數據:


4、從機開始廣播,捕捉到數據如下:



5、主機連接從機,捕抓數據如下:



默認37通道,由於上面說明過:從機廣播時是同時廣播37、38、39通道,所以不管設置哪個通道都能捕抓到廣播數據,在主機和從機連接上之後,會隨機選擇一個通道進行數據傳輸,所以這裏開始的時候選擇37、38、39任何一個通道都一樣,沒有太大意義和區別,因爲廣播的時候是3個通道都有數據,而連接上之後,連接通道是隨機的,選哪個通道概率都一樣;


如果捕抓的數據中有黃色數據,說明主機成功連接從機,並且連接後的數據傳輸通道是當前通道;


如果沒有出現黃色數據而出現卡住的現象,說明主機成功連接從機,但是連接後的數據傳輸通道不是當前通道37,所以在當前通道是看不到數據的;

那麼在此就會想到切換到其他通道去捕抓,先是暫停,然後切換通道到38或39,點擊開始,那麼你會發現數據還是卡住不動,原因就是在每次暫停之後開始,從機都要重新廣播,SmartRF Packet Sniffer才能重新捕抓到數據,那麼既然是重新廣播了,既代表着主機再次連接上從機時,數據傳輸的通道又是隨機選擇了,可能是38.39,也可能是37;

以上想說明的是沒必要去重新切換通道,因爲切換後就重新廣播了,連接後傳輸通道又是隨機了,所以就使用一個通道捕抓就好(當然也可以是38.39);


那麼當卡住的時候,只要重新廣播(重新廣播時如果SmartRF Packet Sniffer數據沒有刷新,那就先暫停,再開始就好了),再連接,重複幾次,總會有一次看到黃色數據的(不行就多試幾次);


6、捕抓主機讀操作數據如下:


主機去讀從機的數據時,如上圖所示,可以捕抓到讀請求和讀回覆;


7、捕抓主機寫數據如下:


主機去讀從機的數據時,如上圖所示,可以捕抓到讀請求和讀回覆;



五、補充

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;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章