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