小编之前经常对群里的网友说 “几十块钱的捉包都可以捉Mesh数据包的话,那Ellisys和Frontline不就倒闭了吗?” 后来发现小编还是太 “草率” 了;
随着科技的不断发展,目前是可以使用低成本的硬件来实现Mesh数据的捉包与解密的,那么到底是怎么做的呢?Here we go!
前期准备
首先,我们需要如下几个工具:
- 红旭无线的52840 Dongle*
- 大名鼎鼎的协议分析软件Wireshark
安装最新的版本即可
- Python 3.6以上
注意: 安装时需要将pip也安装上
下载最新的版本即可
- nRF Connect for Desktop( 非必须 )
下载最新的版本即可(非必须,我们出厂时候,已经使用该软件烧写好抓包固件了。如果需要Dongle可以留言客服修改固件)
软件配置
因为我们最终是调用Wireshark对抓取到的数据包进行协议分析,所以我们此时还需要对上述下载的
nRF Sniffer for Bluetooth LE进行配置,操作如下所示:
- 在 Sniffer_Software/extcap/ 文件夹中打开CMD并安装相应的依赖包,以下是小编的路径:
F:BluetoothNordicSniffernrf_sniffer_for_bluetooth_le_3.1.0_7cc811fextcap
以及命令
pip3 install -r requirements.txt
因为小编已经安装过了,所以提示说已经安装完成;如果是第一次安装的话就会自动下载相应的依赖包;
- 复制Nordic的捉包工具到Wireshark的文件中:
- 打开Wireshark软件,并选择 **Help ** --> About Wireshark
- 选择 “Floders” ,并双击Global Extcap path就会跳到相对应的路径,并复制 Sniffer_Software/extcap/ 文件夹中的内容:
- 基本上,这个时候软件的配置已经完成了;此时我们在复制后的这个目录下,可以用如下命令进行验证是否配置成功:
nrf_sniffer_ble.bat --extcap-interfaces
采用上述在本目录下打开CMD的方法,输入上述的指令,如果出现下述的界面则说明配置成功:
抓包原理
可能有读者此时有点不耐烦了,但是在开始抓包之前,小编觉得还是很有必要跟大家讲讲这个抓包原理到底是怎么样的;废话不多说,老规矩---上图!!!
从上图可知,如果仅仅是抓取广播包的话,那么就省事多了,直接对着37,38,39三个广播信道扫描,然后对抓取到的数据进行解析即可;当然如果是扩展广播包的话,可能会比较麻烦些,但是这个小编以后会专门开个章节进行讲解;众所周知,BLE连接上之后每个连接间隔都是会跳频的,那么这个时候抓包器又是怎么抓的呢?BLE 5.0之前,跳频的步长是固定的,但是5.0之后跳频的步长则变成随机了,这样对抓包器的要求就更高了;但是,再复杂也是通过数学公式计算出来的,现在后悔没有把数学学好吧?
由于5.0之后的跳频算法比较复杂,小编这里不表,感兴趣的读者可以自行阅读Spec;但是,像小编这样的学渣来说,有没有办法通过输入某些值,即可算出跳频的列表呢? 答案:当然是有的 ,这个时候就不得不祭出一个神器了,先让大伙看看效果:
红色高亮是计算出来的跳频列表,而下图是实际抓包时的数据通道列表:
从上述的两幅图,我们可以看到第0~4个连接事件的跳频信道跟抓包得到的数据信道是完全一样的;其中CONNECT_IND的消息携带有 Access Address ,我们利用神器只要将Access Address值的内容输入进去即可计算出整个跳频列表;同理,抓包器就利用这个CONNECT_IND的消息,计算出下一个信道在哪里,从而实现抓包的目的,这也是为什么在抓取数据包时,一定要在广播前就打开Sniffer,否则抓取不到数据包;
开始抓包
接下来,小编正式讲解开始本篇文章的重点,也是大家最喜欢的环节,那么怎么使用红旭无线的52840 Dongle进行抓取Mesh数据包并解密呢?
- 首先,打开Wireshark选择红旭无线的52840 Dongle,如下图所示:
- 双击上图中的 “nRF Sniffer for Bluetooth LE COM22” ,即可开始抓包
- 由于我们周边会大量存在其他我们不想要的BLE数据包,那么这个时候就需要过滤一下,这里小编过滤了普通的BLE数据包,只保留了Mesh相关的数据包以及用于测试那个设备,过滤的命令如下:
((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那个开发板的 Button 1 ,此时Provisioner这个开发板就开始对未入网的设备进行配网
- 这个时候红旭无线的52840 Dongle就会将整个入网过程抓取,并显示在Wireshark界面上;然而,我们大家都知道,Mesh入网之后所有的数据都是通过加密的,那么如果解密呢?这个其实跟Ellisys是一样的,只要输入Netkey,Appkey,DevKey以及IV Index即可;随便选中一个加密后的Mesh数据包,将前面提到的内容填充进去,具体操作如下:
按照上图中的步骤填充Netkey,Appkey,DevKey以及IV Index,这里以小编的为例:
需要注意的是: 所有的Key都要在前面加上“0x”,其中SRC Address指的是节点元素的首地址 ;至此,Wireshark就可以解析所有Mesh加密之后的内容了;
注意: 为了提高抓取GATT-Bear的数据包概率,应该指定抓取某个设备,经过小编实测之后,基本上可以抓取到GATT-Bear的交互数据包;具体的配置如下:
其中Device就是要你指定的被抓取的设备,同时如果发现红旭无线的52840 Dongle的红色LED此时高亮,就说明已经抓取到连接的数据包了;
实验结果
下面是小编用红旭无线的52840 Dongle抓取到的Mesh入网以及配置的整个过程:
-
led灯
+关注
关注
22文章
1592浏览量
108517 -
Mesh网络
+关注
关注
0文章
44浏览量
14289 -
SRC
+关注
关注
0文章
61浏览量
18076 -
python
+关注
关注
56文章
4811浏览量
85102 -
nrf52840
+关注
关注
2文章
99浏览量
8353
发布评论请先 登录
相关推荐
解密蓝牙mesh系列 | 第七篇
低成本无线射频芯片A7105
数据包解密必须要配置哪些
使用STM32F10xxx实现低成本现实的应用方案
蓝牙Mesh技术—边缘网络的成长
基于FPGA的低成本AES IP核的设计与实现
低成本mTouch评估工具包的详细中文资料概述
如何才能使用低成本实现非接触式的数据交互
![如何才能使用<b class='flag-5'>低成本</b><b class='flag-5'>实现</b>非接触式的<b class='flag-5'>数据</b>交互](https://file.elecfans.com/web1/M00/B1/C4/o4YBAF4DL4eAMu_qAADbVffffjk540.png)
如何低成本实现AES密码算法的硬件
![如何<b class='flag-5'>低成本</b><b class='flag-5'>实现</b>AES密码算法的<b class='flag-5'>硬件</b>](https://file.elecfans.com/web1/M00/B8/94/pIYBAF5zOGGAJHq4AAD-_Y2l_zI178.png)
泰凌微电子自研蓝牙Mesh解密分析工具操作说明
![泰凌微电子自研蓝牙<b class='flag-5'>Mesh</b><b class='flag-5'>解密</b>分析工具操作说明](https://file1.elecfans.com/web2/M00/82/D6/wKgaomRkP7qAQYVAAAAsXGpv4eg699.png)
低成本实现MCU非接触式数据交互
![<b class='flag-5'>低成本</b><b class='flag-5'>实现</b>MCU非接触式<b class='flag-5'>数据</b>交互](http://file.elecfans.com/web1/M00/B1/C4/o4YBAF4DL3-AArt0AAConmFORZ0218.png)
评论