小編之前經(jīng)常對群里的網(wǎng)友說 “幾十塊錢的捉包都可以捉Mesh數(shù)據(jù)包的話,那Ellisys和Frontline不就倒閉了嗎?” 后來發(fā)現(xiàn)小編還是太 “草率” 了;
隨著科技的不斷發(fā)展,目前是可以使用低成本的硬件來實現(xiàn)Mesh數(shù)據(jù)的捉包與解密的,那么到底是怎么做的呢?Here we go!
前期準(zhǔn)備
首先,我們需要如下幾個工具:
- 紅旭無線的52840 Dongle*
- 大名鼎鼎的協(xié)議分析軟件Wireshark
安裝最新的版本即可
- Python 3.6以上
注意: 安裝時需要將pip也安裝上
- nRF Sniffer for Bluetooth LE
下載最新的版本即可
- nRF Connect for Desktop( 非必須 )
下載最新的版本即可(非必須,我們出廠時候,已經(jīng)使用該軟件燒寫好抓包固件了。如果需要Dongle可以留言客服修改固件)
軟件配置
因為我們最終是調(diào)用Wireshark對抓取到的數(shù)據(jù)包進(jìn)行協(xié)議分析,所以我們此時還需要對上述下載的
nRF Sniffer for Bluetooth LE進(jìn)行配置,操作如下所示:
- 在 Sniffer_Software/extcap/ 文件夾中打開CMD并安裝相應(yīng)的依賴包,以下是小編的路徑:
F:BluetoothNordicSniffernrf_sniffer_for_bluetooth_le_3.1.0_7cc811fextcap
以及命令
pip3 install -r requirements.txt
因為小編已經(jīng)安裝過了,所以提示說已經(jīng)安裝完成;如果是第一次安裝的話就會自動下載相應(yīng)的依賴包;
- 復(fù)制Nordic的捉包工具到Wireshark的文件中:
- 打開Wireshark軟件,并選擇 **Help ** --> About Wireshark
- 選擇 “Floders” ,并雙擊Global Extcap path就會跳到相對應(yīng)的路徑,并復(fù)制 Sniffer_Software/extcap/ 文件夾中的內(nèi)容:
- 基本上,這個時候軟件的配置已經(jīng)完成了;此時我們在復(fù)制后的這個目錄下,可以用如下命令進(jìn)行驗證是否配置成功:
nrf_sniffer_ble.bat --extcap-interfaces
采用上述在本目錄下打開CMD的方法,輸入上述的指令,如果出現(xiàn)下述的界面則說明配置成功:
抓包原理
可能有讀者此時有點不耐煩了,但是在開始抓包之前,小編覺得還是很有必要跟大家講講這個抓包原理到底是怎么樣的;廢話不多說,老規(guī)矩---上圖?。?!
從上圖可知,如果僅僅是抓取廣播包的話,那么就省事多了,直接對著37,38,39三個廣播信道掃描,然后對抓取到的數(shù)據(jù)進(jìn)行解析即可;當(dāng)然如果是擴(kuò)展廣播包的話,可能會比較麻煩些,但是這個小編以后會專門開個章節(jié)進(jìn)行講解;眾所周知,BLE連接上之后每個連接間隔都是會跳頻的,那么這個時候抓包器又是怎么抓的呢?BLE 5.0之前,跳頻的步長是固定的,但是5.0之后跳頻的步長則變成隨機(jī)了,這樣對抓包器的要求就更高了;但是,再復(fù)雜也是通過數(shù)學(xué)公式計算出來的,現(xiàn)在后悔沒有把數(shù)學(xué)學(xué)好吧?
由于5.0之后的跳頻算法比較復(fù)雜,小編這里不表,感興趣的讀者可以自行閱讀Spec;但是,像小編這樣的學(xué)渣來說,有沒有辦法通過輸入某些值,即可算出跳頻的列表呢? 答案:當(dāng)然是有的 ,這個時候就不得不祭出一個神器了,先讓大伙看看效果:
紅色高亮是計算出來的跳頻列表,而下圖是實際抓包時的數(shù)據(jù)通道列表:
從上述的兩幅圖,我們可以看到第0~4個連接事件的跳頻信道跟抓包得到的數(shù)據(jù)信道是完全一樣的;其中CONNECT_IND的消息攜帶有 Access Address ,我們利用神器只要將Access Address值的內(nèi)容輸入進(jìn)去即可計算出整個跳頻列表;同理,抓包器就利用這個CONNECT_IND的消息,計算出下一個信道在哪里,從而實現(xiàn)抓包的目的,這也是為什么在抓取數(shù)據(jù)包時,一定要在廣播前就打開Sniffer,否則抓取不到數(shù)據(jù)包;
開始抓包
接下來,小編正式講解開始本篇文章的重點,也是大家最喜歡的環(huán)節(jié),那么怎么使用紅旭無線的52840 Dongle進(jìn)行抓取Mesh數(shù)據(jù)包并解密呢?
- 首先,打開Wireshark選擇紅旭無線的52840 Dongle,如下圖所示:
- 雙擊上圖中的 “nRF Sniffer for Bluetooth LE COM22” ,即可開始抓包
- 由于我們周邊會大量存在其他我們不想要的BLE數(shù)據(jù)包,那么這個時候就需要過濾一下,這里小編過濾了普通的BLE數(shù)據(jù)包,只保留了Mesh相關(guān)的數(shù)據(jù)包以及用于測試那個設(shè)備,過濾的命令如下:
((pbadv) || (provisioning)||(btmesh)||(beacon) ) && ((btle.advertising_address == eb:7b:7a:14:1c:02)||(btle.advertising_address == d3:31:5a:db:35:91))
- 其中一個 HX-DK-夏 Z1A00下載Nordic官方的Light_Switch固件,另外一個 HX-DK-夏 Z1A00下載Nordic官方的Provisioner固件
- 按下Provisioner那個開發(fā)板的 Button 1 ,此時Provisioner這個開發(fā)板就開始對未入網(wǎng)的設(shè)備進(jìn)行配網(wǎng)
- 這個時候紅旭無線的52840 Dongle就會將整個入網(wǎng)過程抓取,并顯示在Wireshark界面上;然而,我們大家都知道,Mesh入網(wǎng)之后所有的數(shù)據(jù)都是通過加密的,那么如果解密呢?這個其實跟Ellisys是一樣的,只要輸入Netkey,Appkey,DevKey以及IV Index即可;隨便選中一個加密后的Mesh數(shù)據(jù)包,將前面提到的內(nèi)容填充進(jìn)去,具體操作如下:
按照上圖中的步驟填充Netkey,Appkey,DevKey以及IV Index,這里以小編的為例:
需要注意的是: 所有的Key都要在前面加上“0x”,其中SRC Address指的是節(jié)點元素的首地址 ;至此,Wireshark就可以解析所有Mesh加密之后的內(nèi)容了;
注意: 為了提高抓取GATT-Bear的數(shù)據(jù)包概率,應(yīng)該指定抓取某個設(shè)備,經(jīng)過小編實測之后,基本上可以抓取到GATT-Bear的交互數(shù)據(jù)包;具體的配置如下:
其中Device就是要你指定的被抓取的設(shè)備,同時如果發(fā)現(xiàn)紅旭無線的52840 Dongle的紅色LED此時高亮,就說明已經(jīng)抓取到連接的數(shù)據(jù)包了;
實驗結(jié)果
下面是小編用紅旭無線的52840 Dongle抓取到的Mesh入網(wǎng)以及配置的整個過程:
-
led燈
+關(guān)注
關(guān)注
22文章
1593瀏覽量
109170 -
Mesh網(wǎng)絡(luò)
+關(guān)注
關(guān)注
0文章
44瀏覽量
14481 -
SRC
+關(guān)注
關(guān)注
0文章
61瀏覽量
18259 -
python
+關(guān)注
關(guān)注
56文章
4822瀏覽量
85855 -
nrf52840
+關(guān)注
關(guān)注
2文章
101瀏覽量
8471
發(fā)布評論請先 登錄
相關(guān)推薦
藍(lán)牙mesh網(wǎng)絡(luò)在數(shù)據(jù)包的應(yīng)用
解密藍(lán)牙mesh系列 | 第七篇
低成本先鋒開發(fā)工具包使用有限制嗎?
低成本無線射頻芯片A7105
如何利用FPGA的硬件描述語言來實現(xiàn)AES的加解密算法?
數(shù)據(jù)包解密必須要配置哪些
如何低成本實現(xiàn)大棚自動打藥
使用STM32F10xxx實現(xiàn)低成本現(xiàn)實的應(yīng)用方案
藍(lán)牙Mesh技術(shù)—邊緣網(wǎng)絡(luò)的成長
基于FPGA的低成本AES IP核的設(shè)計與實現(xiàn)
低成本mTouch評估工具包的詳細(xì)中文資料概述
如何才能使用低成本實現(xiàn)非接觸式的數(shù)據(jù)交互

如何低成本實現(xiàn)AES密碼算法的硬件

泰凌微電子自研藍(lán)牙Mesh解密分析工具操作說明

低成本實現(xiàn)MCU非接觸式數(shù)據(jù)交互

評論