使用NRF52xx sniffer抓取BLE包

2021-10-10 11:33:21 字數 1875 閱讀 6418

抓取ble資料報就和我們做程式開發中列印log功能是一樣的,我們可以方便快捷的獲取程式執行狀態以及出錯後定位bug位置,無線通訊過程中的資料報都是通過電磁波以空氣為介質進行傳播的。所以,我們抓取空氣中的資料報,對ble開發來說,完全是0感知,不會有傳統程式開發過程中log列印的太多影響程式的執行效率這樣的顧慮。

準備nrf52xx的開發板一塊,找到sniffer裡面的hex資料夾,選取合適的韌體燒錄到nrf52xx開發板內,燒錄方式同燒錄其他程式一樣,可以使用jlink或者nrfgo-studio

安裝python是為了安裝pyserial,因為sniffer外掛程式是通過pyserial來獲取底層物理串列埠的資料。python版本可以是2.7也可以是最新的3.x,我系統中裝了其他環境必須要用python2.7,所以就以python2.7為例來說明。

去官網獲取python的安裝包,然後一路next即可安裝完成,安裝完畢後配置系統環境變數,在path裡新建變數,如下圖所示。

然後調出命令列驗證是否安裝成功。

sniffer是nordic公司專門為nrf52xx系列藍芽產品為wireshark編寫的乙個外掛程式,只有改外掛程式正確的安裝,wireshark才能正常呼叫它並分析抓包資料。

在官網找到sniffer安裝包,裡面包含了wireshark的sniffer外掛程式還有nrf52xx的抓包韌體,如下圖所示。

如果不新增這個profile,wireshark抓到的資料報將不會解析成ble資料報的格式,這給分析帶來無盡的痛苦。

-單擊 幫助->關於wireshark ->資料夾

把剛才燒錄好的nrf52xx dangle插入電腦usb口,然後把需要抓取包的手機和藍芽外設放到dangle附近,執行wireshark。

雙擊選擇nrf sniffer for bluetooth le com18就可以抓包了。 不過請注意, 不同的電腦顯示的com口不一樣, 只要是前面顯示nrf sniffer for bluetooth le就沒問題。

如果前面的配置都正確的話,現在應該可以抓到包了,基本的抓包介面如下圖所示:

使能ble資料報著色,分析協議更方便,具體設定如下:

更具體的使用技巧,請參閱這位大佬寫的blog。

nrf52官方串列埠例程

nrf52開發板拿到手快半年了,之前只跑過一次官方例程,然後就放一邊了,現在準備學習一下,首先從串列埠開始。看了初始化函式,知道了預設波特率是38400,可以通過修改巨集改變波特率 然後將例程編譯燒錄,例程跑起來了,但是串列埠助手卻沒有輸出任何資料,很奇怪,於是開關串列埠助手,偶爾會列印出來乙個字元...

mysql5 2使用 5 2 使用MySQL資料庫

目前internet上流行的 構架方式是lamp,其中的m即mysql,作為資料庫,mysql以免費 開源 使用方便為優勢成為了很多web開發的後端資料庫儲存引擎。mysql驅動 go中支援mysql的驅動目前比較多,有如下幾種,有些是支援database sql標準,而有些是採用了自己的實現介面,...

mysql5 2使用 5 2 使用MySQL資料庫

目前internet上流行的 構架方式是lamp,其中的m即mysql,作為資料庫,mysql以免費 開源 使用方便為優勢成為了很多web開發的後端資料庫儲存引擎。mysql驅動 go中支援mysql的驅動目前比較多,有如下幾種,有些是支援database sql標準,而有些是採用了自己的實現介面,...