前言
好久不見啊,大伙假期過得咋樣?
最近我在研究 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 居然自動完成了!真是太強了!