一、簡介
本文講解如何用USB_dongle如何進行藍牙數據的抓包。
二、實驗平臺
協議棧版本:BLE-CC254x-1.4.0
編譯軟件:IAR 8.20.2
硬件平臺:Smart RF(主芯片CC2541),Usb_dongle
三、版權聲明
聲明:喝水不忘挖井人,轉載請註明出處。
原文地址:
聯繫方式:[email protected]
開源四軸羣:84342712
四:基礎知識
藍牙4.0的開發, 現在真熱火的很, 但是用cc2540 usb-dongle如何抓包, 並且, 即使很多朋友到TI官網論壇去找信息,不少朋友依然是無功而返,實際上, 用cc2540 usb-dongle來進行ble數據的抓包,並不像用電腦的wireshark等軟件來抓取ip包一樣簡單。
我們需要明白的是,ble的廣播是可以指定廣播信道的,廣播信道分別是37、38、39, 但TI的協議棧官方例程裏已經默認設置了在廣播階段 同時三個信道一起廣播,但是一旦跟主機連接上後,就只在其中的一個信道傳輸數據,所以我們是要指定其中的一個信道的, 可惡的是, 這個連接上的信道也是隨機的, 我們可以在抓取到連接包後, 填入發起者(即是主機)的地址和信道即可。
下面我們用 TI官方例程 SimpleBLEPeripheral 結合 cc2540 usb-dongle 和 SmartRF Packet Sniffer 軟件來實現數據包的抓取和讀寫
【1】首先要讓開發板跑 SimpleBLEPeripheral , 這裏不是重點, 先不說哈。
【2】然後,把燒錄了“ sniffer_fw_cc2540_usb.hex” 固件的 usb-dongle插入到pc, 如果沒有安裝驅動, 是要安裝的驅動的, 但是如果你已經安裝了 SmartRF Packet Sniffer 軟件, 那麼驅動就已經默認安裝了。
【3】 運行 SmartRF Packet Sniffer 。如下圖:
上圖, 描述的是, 一旦主機和從機連接上後, 到
這一行, 抓包就不在顯示了, 這個時候, 如上填入地址, 並選好信道號, 然後再重新復位從機,主機重新連接,這個時候不一定 SmartRF Packet Sniffer 就能顯示到連接後的數據包, 如果不能連接上, 就試試 把 改成 38、 39等等, 多試試幾次, 就會出現下面圖了。(下圖表明抓取到了ble的數據包)
下面用lightblue進行一個char1的讀操作, lightblue讀取到了0x04.
下面用lightblue進行一個char1的寫操作, lightblue寫入0x01.
在實際開發中, 這個抓包還是顯得比較重要的, 比如android4.3的ble, 目前還不是很穩定,這個時候你又不能確定是不是你代碼的問題還是從機的問題, 我們通過抓取空中傳遞的數據包, 就能確定到底是在主機或從機的問題。
要說的是, 上圖當中, 你要問我各個字段都是什麼意思, 我還真立刻回答不出來,我們要學會就着問題去找答案,而不是背誦。