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

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

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

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

評(píng)論