TI CC2541的通讯抓包.

Preamble: 引导码, 为1个字节, 不显示出来.

Access Address: 访问地址, 长度为4个字节, 所有广播包的访问地址都是0x8E89BED6, 如下图.

当PDU在广播信道传输时, 就是广播PDU, 如果在数据信道传输, 就是数据PDU, CRC就是根据这个PDU计算的.

广播信道的PDU包括一个16bit的头, 跟一个可变长度的负载.

发送跟接受地址的0/1, 代表发送或者接收方的地址是:

0: 公共地址

1: 随机地址

这里, 发送方地址为随机地址, 接收方地址为公共地址, PDU长度为17个byte.

说回PDU类型:

ADV_IND用于可连接的非定向广播时间中, 具有以下格式:

TxAddr为随机地址, 那么这个地址就在AdvA中, 6个字节, 即MAC地址, 而且是随机的.

AdvData里面是广播者的数据.

再看一个ScanQeq跟ScanRsp的两个数据包:

首先,发请求的

TxAdd是1, 证明是随机地址.

Adv的PDU头展示的Type是4, 即: ADC_SCAN_RSP

static uint8 scanRspData[] =
{
  // complete name
  0x14,   // length of this data
  GAP_ADTYPE_LOCAL_NAME_COMPLETE,   //0x09
  0x53,   // ‘S‘
  0x69,   // ‘i‘
  0x6d,   // ‘m‘
  0x70,   // ‘p‘
  0x6c,   // ‘l‘
  0x65,   // ‘e‘
  0x42,   // ‘B‘
  0x4c,   // ‘L‘
  0x45,   // ‘E‘
  0x50,   // ‘P‘
  0x65,   // ‘e‘
  0x72,   // ‘r‘
  0x69,   // ‘i‘
  0x70,   // ‘p‘
  0x68,   // ‘h‘
  0x65,   // ‘e‘
  0x72,   // ‘r‘
  0x61,   // ‘a‘
  0x6c,   // ‘l‘

// connection interval range
  0x05,   // length of this data
  GAP_ADTYPE_SLAVE_CONN_INTERVAL_RANGE,
  LO_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL ),   // 100ms
  HI_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL ),
  LO_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL ),   // 1s
  HI_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL ),

// Tx power level
  0x02,   // length of this data
  GAP_ADTYPE_POWER_LEVEL,    //0x0A
  0       // 0dBm
};

这样看来, 这个ScanRspData里面包含几部分,包括

第1个字节, 是名称的数据长度: 0x14, 注意, 是20

第2个字节, 0x09, 表示接着是BLE全名, 如果0x08表示是短名.

接下来就是BLE的名字SimplePeripheral, 一共19个字节, 加上前面一个字节, 就是20个字节.

接着又是数据长度, 5个字节

接着是最小最大连接间隔设定的代号, 0x12

接着是4个字节的具体设置.

最后是关于发射的强度/功率的设置的3个字节, 0dBm.

再来看一个从扫描到连接的例子:

首先发一个连接请求:

连接请求的格式是:

InitA是发起者的地址, AdvA就是广播者的地址, 也就是要连接的目标地址.

接着是LLData里面22个字节.

Inteval/Lantency/Timeout就是BLE连接属性

0x0018/0x0000/0x0048,  这是iPhone手机的默认设置.

LLID为1, 表示负载域是一个LL DATA PDU, 数据包, 如果是3, 表示是控制包.

NESN: nextExpectedSeqNum.

MD如下:

看得我都要怀疑人生了, 我看这个干嘛???

好吧, 这个是整个通讯的建立过程, 对无线的架构师可能是有参考意义的...

时间: 2024-10-23 03:35:31

TI CC2541的通讯抓包.的相关文章

Protobuf简单使用及其抓包分析

早之前就用过Google的Protobuf做数据编码,一直没有深入理解其中的原理,最近做了一次通讯抓包,发现其中很多Protobuf编码的数据包,于是决定分析一下其中的数据包及其编码. 一.Protobuf的使用 首先来简单介绍一下Protobuf的使用,这里以windows下java开发为例,几个步骤:编写*.proto ->使用google提供的protoc.exe生成*.java->项目中导入protobuf的.jar包进行开发即可.先看这里的*.proto文件: package com

Wireshark抓包分析TCP 3次握手、4次挥手过程

Wireshark简介 更多有关Wireshark的教程.软件下载等,请见:http://www.52im.net/thread-259-1-1.html,本文只作简要介绍. 1Wireshark 是什么? Wireshark 是最著名的网络通讯抓包分析工具.功能十分强大,可以截取各种网络封包,显示网络封包的详细信息. 你可以把网络包分析工具当成是一种用来测量有什么东西从网线上进出的测量工具,就好像使电工用来测量进入电信的电量的电度表一样(当然比那个更高级).过去的此类工具要么是过于昂贵,要么是

如何在Windows系统上用抓包软件Wireshark截获iPhone等网络通讯数据

http://www.jb51.net/os/windows/189090.html 今天给大家介绍一种如何在Windows操作系统上使用著名的抓包工具软件Wireshark来截获iPhone.iPad等iOS设备或Android设备的网络通讯数据的方法 不管是iPhone的iOS还是Android系统上开发的应用App基本上都会需要使用网络通讯来传输数据.开发者有的时候可能会需要通过抓包的方式来了解应用具体在传输些什么数据,以及数据是否正确.今天给大家介绍一种如何在Windows操作系统上使用

ZBOSS_Sniffer用开源方案实现CC2530的抓包

接触zigbee一年多,一直以来都在寻找开源协议栈.在做CC2530的抓包功能时,偶然看到了这个.ZBOSS,zigbee open source stack,http://zboss.dsr-wireless.com/projects/zboss/. 这是一个经过联盟认证的协议栈,比大家相对熟悉的FreakZ要好一点.从某个前辈那得知了几年前的一些历史故事,这个跟台湾UBEC颇具渊源的协议栈,是第一个通过联盟认证.一方面他有基于CC2530的工程,方便大家下手:另一方面,它的代码应该是比Fre

Android手机 Fildder真机抓包

Android 手机 Fildder 真Fiddler是一个http调试代理,它能 够记录所有的你电脑和互联网之间的http通讯,Fiddler 可以也可以让你检查所有的http通讯,设置断点,以及Fiddle 所有的"进出"的数据(指cookie,html,js,css等文件,这些都可以让你胡乱修改的意思). Fiddler 要比其他的网络调试器要更加简单,因为它仅仅暴露http通讯还有提供一个用户友好的格式. 对于Android开发的同事最头疼的事情莫过于真机抓包,然后Fiddle

(转)Fiddler简介以及web抓包

一.Fiddler简介 简单来说,Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯.网上简介很多,我们不多说. 二.Fiddler版本 Fiddler有Fiddler2和Fiddler4,两者区别在于,基于的framework不同,也就是系统支持不一样,功能原理都是一样的:电脑操作系统低于win7或是XP系统用Fiddler2就行,win7或win7以上版本,用Fiddler4 版本,建议都用Fiddler4版本: 三.Fiddler软件介绍

UC浏览器的抓包分析

我用手机打开新浪新闻,用wireshark抓包发现并没有到sina网站的流量.我们都知道,互联网访问肯定是必须有网络数据包的.那么新浪网的数据从哪里走了呢?经过仔细分析,发现了如下的数据包: 访问网站时,客户机往vs15.bjct.u3.ucweb.com:8080发了一个请求,在返回的数据包中却发现了sinaimg.cn的数据(应该是来自新浪网的一个图片).在一次新浪网的访问中,出现了数十个这样的通讯连接. 这样事情就一目了然了,UC浏览器在打开网站的时候,并没有按常规的方法去访问网站服务器,

fiddler Android下https抓包全攻略

fiddler Android下https抓包全攻略 fiddler的http.https的抓包功能非常强大,可非常便捷得对包进行断点跟踪和回放,但是普通的配置对于像招商银行.支付宝.陌陌这样的APP是抓不到包的,需要一些特殊的配置,本文把fiddler Android下https抓包的详细配置都罗列出来,供大家参考. 一.普通https抓包设置 先对Fiddler进行设置: 勾选“CaptureHTTPS CONNECTs”,接着勾选“Decrypt HTTPS traffic”.同时,由于我

使用Fiddler对android应用抓包

工作原理 先上个图 此图一目了然,可以看出fiddler在请求中所处的位置,我们就可以确定它能干些什么. 它实际工作在本机的8888端口http代理,我们启动fiddler时,它会自动更改代理设置: chrome中: 从此我们可以看出,只要是http的请求,在请求发起离开本机之前都会经过fiddler,当response回来,没有达到实际请求者时,也会经过fiddler:这样我们就可以在轻易的实现修改请求和响应的内容,这样我们就可以轻松的调试现网的程序. http://www.cnblogs.c