一種獲取rssi的方法
【專利摘要】本發(fā)明公開了一種獲取RSSI的方法,屬于室內(nèi)定位領(lǐng)域。本發(fā)明方法中AP由掛載著無線網(wǎng)卡的路由器上組成,利用處于Monitor模式的無線網(wǎng)卡監(jiān)聽無線局域網(wǎng)中的數(shù)據(jù)傳輸,主動(dòng)采集周邊手機(jī)的Wi?Fi廣播信息;利用Tcpdump抓包工具和Libpcap數(shù)據(jù)包捕獲函數(shù)庫,捕獲無線介質(zhì)中的Wi?Fi數(shù)據(jù)包,并將Wi?Fi數(shù)據(jù)包保存為后綴為.cap的文件;AP把Wi?Fi數(shù)據(jù)包傳送至系統(tǒng)服務(wù)器,服務(wù)器對(duì)Wi?Fi數(shù)據(jù)包進(jìn)行格式分析,根據(jù)RSSI值封裝在Wi?Fi數(shù)據(jù)包中的格式和在數(shù)據(jù)包中的位置,利用程序自動(dòng)解析數(shù)據(jù)包并提取RSSI數(shù)據(jù)。采用本發(fā)明方法后,手機(jī)客戶端不需要安裝任何軟件,不需要利用手機(jī)客戶端的接口獲取RSSI數(shù)據(jù),對(duì)手機(jī)客戶端的操作系統(tǒng)和性能沒有要求。
【專利說明】
一種獲取RSSI的方法
技術(shù)領(lǐng)域
[〇〇〇1 ]本發(fā)明涉及室內(nèi)定位領(lǐng)域,具體涉及一種利用處于Monitor模式的無線網(wǎng)卡主動(dòng)采集周邊手機(jī)的W1-Fi廣播信息,并從W1-Fi數(shù)據(jù)包中提取所需的RSSI數(shù)據(jù)的方法?!颈尘凹夹g(shù)】
[0002]隨著智能手機(jī)的普及和基于位置服務(wù)需求的增加,在建筑環(huán)境復(fù)雜且人流密集的室內(nèi)場(chǎng)所,常常需要室內(nèi)定位來幫助用戶獲得位置信息?;赪1-Fi的室內(nèi)定位系統(tǒng),利用室內(nèi)場(chǎng)所已有的網(wǎng)絡(luò)基礎(chǔ)設(shè)施和廣泛覆蓋的W1-Fi熱點(diǎn)進(jìn)行定位系統(tǒng)的建設(shè),無需另外布置線路及添加額外硬件設(shè)備,是一種方便可行的定位方法。基于W1-Fi的室內(nèi)定位技術(shù),利用APUccess Point,訪問接入點(diǎn))的位置坐標(biāo)來測(cè)算手機(jī)客戶端的位置,以實(shí)現(xiàn)定位目的。 而AP與手機(jī)客戶端的位置用接收信號(hào)強(qiáng)度指示(Received Signal Strength Indicat1n, RSSI)來衡量。
[0003]W1-Fi是基于IEEE802.lib的無線通訊技術(shù),利用載波偵聽多路訪問/沖突避免協(xié)議(CSMA/CA)來傳輸數(shù)據(jù)訪問介質(zhì),采用廣播機(jī)制。由于無線信號(hào)是擴(kuò)散到整個(gè)空間的,WiFi 中無論是廣播包或是單播包,其物理層上仍然是廣播的 。共享廣播式的信道是在無線網(wǎng)絡(luò)中實(shí)現(xiàn)抓包的前提條件,是捕獲數(shù)據(jù)包的物理基礎(chǔ)。手機(jī)客戶端通過W1-Fi接入AP時(shí),首先要經(jīng)歷掃描階段。在IEEE802.1l無線局域網(wǎng)存在主動(dòng)掃描和被動(dòng)掃描兩種獲取RSSI的方式。手機(jī)客戶端接入W1-Fi時(shí),其802.11MAC層使用scanning功能來完成掃描。在被動(dòng)掃描模式下,由手機(jī)客戶端測(cè)量Probe Response幀的RSSI。在主動(dòng)掃描模式下,則由AP測(cè)量得到 Probe Request幀的RSSI。[〇〇〇4]現(xiàn)有的基于W1-Fi的室內(nèi)定位系統(tǒng),通常由手機(jī)客戶端、AP端、服務(wù)器端三個(gè)部分構(gòu)成。目前,許多基于W1-Fi的室內(nèi)定位解決方案都是基于手機(jī)客戶端的定位系統(tǒng),利用 Android系統(tǒng)提供的接口獲得周圍AP的RSSI特征功能,這意味著需要在手機(jī)上安裝應(yīng)用軟件來完成RSSI搜索與傳輸工作。手機(jī)客戶端需要獲得周圍AP的RSSI數(shù)據(jù),然后把這些檢測(cè)到的數(shù)據(jù)發(fā)送給服務(wù)器,服務(wù)器會(huì)將得到的實(shí)時(shí)RSSI信息與數(shù)據(jù)庫里的樣本進(jìn)行匹配運(yùn)算,從而得到手機(jī)客戶端的坐標(biāo)。
【發(fā)明內(nèi)容】
[0005]本發(fā)明所要解決的技術(shù)問題是提供一種獲取RSSI的方法,通過處于Monitor模式的無線網(wǎng)卡主動(dòng)采集周邊手機(jī)的W1-Fi廣播信息,把W1-Fi數(shù)據(jù)包傳送至系統(tǒng)服務(wù)器,服務(wù)器利用解析程序從W1-Fi數(shù)據(jù)包中提取所需的RSSI數(shù)據(jù),在服務(wù)器端運(yùn)行定位計(jì)算,用戶的手機(jī)客戶端無需安裝任何軟件。
[0006]為解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案是:
[0007]—種獲取RSSI的方法,包括以下步驟:
[0008]步驟1:在OpenWRT路由操作系統(tǒng)下,將USB無線網(wǎng)卡掛載到路由器上,即安裝USB擴(kuò)展設(shè)備驅(qū)動(dòng)程序安裝包以及無線網(wǎng)卡芯片相對(duì)應(yīng)的驅(qū)動(dòng)程序安裝包;
[0009]步驟2:將路由器本身的無線網(wǎng)絡(luò)端口設(shè)置為Master模式,將無線網(wǎng)卡的端口設(shè)置為Monitor模式;
[0010]步驟3:利用處于Monitor模式的無線網(wǎng),監(jiān)聽無線局域網(wǎng)中的數(shù)據(jù)傳輸;利用 Tcpdump抓包工具和Libpcap數(shù)據(jù)包捕獲函數(shù)庫,捕獲無線介質(zhì)中的W1-Fi數(shù)據(jù)包,并將W1-Fi數(shù)據(jù)包保存為后綴為.cap的文件;
[0011]步驟4:分析W1-Fi數(shù)據(jù)包文件頭、數(shù)據(jù)幀頭、數(shù)據(jù)幀內(nèi)容,找到所需信息所在的字 T ;[〇〇12]步驟5:解析W1-Fi數(shù)據(jù)包并按字節(jié)提取所需的數(shù)據(jù),包括RSSI數(shù)據(jù),具體為:[〇〇13]步驟5.1:定義頭文件、結(jié)構(gòu)體和聲明文件指針,打開W1-Fi數(shù)據(jù)包文件,讀取W1-Fi 數(shù)據(jù)包文件;[0〇14]步驟5.2:讀取W1-Fi數(shù)據(jù)包文件的類型,判斷鏈路層類型標(biāo)志位link-type,若鏈路層類型為Rad1類型,則標(biāo)志位正確,進(jìn)而讀取數(shù)據(jù)幀頭,否則結(jié)束對(duì)該文件的解析;[〇〇15]步驟5.3:讀取Frame Header,判斷這幀的捕獲長(zhǎng)度,若捕獲長(zhǎng)度大于160字節(jié),將文件指針移到Beacon Frame的位置,若不符合條件,將文件指針移至下一個(gè)Frame Header 的初始位置;[0〇16] 步驟5.4:讀取Beacon Frame的源地址MAC地址信息,讀取提出定位請(qǐng)求的手機(jī)客戶端的MAC地址,對(duì)比源地址MAC地址與手機(jī)客戶端的MAC地址是否相同,若MAC相同則符合匹配條件,將文件指針移回Rad1tap Header的位置,讀取Rad1tap Header里的RSSI信息, 若MAC地址不同則讀取下一幀數(shù)據(jù);[0〇17]步驟5.5:將提取到的數(shù)據(jù)信息打印并保存在txt文件中,數(shù)據(jù)信息包括link-type 類型、捕獲長(zhǎng)度、RSS1、源地址MAC和時(shí)間戳。
[0018]根據(jù)上述方案,所述W1-Fi數(shù)據(jù)包為符合IEEE 802.11標(biāo)準(zhǔn)的通訊設(shè)備的W1-Fi數(shù)據(jù)包。
[0019]根據(jù)上述方案,在步驟4中,所述文件頭包含標(biāo)識(shí)位、版本號(hào)、區(qū)域時(shí)間、精確時(shí)間戳、數(shù)據(jù)包最大長(zhǎng)度和鏈路層類型。
[0020]根據(jù)上述方案,在步驟4中,所述幀頭包括這幀數(shù)據(jù)的時(shí)間信息、數(shù)據(jù)包長(zhǎng)度和數(shù)據(jù)包捕獲長(zhǎng)度。
[0021]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:采用本發(fā)明方法后,手機(jī)客戶端不需要安裝任何軟件,不需要利用手機(jī)客戶端的接口獲取RSSI數(shù)據(jù),對(duì)手機(jī)客戶端的操作系統(tǒng)和性能沒有要求?!靖綀D說明】
[0022]圖1為本發(fā)明獲取RSSI的系統(tǒng)功能示意圖。[〇〇23]圖2為本發(fā)明中W1-Fi數(shù)據(jù)包格式圖。[〇〇24]圖3為本發(fā)明中W1-Fi數(shù)據(jù)包解析流程示意圖?!揪唧w實(shí)施方式】[〇〇25]下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。本發(fā)明一種獲取 RSSI的方法,基于W1-Fi的室內(nèi)定位系統(tǒng),由具備W1-Fi功能的手機(jī)客戶端、掛載無線網(wǎng)卡的路由器、服務(wù)器三個(gè)部分構(gòu)成。
[0026] 如圖1所示,AP端由無線網(wǎng)卡和路由器構(gòu)成。在OpenWRT路由操作系統(tǒng)下,將USB無線網(wǎng)卡掛載到路由器上。安裝USB擴(kuò)展設(shè)備驅(qū)動(dòng)程序安裝包及無線網(wǎng)卡芯片相對(duì)應(yīng)的驅(qū)動(dòng)程序安裝包,使得路由能識(shí)別出無線網(wǎng)卡。[〇〇27]設(shè)置路由器和無線網(wǎng)卡的工作模式。將路由本身的無線網(wǎng)絡(luò)端口設(shè)置為Master模式,提供無線接入服務(wù)以及路由功能;將無線網(wǎng)卡的端口設(shè)置為Monitor模式,用于捕獲手機(jī)客戶端的W1-Fi數(shù)據(jù)包,只能接收數(shù)據(jù),不能發(fā)送數(shù)據(jù)。
[0028]在OpenWRT路由操作系統(tǒng)系統(tǒng)下,安裝報(bào)文抓包工具Tcpdump和數(shù)據(jù)包捕獲函數(shù)庫 LibpcapJcpdump工具為用戶層和數(shù)據(jù)鏈路驅(qū)動(dòng)程序間提供接口,使用戶層能采集所需的網(wǎng)絡(luò)數(shù)據(jù)報(bào)文,可以針對(duì)網(wǎng)絡(luò)層、協(xié)議、網(wǎng)絡(luò)、主機(jī)或端口進(jìn)行過濾,實(shí)現(xiàn)報(bào)文的截取。在安裝Tcpdump的同時(shí),安裝數(shù)據(jù)包捕獲函數(shù)庫Libpcap(the Packet Capture Libmry),以便將無線介質(zhì)中傳送的IEEE802.lib的幀完全捕獲。將無線網(wǎng)卡進(jìn)行設(shè)置為Monitor模式,使用 Tcpdump捕獲W1-Fi數(shù)據(jù)包,將完整的IEEE802.1 lb數(shù)據(jù)包捕獲,并存為后綴為.cap格式文件。[〇〇29] 如圖2所示,根據(jù)IEEE802.11國(guó)際標(biāo)準(zhǔn),任何符合IEEE 802.11標(biāo)準(zhǔn)的通訊設(shè)備,在向外發(fā)送數(shù)據(jù)時(shí),RSSI值都已封裝在了數(shù)據(jù)包中。RSSI值封裝在W1-Fi數(shù)據(jù)包中,其格式和在數(shù)據(jù)包中的位置都有具體規(guī)定。[0〇3〇]分析W1-Fi數(shù)據(jù)包文件頭(Cap Header)。所述文件頭包含了標(biāo)識(shí)位、版本號(hào)、區(qū)域時(shí)間、精確時(shí)間戳、數(shù)據(jù)包最大長(zhǎng)度和鏈路層類型(Link-type)。每個(gè)W1-Fi數(shù)據(jù)包文件頭有 24個(gè)字節(jié)的文件頭信息,其中最后4個(gè)字節(jié)為鏈路層類型(Link-type)。不同的網(wǎng)絡(luò)環(huán)境下抓包,Link-type是不同的,Link-type為Rad1類型的鏈路層包含RSSI信息。[〇〇31]分析數(shù)據(jù)幀頭(Frame Header)。所述幀頭包括這幀數(shù)據(jù)的時(shí)間信息、數(shù)據(jù)包長(zhǎng)度和數(shù)據(jù)包捕獲長(zhǎng)度。提取捕獲長(zhǎng)度的信息進(jìn)行判斷,以便跳過無效的數(shù)據(jù)幀。每幀數(shù)據(jù)的前 16個(gè)字節(jié),為每幀的幀頭數(shù)據(jù)信息。所述捕獲長(zhǎng)度大于160字節(jié)為含Rad1tap Header的數(shù)據(jù)幀,Rad1tap Header中包含RSSI信息。
[0032]分析RSSI信息位置(Rad1tap Header)。在每幀幀頭Frame Header之后,緊跟著是 18個(gè)字節(jié)Rad1tap Header(Rad1tap Header是802.11標(biāo)準(zhǔn)的監(jiān)聽頭標(biāo)準(zhǔn),這個(gè)監(jiān)聽頭是無線網(wǎng)卡自動(dòng)添加在802.11MAC前的幀頭,幀頭信息包含了信號(hào)級(jí)別、噪聲級(jí)別、傳輸頻率和傳輸速率等信息等物理層信息),這18字節(jié)中含有室內(nèi)定位所需的RSSI信息,所述RSSI信息在第15字節(jié)。
[0033]分析MAC地址位置(Beacon Frame)。在Rad1tap Header之后是24字節(jié)的Beacon Frame,Beacon Frame中包含6字節(jié)的目的地址MAC和6字節(jié)的源地址MAC。提取出源地址MAC, 即可判斷其是否為對(duì)應(yīng)的手機(jī)客戶端的發(fā)出的信息。[〇〇34]如圖3所示,根據(jù)W1-Fi數(shù)據(jù)包解析流程,解析W1-Fi數(shù)據(jù)包并提取所需的數(shù)據(jù)。
[0035]首先定義頭文件、結(jié)構(gòu)體,聲明文件指針等等。打開W1-Fi數(shù)據(jù)包文件,讀取文件。 [〇〇36] 讀取文件的類型,判斷鏈路層類型標(biāo)志位link-type,若鏈路層類型為Rad1類型, 則標(biāo)志位正確,進(jìn)而讀取數(shù)據(jù)幀頭,否則結(jié)束對(duì)該文件的解析。[〇〇37]讀取Frame Header,判斷這幀的捕獲長(zhǎng)度,若捕獲長(zhǎng)度大于160字節(jié),則符合條件, 就將文件指針移到Beacon Frame的位置。若不符合條件,將文件指針移至下一個(gè)FrameHeader的初始位置。[〇〇38]讀取Beacon Frame的源地址MAC地址信息。讀取提出定位請(qǐng)求的手機(jī)客戶端的MAC地址。對(duì)比源地址MAC地址與手機(jī)客戶端的MAC地址是否相同。若MAC相同則符合匹配條件, 將文件指針移回Rad1tap Header的位置,讀取Rad1tap Header里的RSSI信息。若MAC地址不同則讀取下一幀數(shù)據(jù)。
[0039]將提取到的1 ink-type類型、捕獲長(zhǎng)度、RSS1、源地址MAC、時(shí)間戳等數(shù)據(jù)信息打印并保存在txt文件中。
【主權(quán)項(xiàng)】
1.一種獲取RSSI的方法,其特征在于,包括以下步驟:步驟1:在OpenWRT路由操作系統(tǒng)下,將USB無線網(wǎng)卡掛載到路由器上,即安裝USB擴(kuò)展設(shè) 備驅(qū)動(dòng)程序安裝包以及無線網(wǎng)卡芯片相對(duì)應(yīng)的驅(qū)動(dòng)程序安裝包;步驟2:將路由器本身的無線網(wǎng)絡(luò)端口設(shè)置為Master模式,將無線網(wǎng)卡的端口設(shè)置為 Monitor 模式;步驟3:利用處于Monitor模式的無線網(wǎng),監(jiān)聽無線局域網(wǎng)中的數(shù)據(jù)傳輸;利用Tcpdump 抓包工具和Libpcap數(shù)據(jù)包捕獲函數(shù)庫,捕獲無線介質(zhì)中的W1-Fi數(shù)據(jù)包,并將W1-Fi數(shù)據(jù)包 保存為后綴為.cap的文件;步驟4:分析W1-Fi數(shù)據(jù)包文件頭、數(shù)據(jù)幀頭、數(shù)據(jù)幀內(nèi)容,找到所需信息所在的字節(jié);步驟5:解析W1-Fi數(shù)據(jù)包并按字節(jié)提取所需的數(shù)據(jù),包括RSSI數(shù)據(jù),具體為:步驟5.1:定義頭文件、結(jié)構(gòu)體和聲明文件指針,打開W1-Fi數(shù)據(jù)包文件,讀取W1-Fi數(shù)據(jù) 包文件;步驟5.2:讀取W1-Fi數(shù)據(jù)包文件的類型,判斷鏈路層類型標(biāo)志位1 ink-type,若鏈路層 類型為Rad1類型,則標(biāo)志位正確,進(jìn)而讀取數(shù)據(jù)幀頭,否則結(jié)束對(duì)該文件的解析;步驟5.3:讀取Frame Header,判斷這幀的捕獲長(zhǎng)度,若捕獲長(zhǎng)度大于160字節(jié),將文件 指針移到Beacon Frame的位置,若不符合條件,將文件指針移至下一個(gè)Frame Header的初 始位置;步驟5.4:讀取Beacon Frame的源地址MAC地址信息,讀取提出定位請(qǐng)求的手機(jī)客戶端 的MAC地址,對(duì)比源地址MAC地址與手機(jī)客戶端的MAC地址是否相同,若MAC相同則符合匹配 條件,將文件指針移回Rad1 tap Header的位置,讀取Rad1 tap Header里的RSSI信息,若 MAC地址不同則讀取下一幀數(shù)據(jù);步驟5.5:將提取到的數(shù)據(jù)信息打印并保存在txt文件中,數(shù)據(jù)信息包括link-type類 型、捕獲長(zhǎng)度、RSS1、源地址MAC和時(shí)間戳。2.如權(quán)利要求1所述的一種獲取RSSI的方法,其特征在于,所述W1-Fi數(shù)據(jù)包為符合 IEEE802.1l標(biāo)準(zhǔn)的通訊設(shè)備的W1-Fi數(shù)據(jù)包。3.如權(quán)利要求1所述的一種獲取RSSI的方法,其特征在于,在步驟4中,所述文件頭包含 標(biāo)識(shí)位、版本號(hào)、區(qū)域時(shí)間、精確時(shí)間戳、數(shù)據(jù)包最大長(zhǎng)度和鏈路層類型。4.如權(quán)利要求1所述的一種獲取RSSI的方法,其特征在于,在步驟4中,所述幀頭包括這 幀數(shù)據(jù)的時(shí)間信息、數(shù)據(jù)包長(zhǎng)度和數(shù)據(jù)包捕獲長(zhǎng)度。
【文檔編號(hào)】H04L29/06GK105960016SQ201610463822
【公開日】2016年9月21日
【申請(qǐng)日】2016年6月23日
【發(fā)明人】李英祥, 陳婧霆
【申請(qǐng)人】成都信息工程大學(xué)