电子说
小编之前经常对群里的网友说 “几十块钱的捉包都可以捉Mesh数据包的话,那Ellisys和Frontline不就倒闭了吗?” 后来发现小编还是太 “草率” 了;
随着科技的不断发展,目前是可以使用低成本的硬件来实现Mesh数据的捉包与解密的,那么到底是怎么做的呢?Here we go!
首先,我们需要如下几个工具:
安装最新的版本即可
注意: 安装时需要将pip也安装上
下载最新的版本即可
下载最新的版本即可(非必须,我们出厂时候,已经使用该软件烧写好抓包固件了。如果需要Dongle可以留言客服修改固件)
因为我们最终是调用Wireshark对抓取到的数据包进行协议分析,所以我们此时还需要对上述下载的
nRF Sniffer for Bluetooth LE进行配置,操作如下所示:
F:BluetoothNordicSniffernrf_sniffer_for_bluetooth_le_3.1.0_7cc811fextcap
以及命令
pip3 install -r requirements.txt
因为小编已经安装过了,所以提示说已经安装完成;如果是第一次安装的话就会自动下载相应的依赖包;
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数据包并解密呢?
((pbadv) || (provisioning)||(btmesh)||(beacon) ) && ((btle.advertising_address == eb:7b:7a:14:1c:02)||(btle.advertising_address == d3:31:5a:db:35:91))
按照上图中的步骤填充Netkey,Appkey,DevKey以及IV Index,这里以小编的为例:
需要注意的是: 所有的Key都要在前面加上“0x”,其中SRC Address指的是节点元素的首地址 ;至此,Wireshark就可以解析所有Mesh加密之后的内容了;
注意: 为了提高抓取GATT-Bear的数据包概率,应该指定抓取某个设备,经过小编实测之后,基本上可以抓取到GATT-Bear的交互数据包;具体的配置如下:
其中Device就是要你指定的被抓取的设备,同时如果发现红旭无线的52840 Dongle的红色LED此时高亮,就说明已经抓取到连接的数据包了;
下面是小编用红旭无线的52840 Dongle抓取到的Mesh入网以及配置的整个过程:
全部0条评论
快来发表一下你的评论吧 !