小编之前经常对群里的网友说 “几十块钱的捉包都可以捉mesh数据包的话,那ellisys和frontline不就倒闭了吗?” 后来发现小编还是太 “草率” 了;
随着科技的不断发展,目前是可以使用低成本的硬件来实现mesh数据的捉包与解密的,那么到底是怎么做的呢?here we go!
前期准备首先,我们需要如下几个工具:
红旭无线的52840 dongle*大名鼎鼎的协议分析软件wireshark安装最新的版本即可
python 3.6以上注意: 安装时需要将pip也安装上
nrf sniffer for bluetooth le下载最新的版本即可
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显示屏接地的正确做法及误区
海尔智家35亿元增资智慧生活家电,创新优势更有用武之地
盘点:2016机器人领域十大前沿技术突破
一个基于瑞芯微Linux RV1126人脸识别项目
目前区块链的应用主要有哪一些
如何使用低成本的硬件来实现Mesh数据的捉包与解密?
电池维护保养小常识
覆铜板 (CCL) 材料的拉伸测试及其测试流程介绍
IntelCorei5-8500处理器评测 平民级的法拉利已经到来
传感器让油烟机更加智能,减少患癌风险
用户大会丨四维图新挖掘数据价值,助推智能网联汽车发展
关于自激式开关电源
工业RFID应用之基础篇(十),RFID在生活中无处不在
科锐实现50A碳化硅功率器件技术突破!
Modbus转Profinet网关与流量变送器兼容转ModbusTCP协议博图配置案例
DSP的定时器
这五大解决方案,已然成了罗姆未来重中之重
容易被ChatGPT取代的十种行业
音响系统中干扰声和啸叫声产生的原因及排除方法
6v蓄电池充电器电路图(七款蓄电池充电器电路图详解)