999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Winpcap的多線程FTP文件還原系統的實現*

2010-04-26 05:08:06吳志強馬春波敖發良
艦船電子工程 2010年10期
關鍵詞:分析

吳志強 馬春波 敖發良

(桂林電子科技大學信息與通信學院 桂林 541004)

1 引言

隨著網絡技術的飛速發展和網絡時代的到來,互聯網的影響己經滲透到人民生活的各個方面,全社會對網絡的依賴程度越來越大,整個世界通過網絡正在迅速地融為一體。隨著因特網接入技術的迅速發展,伴隨著大容量硬盤、大容量磁帶機等海量存儲設備的大范圍應用,越來越多的個人選擇利用這些資源開設FT P服務。FTP服務器功能強大,在網絡中發揮著重要的作用,因此FTP服務器的應用很廣泛,對FTP服務器的監控有重要的作用。

在通常的網絡環境之下,FTP的信息包括口令都是以明文的方式在網上傳輸的,只要將網絡接口設置成混雜模式,WinPcap捕獲數據包及對數據包的過濾,便可以源源不斷地將網上傳輸的信息截獲,因此進行網絡監聽從而獲得FTP信息并不是一件困難的事。FTP文件內容信息的還原是本文的重點。本文的工作總結以下幾點:在VC開發環境下,開線程實現了監視FTP的信息內容及文件的還原,還原文件可以進行保存,方便查看、處理和驗證。這些技術可以對FTP服務器安全防范和保障網絡安全;另外可以維護網絡環境,監聽在網上傳播的不法文件信息,它在協助網絡管理員監察維護網絡環境安全等方面具有非常重要的作用。

2 網絡數據包捕獲及WinPcap工作原理

2.1 網絡數據包捕獲原理

網卡具有4種工作模式:廣播模式、多播傳送模式、直接模式、混雜模式[4]。網卡的缺省工作模式包含廣播模式和直接模式,即它只接收廣播幀和發給自己的幀。如果采用混雜模式,網卡將接受同一網絡內所有主機所發送的數據包,數據包捕獲程序就是在這種模式下運行的,這樣就可以達到對所有數據包進行捕獲的目的。

2.2 WinPcap工作原理

2.2.1 Winpcap組成

WinPcap為數據包捕獲提供了Windows下的一個平臺,它是由伯克利分組捕獲庫派生而來的分組捕獲庫,它是在Win32平臺上來實現對底層包的捕獲,它的體系結構是由一個核心的包過濾驅動程序,一個底層的動態連接庫Packet.dll和一個高層的獨立于操作系統的庫(Wpcap.dll)組成[6]。

2.2.2 Winpcap捕獲過程

捕獲過程按先后順序具體可分為以下幾個步驟,即尋找系統中可用的接口列表、打開接口準備捕捉、編譯和設置過濾器、讀取捕捉數據包、關閉捕獲套接字下面以一個具體的事例來說明各函數是如何使用的,至于所用函數的原形可查閱相關的WinPcap資料[7]。實驗室電腦分別用網線與HUB相連。利用WinPcap函數進行如下編程操作,寫一個捕獲數據包過程函數getpacket()調用了如下函數:

主要函數說明:

1)pcap_findalldevs_ex(pcap_src_if_sting,null,&alldevs,errbuf)

能返回遠程適配器信息和一個位于所給的本地文件夾的pcap文件列表。

2)pcap_t*pcap_open_live(const char*device,int snaplen,int promisc,intto_ms,char*ebuf)

函數功能:用于打開device監聽設備,并得到設備描述符。

參數說明:device為監聽設備,snaplen為設定的捕獲數據的最大長度,promis為混雜模式,to_ms為設定的超時時間,ebuf用于傳遞錯誤信息。

3)int pcap_compile(pcap_*P,struct bpf_Program*fp,char*str,int optimize,bpf_u_int32 netmask)

函數功能:對過濾字符串進行編譯。

參數說明:p為得到的設備描述符,fp用于存放編譯結果,str為過濾字符串,optimize用于設定是否對編譯后的代碼進行優化,netmask為本地網絡的網絡掩碼。

4)int pcap_setfilter(pcap*p,struct bpf_program*fp)

函數功能:用于設置過濾器。

參數說明:fp存放著經pcap_compile()編譯后的代碼。

5)pcap_dumper_t*pcap_dump_open(pcap_t*p,char*fname)

函數功能:打開用于保存捕獲信息的文件。

參數說明:p為設備描述符,fname為要打開的文件名。

6)int pcap_loop(pcap_t*p,int cnt,pcap_handler callback,u_char*user)

函數功能:捕獲并處理每一個數據包。

參數說明:cnt用于設定最多處理的數據包數,-1表示處理所有數據包;callback為回調函數,該回調函數帶有三個參數,第一個參數為pcap_loop()的第四個參數user,第二個參數為指向數據包頭部的指針pcap_pkthdr*ptrPktHdr,第三個參數為指向數據包的指針化char*ptrPkt。在本模塊中,使用void pcap_dump(u_char*user,struct pcap_kthdr*h,u_char*sp)作為回調函數,該函數用于將捕獲的數據包記錄到指定的捕獲文件中。

此函數還可以使捕包程序性能的調整,如調整函數pcap_open_live()中的讀操作等待時間值。通常出于效率可將該值設置的比較大:但當對響應時間要求比較高時,應將該值改小[8]。對應用層數據包的抓獲,可對pcap_compile()函數第三個參數設置過濾條件。

3 監控FTP上傳和下載文件及還原文件的分析與設計

3.1 系統框架

整個系統的設計分為兩個部分,一個FTP監聽部分,監聽機運行在Windows系統下,目的是截獲網絡中的F TP文件數據包。另一個是FTP解析和管理部分,主要目的是對截獲的上傳和下載的文件進行解析,還原成原來的文件類型和內容,并對還原后的文件進行閱讀查看、刪除等管理操作,可以運行在監聽機上也可以運行在其它機器上。系統的總體框架如圖1所示。

圖1 系統的總體框架

3.2 FTP協議分析和還原算法及流程圖

FTP是基于TCP/IP的文件傳送協議,為用戶提供一種在兩個主機之間傳送文件的標準方法,典型應用是,用戶連接上一個遠程計算機(計算機上運行FTP服務器程序),查看遠程計算機有哪些文件,然后把文件從遠程計算機上傳送到本地計算機,或把本地計算機的文件送到遠程計算機去。下面我們先介紹FTP協議,然后用面向應用層協議的數據分析還原模型,實現TFP協議的分析還原。

FTP協議位于OS1網絡七層模型的應用層,同時也是TCP/IP協議族的一部分。FTP協議的原始設計目標有4個:1)促進文件(包括程序和數據)的共享;2)鼓勵間接地或隱式地(通過程序)來使用遠程計算機;3)使得不同主機的不同文件存儲系統對用戶來講是透明的;4)高效可靠地傳輸數據[9]。

3.2.1 FTP協議傳輸文件過程

FTP傳輸有兩種模式,即Port模式和Passive模式。FTP根據不同的模式,使用不同的TCP端口號。下面以FTP Port模式為例,說明FTP步驟如下:

1)客戶端發送一個TCP SNY(TCP同步)包給服務器段眾所周知的FTP控制端口21,客戶端使用暫時的端口作為它的源端口;

2)服務器端發送SNY AKC(同步確認)包給客戶端,源端口為21,目的端口

為客戶端上使用的暫時端口;

3)客戶端發送一個ACK(確認)包:客戶端使用這個連接來發送PORT命令,服務器端使用這個連接來發送FTP應答;

4)當用戶請求一個列表(List)請求或者發起一個要求發送或者接受文件的請求,客戶端軟件使用PORT命令,這個命令包含了一個暫時的端口,客戶端希望服務器在打開一個數據連接時候使用這個暫時端口:POTR命令也包含了一個IP地址,這個IP地址通常是客戶自己的IP地址,而且TFP也支持第三方(third-party)模式,第三方模式是客戶端告訴服務器端打開與另臺主機的連接;

5)服務器端發送一個SNY包給客戶端的暫時端口,源端口為20,暫時端口為客戶端在PORT命令中發送給服務器端的暫時端口號;

6)客戶端以源端口為暫時端口,目的端口為20發送一個SNY ACK包:

7)服務器端發送一個AKC包;

8)發送數據的主機以這個連接來發送數據,數據以 TCP段(注:segmnet,第4層的UDP)形式發送(一些命令,如STOR表示客戶端要發送數據,RETR表示服務器段發送數據),這些TCP段都需要對方進行AKC確認(注:因為TCP協議是一個面向連接的協議);

9)當數據傳輸完成以后,發送數據的主機以一個FNI命令來結束數據連接,這個FIN命令需要另一臺主機以AKC確認,另一臺主機也發送一個FIN命令,這個FNI命令同樣需要發送數據的主機以ACK確認;

10)客戶端能在控制連接上發送更多的命令,這可以打開和關閉另外的數據連接;有時候客戶端結束后,客戶端以FIN命令來關閉一個控制連接,服務器端以ACK包來確認客戶端的FIN,服務器同樣也發送它的FIN,客戶端用ACK來確。

FTP和網絡應用程序的不同的是,它在主機之間使用了兩個并行的TCP連接來傳送文件,一條連接用于數據傳送,而另一條端口用于傳送控制信息(命令和響應)。把命令與數據的傳送分開使得FTP效率更高。FTP協議規定,使用端口21作為控制連接,在會話過程中分配一個端口作為數據連接,在實際應用中,數據傳輸端口可以有公式計算(下面表給以說明)。

客戶端數據一般包含以下三個部分:命令行、用戶名和密碼以及文件數據。對客戶端數據以行為單位進行分析,即可提取出FTP的命令字段。如表1所示。

表1 常用到的一些FTP命令

3.2.2 FTP還原總流程圖及還原算法

從上面的FTP介紹知道,FT P除了具有命令方式外,還會根據數據傳輸情況產生新的數據傳輸方式。因此,TFP協議的應用層分析和還原包括兩部分:

1)FTP命令的還原,即將客戶端訪問FTP服務器的命令及FTP服務器的響應進行還原,進而實現FTP操作過程的重組。

2)F TP傳輸內容的還原,即將客戶端和服務器之間傳遞的文件進行保存,和還原,進而實現FTP傳輸數據的重組。

FTP命令非常簡單,這里我們不再介紹。下面我們介紹如何使用面向應用層協議的數據分析還原總流程圖2所示。

下面分析思路:為了提高運行速度,防止丟包現象,及還原文件效率,優化程序,作者創建三個線程分別實現不同的作用,主進程是WinPcap抓包,這是主線,整個系統貫徹這主線的基礎上才有下面的研究,對網絡層,傳輸層和應用層的分析,線程1是協議分析,網絡通信有很多協議,因此協議分析是關鍵,針對不同的協議有不同的分析方法,這是還原文件的前提,同時也是提高監聽速度,線程1不是本文的重點,就不詳細介紹了,本文是對FTP上傳和下載文件的分析并還原,因此當有FTP數據包時,我們打開線程2,不過這時是休眠狀態,可能客服端只是對FTP服務器的一般訪問,沒有具體的操作,即可能沒有什么下載或上傳文件的動機,因此要仔細觀察和分析整個F TP交互過程,在FTP服務器和客戶端的會話過程,如果客戶希望服務器下載文件或者目錄或者向服務器上傳一個文件時,觸發并打開線程2,這時作者設計了FTP文件還原子流程圖如圖3所示。

圖2 還原FTP上傳和下載文件數據總體流程圖

掌握FTP還原流程,就可以實現還原FTP協議的傳輸文件,下面分析FTP還原算法描述:

第一步:首先,確定會話開始標志

TFP協議傳輸內容的會話開始標志出現在PORT命令中。這個命令包含了一個暫時的端口,客戶端希望服務器在打開一個數據連接時候使用這個暫時端口。

設置會話開始標志為POTR。

第二步:確定會話結束標志

FTP協議在會話結束時通常沒有專用的標志(部分特殊應用除外),因此,可以使用TCP的斷開連接標志位來作為FTP會話結束標志.例如,使用數據包的TCP RST標志和TCP FIN標志。

第三步:還原步驟

下面是應用層數據重組的策略也是文件還原系統的核心:

1)根據PORT命令的參數,提取臨時端口,然后與控制端口21結合來分析服務器與客服端之間的交互過程;

2)對數據包數據進行匹配,當匹配的字符串是STOR時,說明客服端要向FTP服務器上傳資料,這時打開線程進行監聽,捕獲上傳文件,跳至3);當匹配的字符串是RET R時,說明客服端要向FTP服務器下載資料,這時打開線程進行監聽,捕獲下載文件,跳至1);其他命令時,跳至10);

圖3 FTP還原子流程圖

3)如果是第一個數據包,獲取響應包附帶的參數,初始化流狀態的部分狀態值,獲得當前序列碼為sequence和數據偏移量data_len,下一個包的序列碼為next_seq_num。其大小為:next_seq_num=sequence+data_len;是為了在多文件上傳時確保不會導致接收數據混亂,并采取一邊獲取數據包一邊寫入文件的形式還原重組文件,此時跳至8);

4)當實驗環境是在Internet Explorer下載文件時,跳至5);當實驗環境是在Windows資源管理器界面下載文件時,跳至6);

5)當下載方式是Windows系統自帶的下載方式即“另存為”,則調用函數f1處理數據包,這里主要是對下載目錄技巧問題的處理,則跳至7);

6)下載方式是把文件用復制方式保存在客服端目標主機上,調用函數f2分析數據包,并還原文件內容,跳至7);

7)開始獲得下載文件數據包的當前序列碼即為sequence和數據偏移量data-len,并設下一個包的序列碼為 next_seq_num。其值為:next_seq_num=sequence+data_len,當下一個數據包的序列碼等于next_seq_num時,則為該文件的數據,不等則丟棄,這樣的目的是為了在多文件上傳時確保不會導致接收文件數據時混亂;

8)根據數據包的長度和數據偏移,將包的應用層數據部分保存到文件中。用面向應用層協議的數據分析還原模型,然后在會話標志集中設置好的標志、策略,即可實現PTP協議的還原重組;

9)當發送數據的主機以一個FNI命令來結束數據連接,這個FNI命令需要另一臺主機以AKC確認,表明數據傳輸結束則跳至10);否則跳至7);

10)關閉文件,關閉線程,結束則停止FTP還原子程序。

從還原算法可以得出,要獲取有用的數據需要對數據包進行解碼。從鏈路層協議開始進行解碼分析,一直到應用層的協議,重點是應用層對應用層數據的還原,在分析過程中,可以知道下載方式的不同,客戶端和服務器交互過程是不同的,響應的關鍵字也有所不同,但傳輸數據原理是相同的,這里針對不同的情況進行分析,還原出原文件。文件是以原文件的格式保存,保存在硬盤上方便查看和驗證。

4 結語

面向應用層協議的數據分析還原算法建立在基于Winpcap基礎之上,因此,其保留了基于Winpcap的抓包的特點,同時克服了部分不足。主要體現在以下兩點:

1)進一步提高了分析的速度,同時大大提高分析的準確性。基于應用層字符串的協議分析主要用在基于會話的網絡協議的分析上。比如,假設一次會話有100個報文通訊,而真正產生應用層數據的數據包在第5到第90個之間,則我們只關心這個會話的第5到第90個報文,只有這些報文才存在著有用信息,而對于這次會話的其他報文我們就沒有必要去分析和處理。這就使得我們分析的報文數量下降了。

2)節約了協議分析時間。實踐證明,使用本模型分析應用層協議,可以大大提高效率。在該監聽系統,作者開了三個線程,有針對性的處理不同的問題,特意有一個線程是用來分析協議的。

該系統在局域網內能正常運行,性能良好,當然,系統還有一些方面的改進和優化,以便擴充與增強系統的性能。

[1]李亞恒,唐毅.網絡安全監測系統[J].計算機工程,2001,27(4):127~129

[2]Gerhard Steinke.Data privacy approaches from US and EU perspectives[J].Telematics and Infoematics,2002(19):193~200

[3]譚國亮.監聽與隱藏[M].北京:人民郵電出版社,2002

[4]秦根建,張秉權.網絡數據包截獲機制研究[J].兵工自動化,2003,22(6):2~3

[5]Behrouz A Forouzan,Sophia Chung Fegan.TCP/IP協議族[M].謝希仁,譯.北京:清華大學出版社,2006:24~29

[6]張偉,王韜,潘艷輝,等.基于WinPcap的數據包捕獲及應用[J].計算機工程與設計,2008,29(7):1649~1651

[7]循序漸進學習使用WinPcap.中國協議分析網[EB/OL].http://www.cnpaf.net/,2005

[8]李雪瑩,劉寶旭,許榕生.基于WinPcap的網絡監控系統性能優化[J].計算機工程,2004,30(1):8~9

[9]羅軍舟,波濤.TCP/PI協議及網絡編程技術[M].北京:清華大學出版社:111~114

猜你喜歡
分析
禽大腸桿菌病的分析、診斷和防治
隱蔽失效適航要求符合性驗證分析
電力系統不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
電力系統及其自動化發展趨勢分析
經濟危機下的均衡與非均衡分析
對計劃生育必要性以及其貫徹實施的分析
現代農業(2016年5期)2016-02-28 18:42:46
GB/T 7714-2015 與GB/T 7714-2005對比分析
出版與印刷(2016年3期)2016-02-02 01:20:11
中西醫結合治療抑郁癥100例分析
偽造有價證券罪立法比較分析
在線教育與MOOC的比較分析
主站蜘蛛池模板: 一区二区三区精品视频在线观看| 久久久久久久97| 99在线观看国产| jizz国产视频| 全部免费特黄特色大片视频| 国产精品短篇二区| 国产亚洲欧美日韩在线一区| 国产亚洲欧美在线专区| 久久综合伊人 六十路| 亚洲Aⅴ无码专区在线观看q| 亚洲日韩在线满18点击进入| 亚洲av无码人妻| 国产综合精品一区二区| 国产亚洲欧美日韩在线一区二区三区| 好紧太爽了视频免费无码| 人妻无码中文字幕一区二区三区| 久久人妻xunleige无码| 精品人妻系列无码专区久久| 五月激激激综合网色播免费| 性欧美精品xxxx| 最新日本中文字幕| 亚洲自拍另类| 二级毛片免费观看全程| 激情视频综合网| 亚洲a级在线观看| 亚洲a级毛片| 国产69精品久久久久孕妇大杂乱| 久久99国产综合精品女同| 国产色偷丝袜婷婷无码麻豆制服| 国产剧情国内精品原创| 在线国产你懂的| 最近最新中文字幕免费的一页| 国产18在线播放| 一级毛片在线播放| 爱色欧美亚洲综合图区| 国产在线一区视频| 高清无码一本到东京热| 午夜国产精品视频黄| 欧美www在线观看| 天天做天天爱天天爽综合区| 黄色在线网| 日本人真淫视频一区二区三区| 亚洲VA中文字幕| 日本不卡在线视频| 国产精品男人的天堂| 亚洲福利视频网址| 青青热久麻豆精品视频在线观看| 国产肉感大码AV无码| 九九热免费在线视频| 一本大道视频精品人妻| 视频一区视频二区日韩专区 | 国产91精品久久| 欧美国产另类| 免费观看无遮挡www的小视频| 色综合成人| 超碰91免费人妻| 亚洲综合国产一区二区三区| 亚洲欧美日韩高清综合678| 91精品啪在线观看国产| 亚洲国产清纯| 午夜福利在线观看成人| 亚洲中文无码av永久伊人| 奇米精品一区二区三区在线观看| 久久女人网| 日韩在线播放欧美字幕| 无码AV高清毛片中国一级毛片| 久久美女精品国产精品亚洲| 欧美午夜精品| 精品久久久久久久久久久| 午夜a级毛片| 干中文字幕| 国产精品污视频| 亚洲中久无码永久在线观看软件 | 国产尤物视频网址导航| 国产日本一线在线观看免费| 亚洲性影院| 国产成人精品一区二区不卡| 亚洲一区二区视频在线观看| 在线色综合| 嫩草国产在线| 毛片大全免费观看| 久久99精品国产麻豆宅宅|