前言

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

最近我在研究 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包的更多相关文章

  1. 手把手教你如何用Fiddler抓取手机数据包(iOS+Android)

    本文主要教你如何通过 Fiddler 来抓取手机端的数据包,包括 iOS 和 Android 端的配置和抓取. 一.Fiddler下载安装 访问 Fiddler 官网:https://www.tele ...

  2. 油猴脚本 之 网教通直播评论记录抓取 v2.0

    先放一个 <油猴脚本 之 网教通直播评论记录抓取>那篇文章的传送门 . 修复内容 将所有表情转为 [符号表情] 字样,而非删除: 修复被禁言用户读取异常,现在被禁言用户表示为 张三 [已禁 ...

  3. Python之手把手教你用JS逆向爬取网易云40万+评论并用stylecloud炫酷词云进行情感分析

    本文借鉴了@平胸小仙女的知乎回复 https://www.zhihu.com/question/36081767 写在前面: 文章有点长,操作有点复杂,需要代码的直接去文末即可.想要学习的需要有点耐心 ...

  4. 手把手视频:万能开源Hawk抓取动态网站

    Hawk是沙漠之鹰历时五年开发的开源免费网页抓取工具(爬虫),无需编程,全部可视化. 自从上次发布Hawk 2.0过了小半年,可是还是有不少朋友通过邮件或者微信的方式询问如何使用.看文档还是不如视频教 ...

  5. 手把手教你如何使用Charles抓包

    一.为什么使用charles 前几天因为需要通过抓包定位问题,打开了尘封已久的fiddler,结果打开软件后什么也干不了,别说手机抓包了,打开软件什么请求也抓不到. 很多时候都是如此,如果一个方案不行 ...

  6. Fiddler基本原理与抓取Andriod与IOS的App数据包

    Fiddler基本原理 Fiddler数据包的原理是Fiddler将自己设置为一个代理服务器,默认监听127.0.0.1:8888端口同时将浏览器的HTTP.HTTPS协议设置为使用代理服务器也就是使 ...

  7. nodejs抓取数据二(列表解析)

    这里做得比较暴力,没有分页取出数据解析,O(∩_∩)O哈哈~,居然没有被挂机.不过解析的坑特别多...不过大部分我想要的数据都拿到了. //解析列表数据 var http = require(&quo ...

  8. 如何抓取基于https协议的webservice数据包

    方法一:基于Fiddler2等第三方工具(需要在Java端禁用SSL安全检查) 原文拷贝自http://blog.csdn.net/zmxj/article/details/6327775,向原作者表 ...

  9. fiddler 抓取iphone发出的http和https包

    1.清理iphone的描述文件,在通用里面设置.这一步目的防止手机里面已经存在了DO_NOT_TRUST_FiddlerRoot证书,导致后面抓不了包,所以先清理下 2.下载安装fiddler,百度或 ...

随机推荐

  1. 【记录一个问题】cv::cuda::BufferPool发生assert错误

    cv::cuda::setBufferPoolUsage(true); const int width = 512; const int height = 848; const int channel ...

  2. pytest文档2-用例执行

    用例设计原则 1.文件名以test_******.py文件和*******_test.py 2.以test_****开头的函数 3.以Test***开头的类 4.以test_*****开头的方法 5. ...

  3. cocos2dx 入口函数分析

    以下是main函数最开始的两段,也是cocos2d一开始执行的地方: AppDelegate app; return Application::getInstance()->run(); 接下来 ...

  4. QMainWindow(二)

    mainwindow.h: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> class MainWindo ...

  5. golang中字符串、数值、2进制、8进制、16进制、10进制、日期和字符串之间的转换

    package main import ( "fmt" "reflect" "strconv" "time" ) fun ...

  6. Servlet-请求转发

    Servlet-请求转发 请求转发:服务器收到请求后,从一个资源跳转到另一个资源的操作叫请求转发 请求转发特点: 1,浏览器地址栏没有变化 2,他们是一次请求 3,他们共享Request域中的数据 4 ...

  7. 磁盘sda,hda,sda1,并行,串行

    1.sd,hd表示硬盘, a表示第一块盘, 1表示硬盘上的第一个分区 2.sd是Serial ATA Disk ,表示硬盘是scsi,SATA串行接口 hd是 hard disk,表示硬盘是IDE(也 ...

  8. unixbench服务器性能测试

    使用 Unixbench5 进行linux系统服务器性能综合测试 1.简介 Unixbench是一个类unix系(Unix,BSD,Linux)统下的性能测试工具,一个开源工具,被广泛用与测试linu ...

  9. Android开发-页面布局

    首页布局 首页是ListView的布局 这个还需要制作ListView组件和适配器来显示数据. 关于页面 关于页面显示的是软件的基本信息和软件制作者的信息 这个就是采用基本的页面布局就行.

  10. css3有趣的transform形变

    在CSS3中,transform属性应用于元素的2D或3D转换,可以利用transform功能实现文字或图像的旋转.缩放.倾斜.移动这4中类型的形变处理 语法: div{ transform: non ...