首页 > 其他分享 >ble开发-连接状态下的蓝牙遥控数据包解析

ble开发-连接状态下的蓝牙遥控数据包解析

时间:2023-06-13 10:57:06浏览次数:46  
标签:GATT RSP REQ 蓝牙 WRITE READ ble 数据包 define

通过Wireshark抓包获取蓝牙遥控器的HID数据包如下,现对其进行分析

 (1)  02

 代表了HCI的数据格式

HCI ACL Data packet: Controller上报给Host的事件,只能由Controller发出

(2) 01 2e

 

host层想用更少的位来表示访Access Address,Controller用12位即3字节的连接句柄Handle用来表示Access address,PB Flag(Packet Boundary,数据包边界标记) 表示这个包是起始包(00b)还是延续包(01b),PB Flag = 10表示开始包,01表示连续包,在此这个包为开始包,BC Flag(Boardcast Flag,广播标记) 对于BLE该值永远为0

(3)09 00

 数据长度

共9字节

(4)05 00 04 00

这里就到了L2CAP协议层了,数据包格式如下下其

 

 0x0005即为数据长度

 0x0004为Channel ID(CID)通道标示符。信道具体信息留到之后再讲,此处0X0004信道为未使用信道

(5) 1b

Attribute protocol PDU的操作码Opcode

#define  GATT_RSP_ERROR                      0x01
#define  GATT_REQ_MTU                        0x02
#define  GATT_RSP_MTU                        0x03
#define  GATT_REQ_FIND_INFO                  0x04
#define  GATT_RSP_FIND_INFO                  0x05
#define  GATT_REQ_FIND_TYPE_VALUE            0x06
#define  GATT_RSP_FIND_TYPE_VALUE            0x07
#define  GATT_REQ_READ_BY_TYPE               0x08
#define  GATT_RSP_READ_BY_TYPE               0x09
#define  GATT_REQ_READ                       0x0A
#define  GATT_RSP_READ                       0x0B
#define  GATT_REQ_READ_BLOB                  0x0C
#define  GATT_RSP_READ_BLOB                  0x0D
#define  GATT_REQ_READ_MULTI                 0x0E
#define  GATT_RSP_READ_MULTI                 0x0F
#define  GATT_REQ_READ_BY_GRP_TYPE           0x10
#define  GATT_RSP_READ_BY_GRP_TYPE           0x11
#define  GATT_REQ_WRITE                      0x12
#define  GATT_RSP_WRITE                      0x13
#define  GATT_CMD_WRITE                      0x52
#define  GATT_REQ_PREPARE_WRITE              0x16
#define  GATT_RSP_PREPARE_WRITE              0x17
#define  GATT_REQ_EXEC_WRITE                 0x18
#define  GATT_RSP_EXEC_WRITE                 0x19
#define  GATT_HANDLE_VALUE_NOTIF             0x1B
#define  GATT_HANDLE_VALUE_IND               0x1D
#define  GATT_HANDLE_VALUE_CONF              0x1E
#define  GATT_SIGN_CMD_WRITE                 0xD2 
#define  GATT_OP_CODE_MAX                    GATT_HANDLE_VALUE_CONF + 1 /* 0x1E = 30 + 1 = 31*/

 (6) 3C 00

Attribute Handle :用于给客户端查找一个服务端attributeuint16_t类型的唯一标识符,也就是给attribute一个“地址”

 可以看到0X003c指向的service

用户在软件代码添加characteristic的时候,系统会自动按顺序地为相关attribute生成句柄。

(7) 45 00

此即为 value 值

标签:GATT,RSP,REQ,蓝牙,WRITE,READ,ble,数据包,define
From: https://www.cnblogs.com/foorun/p/17471310.html

相关文章

  • blender 面捕优化
    删除空顶点组importbpydefmake_group_list():obj=[]temp_list=[]group_list=[]so=bpy.context.selected_objectsforiinso:obj.append(i)foriinobj:#I'veused.extendhere(withsquarebrackets......
  • 如何解决系统报错:nf_conntrack: table full, dropping packets
    问题在系统日志中(/var/log/messages),有时会看到大面积的下面的报错:nf_conntrack:tablefull,droppingpacket这说明系统接到了大量的连接请求,但是系统的连接跟踪表已经满了,无法再记录新的连接了。这时候,系统会丢弃新的连接请求。在CentOS下,默认的连接跟踪表大小是65536,可......
  • cmake设置gcc将shared library 改为生成 executeable
    前文ubuntu下,同一份代码,使用gcc和clang编译结果不相同。gcc编译结果,生成的程序为type为sharedlibary,而clang编译生成的程序的type为executeable.解决方案为cmakelists.txt脚本增加如下脚本set(CMAKE_CXX_FLAGS"-no-pie")set(CMAKE_C_FLAGS"-......
  • 【每日一题】Problem 44E. Anfisa the Monkey
    原题解决思路由题意可得\(ak\lesize\lebk\),因此当条件不符合该要求时即可退出因为\(size\lebk\),因此,我们可以假设每行都是\(b\)长度来满足条件二,因此第\(i\)行的长度为\(len=size-(k-i)b\),然后对\(len\)取与\(a\)中的较大者来满足条件一注意,如果后续行每......
  • 五月学习之Ansible delegate
    1、Ansibledelegate1.1、什么是Task委派简单来说,就是本来需要在当前被控制端主机执行的操作,被委派给其他主机执行1.2、TASK委派场景实践场景说明1、为172.16.1.7服务器添加一条hosts记录:1.1.1.1qingchen.com2、同时要把这个hosts记录写一份至172.16.1.5节点3、除此任务之......
  • 2023-06-12 运行旧的rouyi前端项目报错:unknown property 'disableHostCheck'
    运行,报错ERRORValidationError:Invalidoptionsobject.DevServerhasbeeninitializedusinganoptionsobjectthatdoesnotmatchtheAPIschema.-optionshasanunknownproperty'disableHostCheck'.Thesepropertiesarevalid:......
  • Burpsuite+Proxifier抓取exe数据包
    0x00 前言前几天在群里看到有师傅在问如何用Burpsuite抓取exe数据包的问题?所以想着写篇文章简单记录一下Burpsuite+Proxifier抓取exe数据包的方法。 注:记得很早之前我们抓exe数据包用的是岁月联盟的WSExplorer工具,但现在由于兼容性问题这个工具已经不太好使了,所以不得不换一......
  • Codeforces Round #416 (Div. 2)-C. Vladik and Memorable Trip
    原题链接C.VladikandMemorableTriptimelimitpertestmemorylimitpertestinputoutputVladikoftentravelsbytrains.HerememberedsomeofhistripsespeciallywellandIwouldliketotellyouaboutone......
  • Codeforces Round #221 (Div. 2)-C. Divisible by Seven
    原题链接C.DivisiblebySeventimelimitpertestmemorylimitpertestinputoutputYouhavenumber a,whosedecimalrepresentationquiteluckilycontainsdigits1,6,8,9......
  • Codeforces Round #383 (Div. 2)-D. Arpa's weak amphitheater and Mehrdad's valuabl
    原题链接D.Arpa'sweakamphitheaterandMehrdad'svaluableHosestimelimitpertestmemorylimitpertestinputoutputJusttoremind,girlsinArpa'slandarereallynice.wi andsomebeauty bi.......