Flowers_World
分类: 嵌入式
2016-04-27 09:31:48
1.工具:ZBOSS_Sniffer_v1.0_x86_Win_bin
2.硬件平台:cc2530(用cc2530可以抓不同型号的zigbee的数据包)
标签:
接触zigbee一年多,一直以来都在寻找开源协议栈。在做CC2530的抓包功能时,偶然看到了这个。ZBOSS,zigbee open source stack,。
这是一个经过联盟认证的协议栈,比大家相对熟悉的FreakZ要好一点。从某个前辈那得知了几年前的一些历史故事,这个跟台湾UBEC颇具渊源的协议栈,是第一个通过联盟认证。一方面他有基于CC2530的工程,方便大家下手;另一方面,它的代码应该是比FreakZ还要好,至少从FreakZ的release note就能知道其动态内存方式还有问题。
最近利用ZBOSS_Sniffer实现了CC2530的802.15.4的抓包功能,并摸索了其底层原理,总结了这么份文档。想想人家DSR那么大方地开源,那我这篇东西就共享出来。
下载安装wireshark通用版本。我的是“Wireshark-win32-1.12.3.exe”。
在ZBOSS官网下载Sniffer工具包“ZBOSS_Sniffer_v1.0_x86_Win_bin.zip”。目录如下:
gui目录中为抓包工具,hex中为CC2530和CC2531的两个抓包固件。测试发现,该固件要求CC2530使用串口1,且无PA,硬件满足的话就可以直接使用hex中的固件。如果你的硬件有差别,就需要自行修改源码进行编译。
打开gui目录中的zboss_sniffer.exe。将wireshark执行路径及CC2530所用串口配置好,那么就可以使用了,注:不同的硬件平台sniffing channel是不一样的。
使用wire shark + 2530模块抓包,与TI packet sniffer + 2531 Dongle对比。发现二者的数据一致,所以wire shark的这套抓包基本可用。
下图是抓包的例子。UI界面由数据帧列表,帧解析详情,以及帧原始数据三个方框组成,内容较为清晰。有一个亮点,对于帧格式理解很有帮助,点击最下方的十六进制数据,对应的解析会高亮显示。比如图中点击了6B 00,Destination PAN就高亮显示了。
Wireshark与CC2530是通过串口进行通讯的,波特率为115200,工具界面将这些隐藏了,默认即可通讯。
通过对串口数据抓包,也大致明白了wireshark与CC2530的交互协议。
a.开始抓包
Wireshark->cc2530:0x0C(信道号)
b.暂停抓包
Wireshark->cc2530:0x01
c.抓包数据
cc2530->Wireshark:25 00 00 00 20 41 88 88 6B 00 FF FF 00 00 09 10 FC FF 00 00 01 62 98 91 96 02 00 4B 12 00 08 61 00 00 00 16 EC (某个抓包例子)
对应的原始数据帧:
0x41 0x88 0x88 0x6b 0x00 0xff 0xff 0x00 0x00 0x09 0x10 0xfc 0xff 0x00 0x00 0x01 0x62 0x98 0x91 0x96 0x02 0x00 0x4b 0x12 0x00 0x08 0x61 0x00 0x00 0x00
所以这个数据帧格式大概是:total_len(1b)+frame_len(4b)+data+crc(1b)+end_flag(1b)