王慶剛 劉中燁
摘 要:文章設(shè)計(jì)了一個(gè)面向無(wú)線網(wǎng)絡(luò)的監(jiān)測(cè)系統(tǒng),系統(tǒng)基于Linux系統(tǒng)下的Libpcap函數(shù)庫(kù)進(jìn)行程序設(shè)計(jì)和實(shí)現(xiàn),可以捕獲802.11協(xié)議封裝的MAC數(shù)據(jù)幀,根據(jù)WIFI聯(lián)盟定義的幀結(jié)構(gòu)對(duì)相應(yīng)字段進(jìn)行解析,并將解析結(jié)果存儲(chǔ)于本地?cái)?shù)據(jù)庫(kù)中,通過(guò)4G通信模塊將系統(tǒng)監(jiān)測(cè)的無(wú)線網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)竭h(yuǎn)端的系統(tǒng)客戶端進(jìn)行顯示和分析。
關(guān)鍵詞:Libpcap;無(wú)線網(wǎng)絡(luò)監(jiān)測(cè)系統(tǒng);802.11協(xié)議;WiFi;4G
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A
Abstract: This paper designs a monitoring system for wireless networks. The system is designed and implemented based on Libpcap library in Linux system. It can capture MAC data frames encapsulated by 802.11 protocol, and then parse the corresponding fields according to the frame structure defined by WIFI alliance. The analysis results are stored in the local database. The data will be transmitted to the remote client for display and analysis by 4G communication module.
Key words: Libpcap; wireless network monitoring system; 802.11 protocol; WiFi; 4G
1 引言
隨著現(xiàn)代通信技術(shù)的高速發(fā)展,各種短距離無(wú)線接入技術(shù)逐漸滲透進(jìn)人們生產(chǎn)生活的方方面面,如Wifi、ZigBee、Bluetooth、Mesh以及近來(lái)炙手可熱的Lifi技術(shù)。其中WiFi技術(shù)依靠其高傳輸速率、高可靠性等優(yōu)勢(shì),被廣泛應(yīng)用在教育、醫(yī)療、能源、工業(yè)等領(lǐng)域,成為目前應(yīng)用最為廣泛的短距離無(wú)線通信標(biāo)準(zhǔn)。然而,WiFi技術(shù)在給人們帶來(lái)便捷的同時(shí),也存在諸多問(wèn)題,例如信號(hào)有效覆蓋范圍難以確定,網(wǎng)絡(luò)缺乏規(guī)劃難以管理,通信安全難以保障,實(shí)際生活中,部分黑客可以通過(guò)WiFi釣魚(yú)、偽造熱點(diǎn)、流量劫持等方式攻擊網(wǎng)絡(luò)中的終端或者服務(wù)器,從而造成可怕的網(wǎng)絡(luò)安全事故。因此,對(duì)WiFi無(wú)線網(wǎng)絡(luò)進(jìn)行有效的監(jiān)測(cè)顯得尤為重要。
本文中設(shè)計(jì)的無(wú)線網(wǎng)絡(luò)監(jiān)測(cè)系統(tǒng)能夠監(jiān)測(cè)并分析區(qū)域內(nèi)無(wú)線AP和移動(dòng)臺(tái)的相關(guān)信息數(shù)據(jù),網(wǎng)絡(luò)管理員可以通過(guò)系統(tǒng)客戶端實(shí)現(xiàn)的可視化無(wú)線網(wǎng)絡(luò)協(xié)議數(shù)據(jù)的分析和統(tǒng)計(jì),更好地掌控?zé)o線網(wǎng)絡(luò)狀況并做好網(wǎng)絡(luò)的分析和優(yōu)化。
2 無(wú)線網(wǎng)絡(luò)監(jiān)測(cè)系統(tǒng)總體架構(gòu)
本系統(tǒng)主要由終端監(jiān)測(cè)設(shè)備和前臺(tái)客戶端組成。監(jiān)測(cè)終端是由Raspberry Pi開(kāi)發(fā)板、開(kāi)源無(wú)線網(wǎng)卡、TFT液晶屏和4G傳輸模塊等元件實(shí)現(xiàn),能夠工作于2.4G ISM頻段,可以實(shí)現(xiàn)對(duì)信號(hào)范圍內(nèi)所有WiFi AP和移動(dòng)終端進(jìn)行實(shí)時(shí)監(jiān)測(cè)和網(wǎng)絡(luò)數(shù)據(jù)的收集。前臺(tái)客戶端是基于Python語(yǔ)言開(kāi)發(fā)的,能夠?qū)⒈O(jiān)測(cè)終端采集到的無(wú)線網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行分析和顯示。系統(tǒng)架構(gòu)如圖1所示。
系統(tǒng)中采用無(wú)線網(wǎng)絡(luò)被動(dòng)監(jiān)測(cè)的方案,將無(wú)線網(wǎng)卡設(shè)置為混雜模式,可以直接偵聽(tīng)無(wú)線網(wǎng)絡(luò)的底層數(shù)據(jù)包,同時(shí)不會(huì)對(duì)網(wǎng)絡(luò)中的數(shù)據(jù)傳輸造成任何影響;采集到的網(wǎng)絡(luò)信息通過(guò)開(kāi)發(fā)板的TFT液晶屏直接顯示,同時(shí)被編碼為.CSV文件并存儲(chǔ)于本地?cái)?shù)據(jù)庫(kù),并通過(guò)4G模塊將數(shù)據(jù)傳輸至遠(yuǎn)端計(jì)算機(jī),最終在系統(tǒng)的客戶端部分完成無(wú)線網(wǎng)絡(luò)數(shù)據(jù)的分析和匯總顯示。
3 硬件設(shè)計(jì)
3.1 硬件開(kāi)發(fā)板
本系統(tǒng)監(jiān)測(cè)終端設(shè)備的的實(shí)現(xiàn)是基于一塊Raspberry Pi(樹(shù)莓派)3B型號(hào)開(kāi)發(fā)板,它支持WiFi技術(shù),能夠運(yùn)行Linux開(kāi)源系統(tǒng),外置的無(wú)線網(wǎng)卡和4G模塊可以通過(guò)板載的USB接口與開(kāi)發(fā)板內(nèi)核進(jìn)行通信,TFT液晶屏幕則通過(guò)HDMI接口與內(nèi)核通信,因此Raspberry Pi開(kāi)發(fā)板可以完美匹配本監(jiān)測(cè)終端的需求。
3.2 顯示模塊
顯示模塊采用了一塊3.5英寸的TFT液晶顯示器,支持HDMI輸入,物理分辨率480×320,可配置軟件分辨率高達(dá)1920×1080,自帶觸摸控制功能,能夠通過(guò)26PIN母座與樹(shù)莓派連接,并可直接從開(kāi)發(fā)板的板載GPIO口取電,功耗低,具有較強(qiáng)的續(xù)航能力。
3.3 無(wú)線網(wǎng)卡
無(wú)線網(wǎng)卡選用RT3070L核心網(wǎng)卡,該網(wǎng)卡支持802.11BNG協(xié)議,并且數(shù)據(jù)吞吐量高,支持注入模式和AP模式的混雜模式;啟用混雜模式時(shí),可以監(jiān)聽(tīng)整個(gè)無(wú)線網(wǎng)絡(luò)中的802.11數(shù)據(jù)幀,其捕獲數(shù)據(jù)幀產(chǎn)生的硬件中斷可以提醒高層應(yīng)用處理該數(shù)據(jù)報(bào)。
3.4 4G通信模塊
遠(yuǎn)程通信模塊采用3G/4G傳輸?shù)姆绞?,硬件網(wǎng)卡選用華為E3372 4G網(wǎng)卡,它能夠同時(shí)支持聯(lián)通4G/3G/2G和電信4G網(wǎng)絡(luò),本系統(tǒng)選用電信4G作為信號(hào)載體,結(jié)合系統(tǒng)的自動(dòng)撥號(hào)腳本即可將監(jiān)測(cè)終端方便的連接到ISP網(wǎng)絡(luò),從而實(shí)現(xiàn)無(wú)線網(wǎng)絡(luò)監(jiān)測(cè)設(shè)備與遠(yuǎn)端的系統(tǒng)客戶端之間進(jìn)行正常數(shù)據(jù)通信。
4 軟件實(shí)現(xiàn)
4.1 系統(tǒng)設(shè)計(jì)架構(gòu)
本系統(tǒng)的終端監(jiān)測(cè)設(shè)備上運(yùn)行的是Kali Linux系統(tǒng),能夠兼容大容量USB和無(wú)線設(shè)備,如本系統(tǒng)采用的RT3070L芯片和E3372 USB 4G網(wǎng)卡。系統(tǒng)的客戶端程序采用Python語(yǔ)言和Linux系統(tǒng)下命令行腳本進(jìn)行開(kāi)發(fā),Python是一種面向?qū)ο蟮哪_本程序設(shè)計(jì)語(yǔ)言,其開(kāi)發(fā)者平臺(tái)有開(kāi)源的各種功能的庫(kù),能夠把實(shí)現(xiàn)非常復(fù)雜功能的模塊結(jié)合起來(lái),實(shí)現(xiàn)極其復(fù)雜的系統(tǒng)功能。本系統(tǒng)的軟件設(shè)計(jì)架構(gòu)如圖2所示。
4.2 數(shù)據(jù)包捕獲模塊
數(shù)據(jù)包捕獲模塊是系統(tǒng)功能的基礎(chǔ),該模塊完成捕獲2.4G頻段的802.11協(xié)議MAC幀的工作,對(duì)捕獲的數(shù)據(jù)包進(jìn)行初步的處理并保存于本地?cái)?shù)據(jù)庫(kù)。通常來(lái)說(shuō),Linux環(huán)境下進(jìn)行數(shù)據(jù)包捕獲通常采用Raw Socket或者 Libpcap,Libpcap是Linux平臺(tái)下常用的網(wǎng)絡(luò)數(shù)據(jù)包捕獲函數(shù)包,它提供了工作于系統(tǒng)底層的數(shù)據(jù)包捕獲API,其提供的編程接口可以用于數(shù)據(jù)包捕獲、過(guò)濾、分析等應(yīng)用。本文選擇Libpcap作為底層網(wǎng)絡(luò)API,使用Python語(yǔ)言借助Lipcap函數(shù)庫(kù)進(jìn)行系統(tǒng)編程,捕獲網(wǎng)絡(luò)數(shù)據(jù)包并將數(shù)據(jù)保存為.pcap文件,并存儲(chǔ)于本地?cái)?shù)據(jù)庫(kù)中。
該功能模塊的主要代碼如下:
....
def capt_data(eth_name="wlan1mon", p_type=None):
pc = pcap.pcap(eth_name)
pc.setfilter('tcp port 80')
print 'start capture....'
if pc:
for p_time, p_data in pc:
print p_time,p_data
pcapnum +=1
p_name="pcap%d.pcap"
wrpcap(p_name,p_data)
filename ="./pcap%d.pcap"
....
4.3 數(shù)據(jù)包解碼分析模塊
數(shù)據(jù)包解碼分析模塊是整個(gè)軟件設(shè)計(jì)的核心部分,關(guān)鍵信息都是從捕獲數(shù)據(jù)中提取,這就要涉及到.pcap文件和WiFi MAC幀的結(jié)構(gòu)解析。.pcap文件是一種數(shù)據(jù)報(bào)存儲(chǔ)格式,文件頭的標(biāo)準(zhǔn)為24字節(jié),其后是捕獲的數(shù)據(jù)報(bào)依次排列,每個(gè)數(shù)據(jù)包由16字節(jié)的包頭和數(shù)據(jù)組成,其數(shù)據(jù)結(jié)構(gòu)如圖3所示。
捕獲數(shù)據(jù)包中存放的就是WiFi MAC幀,IEEE 802.11標(biāo)準(zhǔn)規(guī)定了它的幀結(jié)構(gòu),在數(shù)據(jù)包捕獲模塊中捕獲的文件中存放了WiFi MAC幀的數(shù)據(jù),802.11協(xié)議幀主要由三個(gè)部分組成,也就是幀頭、幀體和幀校驗(yàn)碼,幀體中包含各種地址信息、序列控制信息以及持續(xù)時(shí)間,其幀格式如表1所示。
WiFi MAC幀包含控制幀、數(shù)據(jù)幀、Beacon幀等幀類型,其中Beacon幀中存放了無(wú)線設(shè)備的基本信息,其中有終端和AP的MAC地址信息,AP的傳輸速率、認(rèn)證方式、加密方式以及移動(dòng)臺(tái)的載波信道、連接信息等[6],通過(guò)系統(tǒng)程序?qū)⑾鄳?yīng)字段的關(guān)鍵信息提取出來(lái),同時(shí)從.pcap文件的文件頭中提取時(shí)間信息,然后將這些數(shù)據(jù)信息保存到本地.CSV文件中。
以BSSID信息的提取為例,關(guān)鍵代碼實(shí)現(xiàn)部分如下:
....
a = rdpcap("capture1.pcap")
while True:
try:
num += 1
file_capname = "capture%d.pcap" % num
b = rdpcap(file_name)
a = a + b
except:
break
" pcap file has been read"
....
for packet in sessions[session]:
try:
data_payload += str(packet[BSSID].payload)
"[**] Data:%s" % data_payload
except:
pass
....
4.4 數(shù)據(jù)存儲(chǔ)
本系統(tǒng)采用MariaDB數(shù)據(jù)庫(kù),MariaDB是MySQL數(shù)據(jù)庫(kù)的一個(gè)變種,屬于開(kāi)源數(shù)據(jù)庫(kù),使用的操作命令和功能幾乎和MySQL完全相同。本系統(tǒng)在樹(shù)莓派開(kāi)發(fā)板的Linux系統(tǒng)中建立本地?cái)?shù)據(jù)庫(kù),用于存儲(chǔ)系統(tǒng)監(jiān)測(cè)的無(wú)線網(wǎng)絡(luò)數(shù)據(jù),遠(yuǎn)程客戶機(jī)可以通過(guò)客戶端程序訪問(wèn)此數(shù)據(jù)庫(kù),并將讀取的數(shù)據(jù)顯示在客戶端圖形界面中。主要代碼如下:
....
conn = MySQLdb.connect(
host='localhost',
user='root',
passwd='password',
db='wifidetecter',
)
cur = conn.cursor()
f = open("data.csv", "r")
while True:
line = f.readline()
with f:
data = f.read()
cur.execute(
"insert into data ")
f.close()
....
4.5 客戶端顯示模塊
遠(yuǎn)程客戶端顯示模塊可以實(shí)現(xiàn)網(wǎng)絡(luò)管理員從遠(yuǎn)程實(shí)時(shí)查看監(jiān)測(cè)到的無(wú)線網(wǎng)絡(luò)數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行圖形化的分析處理??蛻舳顺绦蚴褂肞ython+Qt的混合語(yǔ)言方式進(jìn)行開(kāi)發(fā),Qt是一個(gè)跨平臺(tái)C++圖形界面應(yīng)用程序開(kāi)發(fā)框架,并且可以使用pyton對(duì)其進(jìn)行編譯,我們用它來(lái)完成GUI的開(kāi)發(fā),同時(shí)借助python下的pyqt5模塊來(lái)實(shí)現(xiàn)圖形界面的編寫(xiě)。
前臺(tái)客戶端程序的核心實(shí)現(xiàn)代碼如下:
....
def initUI(self): #主窗口
qbtn = QPushButton('Quit', self)
qbtn.clicked.connect(QApplication.quit)
qbtn.resize(qbtn.sizeHint())
qbtn.move(900, 460)
File = QAction(QIcon('openfile.png'), 'Open', self)
File.setShortcut('Ctrl+P')
File.setStatusTip('Open File')
File.triggered.connect(self.showDialog)
menubar = self.menuBar()
Menu = menubar.addMenu('&File;')
Menu.addAction(openFile)
def showDialog(self):
fname = QFileDialog.OpenFileName(self, 'Open file')
if fname[0]:
f = open(fname[0], 'r')
with f:
data = f.read()
self.textEdit.setText(data)
....
5 結(jié)束語(yǔ)
隨著現(xiàn)代通信技術(shù)的高速發(fā)展,各種短距離寬帶無(wú)線接入技術(shù)滲透進(jìn)人們生活的方方面面,而伴隨著網(wǎng)絡(luò)訪問(wèn)體驗(yàn)的提升,人們?cè)馐芫W(wǎng)絡(luò)信息泄露的幾率也大大提高,近些年來(lái)國(guó)家對(duì)網(wǎng)絡(luò)安全也愈加重視。本系統(tǒng)的研發(fā)旨在提供一種便利的無(wú)線網(wǎng)絡(luò)監(jiān)控手段,幫助網(wǎng)絡(luò)管理員更好地監(jiān)控、維護(hù)網(wǎng)絡(luò)的正常運(yùn)行,系統(tǒng)在實(shí)驗(yàn)室的網(wǎng)絡(luò)環(huán)境下完成了基本功能的測(cè)試,但仍存在一些不足之處,需要后期進(jìn)一步的改進(jìn),如圖形化界面不夠美觀,客戶端程序數(shù)據(jù)分析功能局限等。相信在接下來(lái)的研究開(kāi)發(fā)中,該監(jiān)測(cè)系統(tǒng)的功能將會(huì)逐漸完善。
參考文獻(xiàn)
[1] 高凱,趙登攀.PCAP文件格式網(wǎng)絡(luò)數(shù)據(jù)包分析軟件設(shè)計(jì)與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2013(12).
[2] 溫曙光,謝高崗.LIBPCAP-MT:一種多線程的通用數(shù)據(jù)包捕獲庫(kù)[J].計(jì)算機(jī)研究與發(fā)展,2011(5).
[3] 程杰.Wi-Fi無(wú)線網(wǎng)絡(luò)技術(shù)在校園網(wǎng)中的應(yīng)用[J].網(wǎng)絡(luò)空間安全,2012(5).
[4] IEEE Standards Board.802 part 11:Wireless LAN Medium Access Control(MAC) and Physical Layer(PHY) specifications.IEEE Standard 802.11[S],1999.
[5] 聶家發(fā).關(guān)于802.11協(xié)議的研究[D].哈爾濱工程大學(xué),2004.
[6] 李曉燕,張成,黃協(xié).校園無(wú)線網(wǎng)絡(luò)構(gòu)建及安全管理[J].網(wǎng)絡(luò)空間安全,2015(4).
[7] 盧石雷.802.11n MAC層性能研究與仿真[D].北京郵電大學(xué),2007.
[8] 潘翔.IEEE 802.11ac無(wú)線網(wǎng)絡(luò)性能分析與優(yōu)化研究[D].北京郵電大學(xué),2015.
作者簡(jiǎn)介:
王慶剛(1988-),男,漢族,山東臨沂人,西南石油大學(xué),碩士,助理工程師;主要研究方向和關(guān)注領(lǐng)域:網(wǎng)絡(luò)安全、計(jì)算機(jī)應(yīng)用。
劉中燁(1996-),男,漢族,四川瀘州人,西南石油大學(xué),本科在讀;主要研究方向和關(guān)注領(lǐng)域:網(wǎng)絡(luò)通信。