手把手教你如何通过CC2531抓取Zigbee包,并解析加密Zigbee包
前言
好久不见啊,大伙假期过得咋样?
最近我在研究 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 居然自动完成了!真是太强了!
手把手教你如何通过CC2531抓取Zigbee包,并解析加密Zigbee包的更多相关文章
- 手把手教你如何用Fiddler抓取手机数据包(iOS+Android)
本文主要教你如何通过 Fiddler 来抓取手机端的数据包,包括 iOS 和 Android 端的配置和抓取. 一.Fiddler下载安装 访问 Fiddler 官网:https://www.tele ...
- 油猴脚本 之 网教通直播评论记录抓取 v2.0
先放一个 <油猴脚本 之 网教通直播评论记录抓取>那篇文章的传送门 . 修复内容 将所有表情转为 [符号表情] 字样,而非删除: 修复被禁言用户读取异常,现在被禁言用户表示为 张三 [已禁 ...
- Python之手把手教你用JS逆向爬取网易云40万+评论并用stylecloud炫酷词云进行情感分析
本文借鉴了@平胸小仙女的知乎回复 https://www.zhihu.com/question/36081767 写在前面: 文章有点长,操作有点复杂,需要代码的直接去文末即可.想要学习的需要有点耐心 ...
- 手把手视频:万能开源Hawk抓取动态网站
Hawk是沙漠之鹰历时五年开发的开源免费网页抓取工具(爬虫),无需编程,全部可视化. 自从上次发布Hawk 2.0过了小半年,可是还是有不少朋友通过邮件或者微信的方式询问如何使用.看文档还是不如视频教 ...
- 手把手教你如何使用Charles抓包
一.为什么使用charles 前几天因为需要通过抓包定位问题,打开了尘封已久的fiddler,结果打开软件后什么也干不了,别说手机抓包了,打开软件什么请求也抓不到. 很多时候都是如此,如果一个方案不行 ...
- Fiddler基本原理与抓取Andriod与IOS的App数据包
Fiddler基本原理 Fiddler数据包的原理是Fiddler将自己设置为一个代理服务器,默认监听127.0.0.1:8888端口同时将浏览器的HTTP.HTTPS协议设置为使用代理服务器也就是使 ...
- nodejs抓取数据二(列表解析)
这里做得比较暴力,没有分页取出数据解析,O(∩_∩)O哈哈~,居然没有被挂机.不过解析的坑特别多...不过大部分我想要的数据都拿到了. //解析列表数据 var http = require(&quo ...
- 如何抓取基于https协议的webservice数据包
方法一:基于Fiddler2等第三方工具(需要在Java端禁用SSL安全检查) 原文拷贝自http://blog.csdn.net/zmxj/article/details/6327775,向原作者表 ...
- fiddler 抓取iphone发出的http和https包
1.清理iphone的描述文件,在通用里面设置.这一步目的防止手机里面已经存在了DO_NOT_TRUST_FiddlerRoot证书,导致后面抓不了包,所以先清理下 2.下载安装fiddler,百度或 ...
随机推荐
- echart实现实时疫情图
直接上代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </h ...
- 手把手教你分析解决MySQL死锁问题
在生产环境中如果出现MySQL死锁问题该如何排查和解决呢,本文将模拟真实死锁场景进行排查,最后总结下实际开发中如何尽量避免死锁发生. 一.准备好相关数据和环境 当前自己的数据版本是8.0.22 mys ...
- 开源数据可视化BI工具SuperSet(使用)
上一篇介绍了Linux 下如何安装SuperSet ,本篇简单介绍一下如何使用 1.输入安装时设置的用户名密码登录控制台 2.控制界面如下 3.第一步添加数据源(已安装好的mysql) 点击 da ...
- Redis持久化----RDB和AOF 的区别
关于Redis说点什么,目前都是使用Redis作为数据缓存,缓存的目标主要是那些需要经常访问的数据,或计算复杂而耗时的数据.缓存的效果就是减少了数据库读的次数,减少了复杂数据的计算次数,从而提高了服务 ...
- 企业CICD规模化落地浅析
本次分享的题目是<企业CICD规模化落地>,因此我们不会侧重讲解CICD是什么以及怎样做CICD,而是你已经知道怎样"玩转"CICD了,要如何在一个比较大的企业中规模化 ...
- Redis 源码简洁剖析 04 - Sorted Set 有序集合
Sorted Set 是什么 Sorted Set 命令及实现方法 Sorted Set 数据结构 跳表(skiplist) 跳表节点的结构定义 跳表的定义 跳表节点查询 层数设置 跳表插入节点 zs ...
- vite搭建vue项目-集成别名@、router、vuex、scss就是这样简单
为什么要使用vite 当我们开始构建越来越大型的应用时, 需要处理的 JavaScript 代码量也呈指数级增长. 包含数千个模块的大型项目相当普遍. 这个时候我们会遇见性能瓶颈 使用 JavaScr ...
- 阿里P8整理Mysql面试题答案,助你“脱颖而出”,吊打面试官!(建议收藏)
前言 作为一名开发人员,每天英高都在和数据库进行着斗智斗勇,尤其是互联网行业,对MySQL的使用是比较多的.同样的,因为mysql的重要性以及普及性,在面试的时候一定是一个面试的重点或者说常问问题,说 ...
- Java基础(十一)——反射
一.概述 1.介绍 Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法. 加载完类 ...
- java实现以docx格式导出
直接上代码:Map<String, Object> dataMap = afterLoanReportService.exportReport(startDate, endDate);// ...