手把手教你如何通过CC2531抓取Zigbee包,并解析加密Zigbee包

语言: CN / TW / HK

前言

好久不见啊,大伙假期过得咋样?

最近我在研究 Zigbee ,使用了 EFR32(购买链接) 的开发板,之前也研究过一点,水了几篇文章,但是没有深了解和使用。最近 arduino 玩腻了,我开始回过头去继续研究 Zigbee ,这里推荐一下 芯科科技的视频教程(视频链接) 做得确实不错,但是学习的过程中,我遇到一个问题:不知道什么原因 Simplicity studio 自带的抓包工具我用不了,不能抓包就很难受了啊。于是我研究了一下如何通过其他方法抓zigbee包。

不过 Simplicity studio 平台虽然资料比较少,有点复杂,但是熟悉之后确实很好用,比 IAR 什么的要方便很多。

准备阶段

我们需要一个 CC2531 协议分析仪,还需要安装 Wireshark (这里我用的2.4.10版本,据说只能用2.4.x版本),和TiWsPc 。

需要注意的是 Wireshark 和 TiWsPc 必须安装在默认路径下,而且必须先安装 Wireshark 后安装 TiWsPc ,安装完成之后在 Wireshark 的快捷方式后加上:

空格-i\.\pipe\tiwspc_data -k //注意!空格很重要!

使用的时候需要先打开 TiWsPc 然后打开 Wireshark !

使用步骤

TiWsPc

打开 TiWsPc 按顺序点击和勾选,对应的按钮,完成之后就会变成上图所示的样子。

注意:4号框是选择信道的位置,不清楚是哪个信道的需要一个个去试,看哪个信道能抓到包。

Wireshark

完成上面的布置,打开 TiWsPc 后,点击之前被我们修改过的那个 Wireshark 的快捷方式,将会跳过选择网卡的界面,直接进入抓包界面:

不过我们的 zigbee 是加密的,所以这时抓到的包我们是没办法解读的,需要配置Link Key。

解析报文

在 Wireshark 中按快捷键:Ctrl+Shift+P 打开首选项窗口,在左边菜单找到 Protocols 下拉菜单,在最下面找到 Zigbee,然后点击 Edit 按钮,添加Link Key:

这里给大家提供一些常用的Link Key:

# This file is automatically generated, DO NOT MODIFY.
"5A6967426565416C6C69616E63653039","Normal",""
"821fd8fd9e8b54497ab7905516a38c21","Normal",""
"9b24d9cac760e566b35cb1c25f183dde","Normal",""
"c4f96ae7000506d3fcd1627fb85d7eeb","Normal",""
"aa27404546133c11a2bff89dbe2b74e9","Normal",""
"1770b5f6036c8152af280d6e1ba4594a","Normal",""
"27404546133c11a2bff89dbe2b74e99a","Normal",""
"6bb429da97f0357683ec01d22fa88dee","Normal",""
"691ad73075b6c32c41126fe8cd2edb64","Normal",""
"7d1e0bd4c9fa3710d596230ca1f2cfc8","Normal",""
"2aa7c0c5c693bc91223f781d3eabf469","Normal",""
"e4998a8720a526731c71821fd8fd9e8b","Normal",""
"d73075b6c32c41126fe8cd2edb64190a","Normal",""

Zigbee 的加密

这里我们添加的是 Link Key,但是 Zigbee 在网络层还有一层加密 NWK Key 。

这就要说一下Zigbee 加密方式。Zigbee 分别在APS层和网络层进行了加密,也就是对应了 Link Key 和 NWK Key。

NWK Key 的逐跳传输方式,每一个设备都要知道相同的 NWK Key,ZigBee大部分通讯数据都使用的 NWK Key 加密,而NWK Key 是在网络创建的时候由 ZC 节点随机生成的,而新加入的设备的获取这个 NWK Key 的信息是通过 Link Key 加密的,因为这时候设备还没有入网。

Link Key 是端对端传输,只有发送端和接收端知道key,中途传递的设备不需要知道,也不需要解密。这个 Link Key 大部分时候是用来传输 NWK Key ,也就是说我们知道 Link Key 后就可以通过抓取设备入网时携带了 NWK Key 的包,进而知道 NWK Key 。

这个看起来很麻烦的过程 Wireshark 已经可以自动帮我们完成了,Wireshark 添加了 Link Key 后,捕获到一个设备的入网过程,则 Wireshark 会自动从这个入网过程中解析出该 Zigbee 网络的 NWK KEY。

总结

Wireshark 天下第一!我之前还在苦兮兮的想怎么才能抓到携带了 NWK Key 的包,然后发现 Wireshark 居然自动完成了!真是太强了!