蓝牙数据包分析

1.简介

  FTS软件相当于蓝牙的数据分析仪器,它可以抓取通过蓝牙IC的数据包,从包中我们可以看到HCI,L2CAP等各层的封包数据,是一个十分有用的软件。

 

2.HCI的command和event以及Data的格式

HCI Command Format:

用FTS分析蓝牙数据包
HCI Event Format:

用FTS分析蓝牙数据包
HCI ACL Data Format:

用FTS分析蓝牙数据包
HCI SCO Data Format:

用FTS分析蓝牙数据包
 

3.Reset Command与Command Completed Event实例

    Reset Command和Command Completed Event是一对成对出现的command和event。查询手册,Reset Command如下:

用FTS分析蓝牙数据包
OCF为0x0003,OGF为0x03,return parameters定义如下:

用FTS分析蓝牙数据包
可以看出,0x00代表reset成功,其余失败。

Reset Command执行后将返回Command Completed Event,携带status参数。

Command Completed Event定义如下:

用FTS分析蓝牙数据包

携带的event parameter为三个:Num_HCI_Command_packets,Command_Opcode和return_parameters

Num_HCI_Command_packets:表明controller要求host能够发送的command packet的个数,如果为0,表明controller禁止host发送command。

Command_Opcode和相应的HCI Command的Opcode域相同。

return_parameters即为HCI Command要求返回的status

 

利用FTS软件抓取实际蓝牙通信中的HCI层数据包,以Reset command和Command Completed Event为例,如下:

Reset Command:

用FTS分析蓝牙数据包用FTS分析蓝牙数据包

上面的图是从软件中截下来的,可以看到OpCode为0x0c03,即OCF域为0000000011(0x0003),OGF域为000011(0x03)。因为是Little Endian的字节顺序,所以完整的OpCode为0x0c03。因为不携带command parameter,所以parameter total length为0。

再看Command Completed Event:

用FTS分析蓝牙数据包

用FTS分析蓝牙数据包
可以看出,首先是Event Code,为0x0e,其次为parameter total length为0x04,分别为Num_HCI_Command_packets=0x02,OpCode与Reset Command一样,为0x0c03,return_parameter为0x00,表示Reset command执行成功。

 

4.Read_BD_ADDR Command与Command Completed Event实例

首先看Read_BD_ADDR Comamd:

用FTS分析蓝牙数据包
OCF为0x0009,OGF为0x04,返回的parameter为satus和BD_ADDR两个。

抓取实际的HCI Read_BD_ADDR Command包,如下:

用FTS分析蓝牙数据包 用FTS分析蓝牙数据包
OpCode域为0x1009,其中OCF为0000001001(0x0009),OGF为000100(0x04)。因为是Little Endian的字节顺序,所以完整的OpCode为0x0x1009。因为不携带command parameter,所以parameter total length为0。

再看Command Completed Event:

用FTS分析蓝牙数据包
用FTS分析蓝牙数据包

首先是0x0e的EventCode,其次是ToralLength = 0x0A = 10,然后分别为Num_HCI_Command_packets = 0x02,OpCode一样为0x1009,然后为46个字节的BD_ADDR,分别为00000000 00010000 00100111的LAP(0x271000);10000100的UAP(0x84);01001100 11100000的NAP(0xe04c);最后的00000000为returned parameter,00000000代表Read_BD_ADDR Command执行成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值