一种获取rssi的方法

文档序号:10597785阅读:3739来源:国知局
一种获取rssi的方法
【专利摘要】本发明公开了一种获取RSSI的方法,属于室内定位领域。本发明方法中AP由挂载着无线网卡的路由器上组成,利用处于Monitor模式的无线网卡监听无线局域网中的数据传输,主动采集周边手机的Wi?Fi广播信息;利用Tcpdump抓包工具和Libpcap数据包捕获函数库,捕获无线介质中的Wi?Fi数据包,并将Wi?Fi数据包保存为后缀为.cap的文件;AP把Wi?Fi数据包传送至系统服务器,服务器对Wi?Fi数据包进行格式分析,根据RSSI值封装在Wi?Fi数据包中的格式和在数据包中的位置,利用程序自动解析数据包并提取RSSI数据。采用本发明方法后,手机客户端不需要安装任何软件,不需要利用手机客户端的接口获取RSSI数据,对手机客户端的操作系统和性能没有要求。
【专利说明】
一种获取RSSI的方法
技术领域
[〇〇〇1 ]本发明涉及室内定位领域,具体涉及一种利用处于Monitor模式的无线网卡主动采集周边手机的W1-Fi广播信息,并从W1-Fi数据包中提取所需的RSSI数据的方法。【背景技术】
[0002]随着智能手机的普及和基于位置服务需求的增加,在建筑环境复杂且人流密集的室内场所,常常需要室内定位来帮助用户获得位置信息。基于W1-Fi的室内定位系统,利用室内场所已有的网络基础设施和广泛覆盖的W1-Fi热点进行定位系统的建设,无需另外布置线路及添加额外硬件设备,是一种方便可行的定位方法。基于W1-Fi的室内定位技术,利用APUccess Point,访问接入点)的位置坐标来测算手机客户端的位置,以实现定位目的。 而AP与手机客户端的位置用接收信号强度指示(Received Signal Strength Indicat1n, RSSI)来衡量。
[0003]W1-Fi是基于IEEE802.lib的无线通讯技术,利用载波侦听多路访问/冲突避免协议(CSMA/CA)来传输数据访问介质,采用广播机制。由于无线信号是扩散到整个空间的,WiFi 中无论是广播包或是单播包,其物理层上仍然是广播的 。共享广播式的信道是在无线网络中实现抓包的前提条件,是捕获数据包的物理基础。手机客户端通过W1-Fi接入AP时,首先要经历扫描阶段。在IEEE802.1l无线局域网存在主动扫描和被动扫描两种获取RSSI的方式。手机客户端接入W1-Fi时,其802.11MAC层使用scanning功能来完成扫描。在被动扫描模式下,由手机客户端测量Probe Response帧的RSSI。在主动扫描模式下,则由AP测量得到 Probe Request帧的RSSI。[〇〇〇4]现有的基于W1-Fi的室内定位系统,通常由手机客户端、AP端、服务器端三个部分构成。目前,许多基于W1-Fi的室内定位解决方案都是基于手机客户端的定位系统,利用 Android系统提供的接口获得周围AP的RSSI特征功能,这意味着需要在手机上安装应用软件来完成RSSI搜索与传输工作。手机客户端需要获得周围AP的RSSI数据,然后把这些检测到的数据发送给服务器,服务器会将得到的实时RSSI信息与数据库里的样本进行匹配运算,从而得到手机客户端的坐标。
【发明内容】

[0005]本发明所要解决的技术问题是提供一种获取RSSI的方法,通过处于Monitor模式的无线网卡主动采集周边手机的W1-Fi广播信息,把W1-Fi数据包传送至系统服务器,服务器利用解析程序从W1-Fi数据包中提取所需的RSSI数据,在服务器端运行定位计算,用户的手机客户端无需安装任何软件。
[0006]为解决上述技术问题,本发明采用的技术方案是:
[0007]—种获取RSSI的方法,包括以下步骤:
[0008]步骤1:在OpenWRT路由操作系统下,将USB无线网卡挂载到路由器上,即安装USB扩展设备驱动程序安装包以及无线网卡芯片相对应的驱动程序安装包;
[0009]步骤2:将路由器本身的无线网络端口设置为Master模式,将无线网卡的端口设置为Monitor模式;
[0010]步骤3:利用处于Monitor模式的无线网,监听无线局域网中的数据传输;利用 Tcpdump抓包工具和Libpcap数据包捕获函数库,捕获无线介质中的W1-Fi数据包,并将W1-Fi数据包保存为后缀为.cap的文件;
[0011]步骤4:分析W1-Fi数据包文件头、数据帧头、数据帧内容,找到所需信息所在的字 T ;[〇〇12]步骤5:解析W1-Fi数据包并按字节提取所需的数据,包括RSSI数据,具体为:[〇〇13]步骤5.1:定义头文件、结构体和声明文件指针,打开W1-Fi数据包文件,读取W1-Fi 数据包文件;[0〇14]步骤5.2:读取W1-Fi数据包文件的类型,判断链路层类型标志位link-type,若链路层类型为Rad1类型,则标志位正确,进而读取数据帧头,否则结束对该文件的解析;[〇〇15]步骤5.3:读取Frame Header,判断这帧的捕获长度,若捕获长度大于160字节,将文件指针移到Beacon Frame的位置,若不符合条件,将文件指针移至下一个Frame Header 的初始位置;[0〇16] 步骤5.4:读取Beacon Frame的源地址MAC地址信息,读取提出定位请求的手机客户端的MAC地址,对比源地址MAC地址与手机客户端的MAC地址是否相同,若MAC相同则符合匹配条件,将文件指针移回Rad1tap Header的位置,读取Rad1tap Header里的RSSI信息, 若MAC地址不同则读取下一帧数据;[0〇17]步骤5.5:将提取到的数据信息打印并保存在txt文件中,数据信息包括link-type 类型、捕获长度、RSS1、源地址MAC和时间戳。
[0018]根据上述方案,所述W1-Fi数据包为符合IEEE 802.11标准的通讯设备的W1-Fi数据包。
[0019]根据上述方案,在步骤4中,所述文件头包含标识位、版本号、区域时间、精确时间戳、数据包最大长度和链路层类型。
[0020]根据上述方案,在步骤4中,所述帧头包括这帧数据的时间信息、数据包长度和数据包捕获长度。
[0021]与现有技术相比,本发明的有益效果是:采用本发明方法后,手机客户端不需要安装任何软件,不需要利用手机客户端的接口获取RSSI数据,对手机客户端的操作系统和性能没有要求。【附图说明】
[0022]图1为本发明获取RSSI的系统功能示意图。[〇〇23]图2为本发明中W1-Fi数据包格式图。[〇〇24]图3为本发明中W1-Fi数据包解析流程示意图。【具体实施方式】[〇〇25]下面结合附图和【具体实施方式】对本发明作进一步详细的说明。本发明一种获取 RSSI的方法,基于W1-Fi的室内定位系统,由具备W1-Fi功能的手机客户端、挂载无线网卡的路由器、服务器三个部分构成。
[0026] 如图1所示,AP端由无线网卡和路由器构成。在OpenWRT路由操作系统下,将USB无线网卡挂载到路由器上。安装USB扩展设备驱动程序安装包及无线网卡芯片相对应的驱动程序安装包,使得路由能识别出无线网卡。[〇〇27]设置路由器和无线网卡的工作模式。将路由本身的无线网络端口设置为Master模式,提供无线接入服务以及路由功能;将无线网卡的端口设置为Monitor模式,用于捕获手机客户端的W1-Fi数据包,只能接收数据,不能发送数据。
[0028]在OpenWRT路由操作系统系统下,安装报文抓包工具Tcpdump和数据包捕获函数库 LibpcapJcpdump工具为用户层和数据链路驱动程序间提供接口,使用户层能采集所需的网络数据报文,可以针对网络层、协议、网络、主机或端口进行过滤,实现报文的截取。在安装Tcpdump的同时,安装数据包捕获函数库Libpcap(the Packet Capture Libmry),以便将无线介质中传送的IEEE802.lib的帧完全捕获。将无线网卡进行设置为Monitor模式,使用 Tcpdump捕获W1-Fi数据包,将完整的IEEE802.1 lb数据包捕获,并存为后缀为.cap格式文件。[〇〇29] 如图2所示,根据IEEE802.11国际标准,任何符合IEEE 802.11标准的通讯设备,在向外发送数据时,RSSI值都已封装在了数据包中。RSSI值封装在W1-Fi数据包中,其格式和在数据包中的位置都有具体规定。[0〇3〇]分析W1-Fi数据包文件头(Cap Header)。所述文件头包含了标识位、版本号、区域时间、精确时间戳、数据包最大长度和链路层类型(Link-type)。每个W1-Fi数据包文件头有 24个字节的文件头信息,其中最后4个字节为链路层类型(Link-type)。不同的网络环境下抓包,Link-type是不同的,Link-type为Rad1类型的链路层包含RSSI信息。[〇〇31]分析数据帧头(Frame Header)。所述帧头包括这帧数据的时间信息、数据包长度和数据包捕获长度。提取捕获长度的信息进行判断,以便跳过无效的数据帧。每帧数据的前 16个字节,为每帧的帧头数据信息。所述捕获长度大于160字节为含Rad1tap Header的数据帧,Rad1tap Header中包含RSSI信息。
[0032]分析RSSI信息位置(Rad1tap Header)。在每帧帧头Frame Header之后,紧跟着是 18个字节Rad1tap Header(Rad1tap Header是802.11标准的监听头标准,这个监听头是无线网卡自动添加在802.11MAC前的帧头,帧头信息包含了信号级别、噪声级别、传输频率和传输速率等信息等物理层信息),这18字节中含有室内定位所需的RSSI信息,所述RSSI信息在第15字节。
[0033]分析MAC地址位置(Beacon Frame)。在Rad1tap Header之后是24字节的Beacon Frame,Beacon Frame中包含6字节的目的地址MAC和6字节的源地址MAC。提取出源地址MAC, 即可判断其是否为对应的手机客户端的发出的信息。[〇〇34]如图3所示,根据W1-Fi数据包解析流程,解析W1-Fi数据包并提取所需的数据。
[0035]首先定义头文件、结构体,声明文件指针等等。打开W1-Fi数据包文件,读取文件。 [〇〇36] 读取文件的类型,判断链路层类型标志位link-type,若链路层类型为Rad1类型, 则标志位正确,进而读取数据帧头,否则结束对该文件的解析。[〇〇37]读取Frame Header,判断这帧的捕获长度,若捕获长度大于160字节,则符合条件, 就将文件指针移到Beacon Frame的位置。若不符合条件,将文件指针移至下一个FrameHeader的初始位置。[〇〇38]读取Beacon Frame的源地址MAC地址信息。读取提出定位请求的手机客户端的MAC地址。对比源地址MAC地址与手机客户端的MAC地址是否相同。若MAC相同则符合匹配条件, 将文件指针移回Rad1tap Header的位置,读取Rad1tap Header里的RSSI信息。若MAC地址不同则读取下一帧数据。
[0039]将提取到的1 ink-type类型、捕获长度、RSS1、源地址MAC、时间戳等数据信息打印并保存在txt文件中。
【主权项】
1.一种获取RSSI的方法,其特征在于,包括以下步骤:步骤1:在OpenWRT路由操作系统下,将USB无线网卡挂载到路由器上,即安装USB扩展设 备驱动程序安装包以及无线网卡芯片相对应的驱动程序安装包;步骤2:将路由器本身的无线网络端口设置为Master模式,将无线网卡的端口设置为 Monitor 模式;步骤3:利用处于Monitor模式的无线网,监听无线局域网中的数据传输;利用Tcpdump 抓包工具和Libpcap数据包捕获函数库,捕获无线介质中的W1-Fi数据包,并将W1-Fi数据包 保存为后缀为.cap的文件;步骤4:分析W1-Fi数据包文件头、数据帧头、数据帧内容,找到所需信息所在的字节;步骤5:解析W1-Fi数据包并按字节提取所需的数据,包括RSSI数据,具体为:步骤5.1:定义头文件、结构体和声明文件指针,打开W1-Fi数据包文件,读取W1-Fi数据 包文件;步骤5.2:读取W1-Fi数据包文件的类型,判断链路层类型标志位1 ink-type,若链路层 类型为Rad1类型,则标志位正确,进而读取数据帧头,否则结束对该文件的解析;步骤5.3:读取Frame Header,判断这帧的捕获长度,若捕获长度大于160字节,将文件 指针移到Beacon Frame的位置,若不符合条件,将文件指针移至下一个Frame Header的初 始位置;步骤5.4:读取Beacon Frame的源地址MAC地址信息,读取提出定位请求的手机客户端 的MAC地址,对比源地址MAC地址与手机客户端的MAC地址是否相同,若MAC相同则符合匹配 条件,将文件指针移回Rad1 tap Header的位置,读取Rad1 tap Header里的RSSI信息,若 MAC地址不同则读取下一帧数据;步骤5.5:将提取到的数据信息打印并保存在txt文件中,数据信息包括link-type类 型、捕获长度、RSS1、源地址MAC和时间戳。2.如权利要求1所述的一种获取RSSI的方法,其特征在于,所述W1-Fi数据包为符合 IEEE802.1l标准的通讯设备的W1-Fi数据包。3.如权利要求1所述的一种获取RSSI的方法,其特征在于,在步骤4中,所述文件头包含 标识位、版本号、区域时间、精确时间戳、数据包最大长度和链路层类型。4.如权利要求1所述的一种获取RSSI的方法,其特征在于,在步骤4中,所述帧头包括这 帧数据的时间信息、数据包长度和数据包捕获长度。
【文档编号】H04L29/06GK105960016SQ201610463822
【公开日】2016年9月21日
【申请日】2016年6月23日
【发明人】李英祥, 陈婧霆
【申请人】成都信息工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1