您好, 访客   登录/注册

蓝牙OBEX协议分析

来源:用户上传      作者:

  摘要:为了开展蓝牙OBEX协议漏洞挖掘的相关技术研究,该研究首先概述了OBEX的基本概念,接着详细分析了蓝牙OBEX协议格式,并着重研究OBEX对象模型、会话模型及请求/响应数据包格式,为今后蓝牙OBEX协议漏洞挖掘研究打下基础。
  关键词:蓝牙;OBEX;模型
  中图分类号:TP393        文献标识码:A
  文章编号:1009-3044(2020)16-0045-03
  Abstract:In order to carry out the relevant technical research on the vulnerability mining of Bluetooth OBEX protocol, this study first outlines the basic concept of OBEX, then analyzes the format of Bluetooth OBEX protocol in detail, and focuses on the obex object model, session model and request / response packet format, which lays the foundation for the future research on the vulnerability mining of Bluetooth OBEX protocol.
  Key words: Bluetooth; OBEX; model
  1 OBEX基本概念
  [OBEX]是对象交换协议最初红外数据协会IrDA(Infrared Data Association)开发的用于红外数据链路上数据对象交换的会话层协议。后来作为小范围无线通信系统的蓝牙采纳了该协议,这使得原先基于红外链路的OBEX应用可能很方便地移植到蓝牙上来或在两者之间进行切换。协议能够支持文件传递、同步等多个应用,能够让不同的设备间完成简单便捷的交换。蓝牙[OBEX]协议被普遍地运用于智能手机、平板电脑、数字相机等各个设备间以此完成数据的传递[1-4]。
  对OBEX协议进行格式分析须了解OBEX在蓝牙栈中所处的层次结构。图1描述了OBEX在蓝牙协议栈中的地位。
  图1给出了OBEX在蓝牙体系中的层次以及基于[OBEX]的部分应用。在层次组成的蓝牙协议栈中,[OBEX]是一类面向应用层的协议,工作于协议栈的顶端,能够完成文件传递,同步等各项操作,也可以让不同的设备间完成简单便捷的交换。可交换的内容包括文件、图像以及应用支持的各种数据资料。对象交换使用的是建立在查询/应答基础上的[Client/Server]模式,任意两个蓝牙设备都能够构成主从联系,发起方是主,接收者为从。
  蓝牙的核心协议和应用规范由SIG制定,它的版本也在不断升级,[OBEX]协议自身划分了两大部分:数据对象模型以及会话协议。前者涵盖了即将传递的数据对象的各类资料和对象自身。整个模型的成立是建立在不同标准下的可分析的信息头,比较接近于HTTP当中所界定的信息头定义。会话协议中还提出了数据传输的具体流程,[OBEX]采用基于二进制分组的客户机/服务器模式当作整个流程的具体模型[5-6]。下面分别介绍这两种模型。
  2 OBEX对象模型
  对象模型不但要分析对象自身,并且还要分析除此以外的各种描绘信息,详细措施就是使用不同的对象头。用于针对性地描述对象的某一点,名称、类别等,如文件[test.txt]就包含下列几大对象头:名称、类别、长度以及文件自身。
  对象头常见格式为:<头ID>+<值>。头ID为单字节的无符号整数,用于分辨识别对象头涵盖哪些内容及对应的数值属于什么格式;头的值存在多个字节,相应的格式也要按照头ID进行设定。全部的对象头都是能够选择的,按照应用的具体状况,可以选择全部或局部应用,还可以一个都不用。头ID的作用是使对象头易于解析,并使对象头可以按任意顺序出现,还可以使应用程序很容易地跳过不支持的对象头。
  [OBEX]定义了一组常用的对象头,它也支持[HTTP]对象头,还支持用户自定义的对象头,满足了绝大多数设备的需要。头ID的最高2位表示对象头的编码方式,低6位是对象头的具体含义。编码方式决定了对象头的长度,这样不支持的对象头可以被完整地丢弃,而不会影响对下一对象头的解析。头ID最高两位含义见表1。
  3 OBEX会话模型
  会话协议中描绘了[OBEX]会话的主要构造,涵盖了设备之间的会话格式以及对应的操作编码[8]。[OBEX]会话出现于某次[OBEX]连接中,只需要在连接初期传递一次设备信息,同时状态信息可以一直维持。发起连接请求的叫作[OBEX]客户端,接受的那端叫作[OBEX]服务端。[OBEX]格式是请求/应答对,客户端传递出请求之后,等候服务端的反馈,之后发出下一条请求。一对请求/应答也称为一个操作。在进行连接时,双方会商议数据包的内存大小,如果请求超过这个大小,就需要分几次进行发送。在这样的状况下,每个请求数据包都要有應答数据包与其对应。一个操作事实上就是一个请求/应答数据包,而最终的那个数据包会存在特定的标识。两个数据包对应的格式是相同的,根据顺序依次为:1字节的操作码,2字节的数据包长度,后面对对象头的需求不固定,数量也同样能够设定为多个。操作码最高位叫作完成位,代表该数据包是否为最终的那个数据包。同时其长度与对象头的长度比较相似,同样是采用网络字节的排序进行传递,同时包括了操作码以及长度所占据的三大字节。由于长度只有2字节,因此数据包长度不可以超出65535。对象头只可以置于一个数据包当中,不可以使用多个。对象头排序也并未进行具体的规定,不过可以将描述目标的对象头置于其自身前面。   按照设备实际状况,客户端以及服务端既可以只选择一个做也可以一起做。而请求的具体操作码界定情况如表3所示。
  应答操作码还有一个称呼叫作应答码,是将一个[HTTP]状态码进行编码同时压缩至1个字节低7位,其实际含义可以参照对应的[HTTP]文档。
  上面两个表格里面的操作码、响应码中括号里的数其最高位是“1”时的对应值,该位意味着这是请求时的最终的那个数据包。如采用“Put”操作传递一个较大的对象过程中,要采用许多的“Put”数据包才能够实现,不过仅仅是最后的一个“Put”包会获得最高位设置。
  4 总结
  通过以上研究,我們认识了蓝牙OBEX协议,对蓝牙OBEX协议的对象模型、会话模型及请求/响应数据包格式有深入的了解,为下一步开展蓝牙OBEX协议格式规范研究奠定基础。
  参考文献:
  [1] 张文安,洪榛,朱俊威,陈博.工业控制系统网络入侵检测方法综述[J].控制与决策,2019,34(11):2277-2288.
  [2] 王群,李馥娟,周倩.网络空间安全体系结构及其关键技术研究[J].南京理工大学学报,2019,43(04):495-504.
  [3] 杨世超.物联网云平台接入安全技术研究[A].中国通信学会.2019年全国公共安全通信学术研讨会优秀论文集[C].中国通信学会:中国通信学会,2019:5.
  [4] 陆英.大数据时代使用蓝牙的风险及解决方案[J].计算机与网络,2019,45(14):52-53.
  [5] 蒋纲,周敬利,余胜生,等.基于Bluetooth OBEX协议的文件传输技术的研究[J].小型微型计算机系统,2003,24(4): 687-690.
  [6] David Kammer,Gordon McNutt,Brian Senese,Jennifer Bray.Bluetooth Application Developer’s Guide[M].Elsevier Science Ltd.2005.
  [7] Infrared Data Association,(IrDA)Object Exchange Protocol OBEX Version 1.3[EB/OL].http://www.irda.org.oct,2008.
  [8] Specification of the Bluetooth System vl.l Profile Part K:SerVice Discovery Application Profile.Bluetooth SIG,2001:48-50.
  【通联编辑:代影】
转载注明来源:https://www.xzbu.com/8/view-15315066.htm