手把手教你如何通过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,百度或 ...
随机推荐
- 《剑指offer》面试题68 - I. 二叉搜索树的最近公共祖先
问题描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p ...
- web刷题记录 极客大挑战2019Knife upload buy a flag
极客2019Knife webshell就是以asp.php.jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理.服务器管理.权限管理等操作.使用方法简单,只需上传一个代码文件,通 ...
- [STM32F4xx 学习] 如何在RAM中调试程序
在RAM中调试程序指的是将程序下载到RAM里面(而不是Flash里面),然后在RAM中执行程序.调试. 为什么要在RAM中调试程序?总结起来有以下两点原因: 1. Flash 擦写次数有限,STM32 ...
- netty系列之:好马配好鞍,为channel选择配套的selector
目录 简介 netty服务的基本构建方式 EventLoopGroup channel 多种构建方式 其他的channel 总结 简介 我们知道netty的基础是channel和在channel之上的 ...
- Cesium入门1 - Cesium介绍
Cesium入门1 - Cesium介绍 Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ Cesium简介 Ce ...
- gin框架中集成casbin-权限管理
概念 权限管理几乎是每个系统或者服务都会直接或者间接涉及的部分. 权限管理保障了资源(大部分时候就是数据)的安全, 权限管理一般都是和业务强关联, 每当有新的业务或者业务变化时, 不能将精力完全放在业 ...
- vue 快速入门 系列 —— Vue 实例的初始化过程
其他章节请看: vue 快速入门 系列 Vue 实例的初始化过程 书接上文,每次调用 new Vue() 都会执行 Vue.prototype._init() 方法.倘若你看过 jQuery 的源码, ...
- Stream流的基本介绍以及在工作中的常用操作(去重、排序以及数学运算等)
平时工作中,我在处理集合的时候,总是会用到各种流操作,但是往往在处理一些较为复杂的集合时,还是会出现无法灵活运用api的场景,这篇文章的目的,主要是为介绍一些工作中使用流时的常用操作,例如去重.排序和 ...
- 创建一个python类 ,self init相关参数的简单介绍
一 创建 ''' 一 使用python 语法 创建一个类, 探究self 是干啥的 1 创建一个对象 car 2 写入两个行参 3 定义两个方法 ''' class Car(): ''' 二 init ...
- 如何美化 Matplotlib 的工具栏和绘图风格
前言 matplotlib 功能十分强大,就是工具栏丑了点.忍了一个学期之后,还是决定自己动手,魔改一波 matplotlib 的工具栏样式.同时给大家分享一下自己按照 MATLAB 写的 matpl ...