




已閱讀5頁,還剩59頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
畢業設計題目基于網絡數據包分析技術的研究基于網絡數據包分析技術的研究摘要隨著網絡技術的迅速發展和人們需求的不斷提高,網絡安全問題越來越嚴重,造成的損失非常巨大,為解決網絡安全問題而投入的資金也越來越多。本文通過使用ETHEREAL捕捉實時網絡數據包,并根據網絡協議分析流程對數據包在TCP/IP各層協議數據進行解包分析,讓網絡研究人員對數據包的認識上升到一個感性的層面,為網絡協議分析提供技術手段。最后根據ETHEREAL的工作原理,使用了WINDOWS平臺下開源的網絡數據包捕獲開發庫WINPCAP,用VISUALC編寫一個簡單的數據包捕獲與分析軟件。關鍵詞網絡數據包網絡協議分析還原BASEDONTHESTUDYOFNETWORKPACKETANALYSISTECHNOLOGYAUTHORSHANXIAOQIANADVISORCHENXINFANGABSTRACTWITHTHERAPIDDEVELOPMENTOFNETWORKTECHNOLOGYANDTHEINCREASINGDEMANDOFPEOPLE,THENETWORKSECURITYPROBLEMISBECOMINGMOREANDMORESERIOUS,WITHHUGELOSSES,THEFUNDSINPUTTOSOLVETHENETWORKSECURITYAREINCREASINGLYUSINGETHEREALTOCAPTUREREALTIMENETWORKDATAPACKET,UNPACKINGANALYSISDATAPACKETSINTCP/IPEACHLAYERDATAACCORDINGTOANALYSESTHEPROCESSOFNETWORKPROTOCOL,NETWORKRESEARCHERSTOUNDERSTNDTHEDATAPACKETTOAPERCEPTUALLEVEL,PROVIDETHETECHNICALMEANSFORTHENETWORKPROTOCOLANALYSISFINALLY,FINALLY,ACCORDINGTOTHEWORKINGPRINCIPLEOFETHEREAL,USINGWINPCAPOFLIBRARYNETWORKDATAPACKETCAPTUREDEVELOPINPLATFORMOFWINDOWSOPENSOURCE,WITHVISUALCTOWRITEASIMPLEDATAPACKETCAPTUREANDANALYSISSOFTWAREKEYWORDSNETWORKPACKETSNETWORKPROTOCOLANALYSISREDUCTION目錄引言11網絡的基本概念211OSI網絡參考模型212TCP/IP網絡42網絡協議分析技術521軟件ETHEREAL簡介522利用ETHEREAL捕獲數據包523利用ETHEREAL對捕獲數據包進行分析73網絡協議分析程序的設計1831應用技術1832設計思路2433主要函數說明264網絡協議分析程序的實現3041界面制作3042開發代碼335程序的測試5451系統的測試5452測試用例和結果5453系統實現5654系統性能分析58結論58致謝59參考文獻60引言網絡是信息傳輸、接收、共享的虛擬平臺,通過它把各個點、面、體的信息聯系到一起,從而實現這些資源的共享。它是人們信息交流使用的一個工具。作為工具,它一定會越來越好用的。功能會越來越多,內容也會越來越豐富。但如果沒有限制,就會給用戶和社會帶來很多不良影響。所以對網絡進行合理的監控就非常重要。網絡數據的分析是把先捕獲網絡中傳輸的數據包,通過網絡協議進行解析,再還原數據包的信息來監控網絡傳輸數據,從而了解網絡的實際運行情況。通過這些網絡信息就可以了解故障發生的地點及其原因。本文的設計目的是完成基于WINDOWS平臺的網絡數據包分析系統,它利用WINSOCK實現網絡數據包的捕捉,并且結合相關的網絡協議對數據包進行分析、解析、還原來實現對網絡故障進行分析等功能。論文第一章介紹了網絡的基本概念,介紹網絡參考模型、TCP/IP協議、TCP/IP網絡;第二章介紹了ETHREAL軟件的安裝、啟動,并用它進行數據包捕獲和分析的實驗;第三章介紹了根據ETHEREAL的工作原理,用VISUALC編寫一個簡單的數據包捕獲與分析軟件網絡探測程序的系統設計、實現和工作流程;第四章介紹了網絡探測程序的一些測試結果。1網絡的基本概念11OSI網絡參考模型OSI(OPENSYSTEMINTERCONNECT)開放式系統互聯。一般都叫OSI參考模型,是ISO(國際標準化組織)組織在1985年研究的網絡互聯模型。國際標準化組織ISO發布的最著名的標準是ISO/IIEC7498,又稱為X200協議。這個結構把網絡互連的七層框架給定義了,并且規定每一層的功能,實現了開放系統環境中的互連性、互操作性和應用的可移植性1。OSI的服務定義不涉及接口是怎么實現的,它詳細說明了各層所提供的服務。某一層的服務它通過接口提供給更高一層。并且各種服務定義也把層與層之間的接口和各層的所使用的原語定義了。因為協議的規程說明很有最嚴格的約束,所以OSI標準中的各種協議把應當發送怎樣的控制信息,還有用怎樣的過程來解釋這個控制信息給定義了。ISO/OSI參考模型只用來協調進程間通信標準的制定。在OSI范圍內,各種的協議只有在被實現的并且與OSI的協議相一致,才能互連。所以在網絡剛出現的時,雖然很多公司都擁有了網絡技術,并且公司內部的計算機已經可以相互連接。但是卻不能與其它公司連接。這是因為對方不能理解計算機之間相互傳輸的信息,沒有一個統一的規范,所以不能互聯。OSI模型如表11,12所示表11OSI模型應用層SMB,NCP,TELNET,HTTP,FTP,SMTP表示層JPG,SMBNEGOTIATION,GIF,MPEG,ASN1會話層NETBIOS,TCP3WAYHANDSHAKE傳輸層TCP,SPX網絡層IP,IPX,DDP數據鏈路層ETHERNET,FRAMERELAY,TOKENRING,FDDI物理層X21,RS232,DSI,DS3OSI模型用途還是很廣泛。比如交換機、路由器、集線器等網絡設備的設計都是參照OSI模型設計的。表12各個層的意義物理層PHYSICALLAYER是OSI模型的最低的一層,它利用傳輸介質為數據鏈路層提供物理連接,也就是物理層確保原始數據可以使各種物理媒體傳輸包括信號線的功能、數據傳輸速率、物理連接器規格、“0”和“1”信號的電平表示及其相關的屬性等數據鏈路層DATALINKLAYER是OSI模型的第二層,位于物理層和網絡層之間,解決兩個相鄰結點之間的通信傳輸,為網絡層提供服務的數據鏈路層還可以協調收發雙方的進行流量控制,以防止沖器溢出及線路阻塞網絡層NETWORKLAYER是OSI模型的第三層,為傳輸層提供服務的。網絡層的主要作用是通過網絡連接交換傳輸層發出的實體數據。交換過程中,選擇合適的傳輸路徑,解決網絡中出現的局部擁擠或全面的阻塞。此外,網絡層還應有記賬功能,一邊通過網絡中交換的分組或字符數、位數收取費用。當傳輸的數據跨越一個網絡邊界時,網絡層根據不同的分組長度、尋址方式、通信協議進行交換,使得異構網絡能夠互相通信傳輸層TRANSPORTLAYER是OSI模型中最重要,最關鍵的一層,是唯一負責總體的數據傳輸和數據控制的一層。傳輸層提供端到端的交換數據的機制,檢查分組編號與次序。傳輸層對其上三層如會話層等,提供可靠的傳輸服務,對網絡層提供可靠的目的地站點信息主要功能為端到端連接提供傳輸服務這種傳輸服務分為可靠和不可靠的,其中TCP是典型的可靠傳輸,而UDP則是不可靠傳輸為端到端連接提供流量控制,差錯控制,服務質量等管理服務會話層SESSIONLAYER是OSI模型的第五層,為兩個會話層實體進行會話的管理服務表示層PRESENTATIONLAYER是OSI模型的第六層,處理流經結點的數據編碼的表示方式,使一個系統應用層可以讀出另一系統的應用層的發出信息。表示層可提供的轉換功能有數據壓縮和加密應用層APPLICATIONLAYER是OSI參考模型的最高層,也是網絡和用戶的接口。它通過應用程序來完成網絡用戶的需求,如收發電子郵件、文件傳輸等等12TCP/IP網絡網絡協議2即網絡中(包括互聯網)傳遞、管理信息的一些規范。如同人與人之間相互交流是需要遵循一定的規矩一樣,計算機之間的相互通信需要共同遵守一定的規則,這些規則就稱為網絡協議。網絡上的所有通信設備都是由它規范的,它是一種網絡通信協議,特別是兩個主機之間數據的往來格式和傳送方式。普通用戶雖然不了解網絡協議的整個結構,但是知道IP的地址格式,就可網絡通信。總結TCP/IP結構對應OSI如圖13。表13TCP/IP結構對應OSIOSI中的層功能TCP/IP協議族應用層文件傳輸,電子郵件,文件服務,虛擬終端TFTP,HTTP,SNMP,FTP,SMTP,DNS,TELNET等等表示層翻譯、加密、壓縮沒有協議會話層對話控制、建立同步點(續傳)沒有協議傳輸層端口尋址、分段重組、流量、差錯控制TCP,UDP網絡層邏輯尋址、路由選擇IP,ICMP,OSPF,EIGRP,IGMP,RIP,ARP,RARP數據鏈路層成幀、物理尋址、流量,差錯,接入控制SLIP,CSLIP,PPP,MTU物理層設置網絡拓撲結構、比特傳輸、位同步ISO2110,IEEE802,IEEE8022網絡層中的協議主要有IP、IGMP、ICMP等,因為IP協議模塊被包含了,所以是所有基于TCP/IP協議網絡的核心,在網絡層中,IP模塊完成大部分功能,ICMP和IGMP以及其他支持IP的協議幫助IP完成特定的任務3。傳輸層上的主要協議是TCP和UDP,正如網絡層控制著主機之間的數據傳遞,傳輸層控制著那些將要進入網絡層的數據,兩個協議就是它管理這些數據的兩種方式TCP是一個基于連接的協議;UDP則是面向無連接服務的管理方式的協議3。2網絡協議分析技術21軟件ETHEREAL簡介ETHEREAL4(ETHEREALANETWORKPACKETSNIFFINGTOOL)是當前較為流行的一種計算機網絡調試和數據包嗅探軟件,ETHEREAL基本和TCPDUMP一樣,但ETHEREAL還具有設計完美的GUI,許多分類信息和過濾選項,用戶通過ETHEREAL,同時將網卡是混合模式,可以了解到所有通信流量,ETHEREAL應用于故障修復、分析、軟件和協議開發以及教育領域,用戶對協議分析器所希望的所有特征它都有,如圖21所示。圖21ETHEREAL簡介ETHEREAL主要具有以下特征在實時時間內,從網絡連接處捕獲數據,或者從被捕獲文件處讀取數據;可以讀取從TCPDUMP(LIBPCAP)、SNIFFERTM專業版、網絡通用嗅探器、SHOMITI/FINISAR測試員等處捕獲的文件,也能從LUCENT/ASCENDWAN、TOSHIBAISDN路由器中讀取跟蹤報告,還能從VMS的TCPIP讀取輸出文本和DBSETHERWATCH4。通過EDITCAP程序的命令行交換機;利用GUI或TTY模式TETHEREAL程序,可以訪問被捕獲的網絡數據;捕獲文件可以被修改;分割602協議;把輸出文件保存或打印為純文本或者POSTSCRIPT格式;顯示過濾器選擇用高亮區和顏色包摘要信息;網絡跟蹤報告可以保存到磁盤中4。22利用ETHEREAL捕獲數據包如表21所示。表21具體步驟第一步安裝ETHEREAL第二步單擊CAPTURE下的OPTION菜單,打開捕獲選項對話框,設置好捕捉接口(INTERFACE)和過濾器CAPTUREFILTER,設置混雜模式(PROMISCUOUSMODE)選項,其他選項可采用默認設置如圖22第三步單擊START按鈕即可實時截獲數據包5第四步用ETHEREAL的捕獲窗口如圖23,捕獲數據包的部分截圖見圖24。所截獲的數據包分別在包列表PACKLIST、包細節(PACKETDETAILS)與包字節PACKEBYTES三欄窗口中顯示。其中上欄的包列表窗口按截獲的時間順序顯示出數據包的基本信息編號(代表收到數據包的次序)、時間、源地址、目的地址協議名稱以及關于此數據包的摘要信息;中間欄的包細節窗口以樹形顯示當前數據包在各協議層的封裝細節,包括首部和數據;下欄的包字節窗口則以十六進制和ASCII碼顯示被截獲數據包的詳細內容左邊一欄顯示偏移量,中間一欄顯示十六進制數值,右邊一欄顯示解碼后相對應的字符(控制字符示為1個點)5圖22ETHEREAL的設置圖23捕獲狀態窗口圖24捕獲的數據包23利用ETHEREAL對捕獲數據包進行分析ETHEREAL作為較為流行的一款計算機網絡調試和數據包嗅探軟件,可以用來監視所有在網絡上被傳送的包,并分析其內容的程序。他經常用來檢查網絡工作情況,或是用來發現網絡程序的BUGS。通過ETHEREAL對TCP、FTP、UDP、SMTP等常用協議進行分析,有益于網絡故障的修復分析和軟件和協議開發。231ARP協議分析實驗(1)ARP協議分析ARP,全稱ADDRESSRESOLUTIONPROTOCOL,地址解析協議它工作在數據鏈路層,在本層和硬件接口聯系,同時對上壓供服務。在以太網中,兩臺主機進行直接通信,必須要知道目標主機的MAC地址,但目標MAC地址怎么得到的呢它是通過地址解析協議獲得的如圖25,將網絡中的IP地址解析為的硬件地址MAC地址就是因為ARP協議,因為ARP協議經常被用,所以我們用ETHEREAL抓取網絡中的ARP數據包如圖26,我們可以看到一些捕到的ARP的數據包,比如第1個ARP數據包WHOHAS102823140TELL102823250,通過IP地址找對方的MAC地址,ARP協議的結構如圖27,對比圖28中框部分與圖27中框部分,我們可以看到兩者是相同的,通過ARP的結構有更深刻認識14。圖25ARP捕獲狀態窗口圖26捕獲的ARP數據包以太網目的地址以太網源地址幀類型協議類型硬件類型OP發送端以太網地址發送端IP地址目的以太網地址目的IP地址硬件地址長度協議地址長度圖27ARP報文結構圖28ARP結構232分析TCP/IP機制的實驗TCP是一種面向連接的、可靠的傳輸層協議,TCP數據傳只有連接建立后才可進行數據傳輸需要通過在客戶端和服務端建立特定的虛電路連接來完成,該過程通常被稱為“三次握手”,如圖29,即發送方先發送連接請求,然后接受方進行連接確認,最后發送方對接受方再次進確認。下面就以ETHEREAL捕獲的建TCP連接過程的三個數據包為例對TCP/IP協議進行分析。SYN,SEQXSYN,SEQY,ACKX1ACKY1圖28三次握手示意圖第一步ETHEREAL要保持捕獲狀態如圖210,過濾器設置為TCP,這樣就可以只捕獲TCP協議的數據包。圖210TCP捕獲狀態窗口第二步保持捕獲的狀態,打開HTTP/WWW163COM網頁,這樣就捕獲到在訪問網頁時建立連接的TCP數據包如圖211。圖211TCP捕獲狀態窗口第三步點擊停止,如圖212顯示的就是捕獲的前4個數據包,可以看到1至3號數據包是連接建立過程,連接建立完成以后4號數據包開始傳輸數據。圖212捕獲到的數據包客戶端發送連接請求,從圖213可以看出,該數據包封裝了三個頭信息以太網幀、IP數據報(首部格式如圖213)和TCP報文段固定首部格式如圖214,具體數據如表215表表215具體數據接收方MAC00030F000C4B源主機MAC00030DA40F72TYPE0X0800版本號VERSION4首部HEADLENGTH20BYTES服務類型SERVICESFIELD0X00數據報總長TOTALLENGTH48標識IDENTIFICATION0X96B53標志FLAGS0X04段偏移FRAGMENOFFSET0生存時間TIMETOLIVE128TCP報文段PROTOCOL0X06頭部校驗和0X1206表示正確請求主機的IP地址為101023226,目的主機的IP地址為5824824540,在運輸層,主要數據對象是TCP報文。在以上的TCP報文段中,具體數據如表216表216具體數據目的端口號DESTINATIONPORT80請求方源端口號SOURCEPORT1615HTTP協議的保留端口號0頭部長度HEADERLENGTH28BYTES標志位FLAGSOX0002窗口字段WINDOWSIZE的最大字節數65535校驗和CHECKSUM0XF6A表示正確15序列號SEQ是本次連接的初始序號,因此在連接請求時相對初始值是0,其實際值是246815A1;確認號是00000070,指示ACK0表示忽略確認號,SYN1表示正在進行連接請求,在連接請求中,SYN1、ACK0,連接響應時,SYN1、ACK1;PSH為015。比特04816192431版本首部長度總長度服務類型標識標志片偏移生存時間協議首部檢驗和源地址目標地址圖213IP數據報首部格式比特08162431目的端口確認號源端口序號數據偏移保留URGACKPSHPSTSYNFIN窗口檢驗和緊急指針圖213TCP報文段固定首部格式字節662461054目的MAC地址源MAC地址類型數據FCS圖217以太網V2MAC幀格式圖218發送方發出的連接請求數據包如圖218是對此數據包的具體分析,了解到服務端5824824540發至客戶端101023226。在響應TCP報文段中,SEQ為EF84C89B,確認號為246817A2,標志位為0X0010,指示ACK標志為1,表明確認號有效、SYN仍然為1。圖219服務端響應數據包如圖220為客戶端確認數據包,數據包由客戶端101023226發送給服務端5824824540,序列號為246815A2,本次確認號為73FF17FF,標志位OX0010,指示ACK標志為1表明確認號有效,SYN置為0表示連接建立結束。圖220客戶端確認數據包建立了完整的TCP連接后全雙工模式的數據傳輸過程開始了。通過上述利用ETHEREAL對TCP連接過程的三個數據包的分析,可以了解TCP/IP協議的三次握手過程。233UDP協議的實驗UDP是USERDATAGRAMPROTOCOL的簡稱,中文名是用戶數據包協議,是OSI參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務6。其特點UDP是一個無連接協議,當傳送時就可以從應用程序的數據獲得,并且盡快地把它放到網絡上面;一臺服務機可同時向多個客戶機傳輸相同的消息,是因為傳輸數據不建立連接,也就不需要維護連接狀態了;UDP信息包的標題只有8個字節,相對TCP的20個字節信息包的額外開銷很小;吞吐量只受應用軟件生成數據的速率、傳輸帶寬、源端和終端主機性能的限制;UDP不保證可靠交付,不需要維持復雜的鏈接狀態表這里面有許多參數;UDP是面向報文的,應用程序需要選擇合適的報文大小6。圖221抓包后主界面大量UDP協議原始框表示出了分組中包含的每個數據的字節,我們可以看出最原始的傳輸數據。方框右邊是ASCII碼,左邊是十六進制的數據。報文的二進制碼就是發送的最原始內容。選擇其中第8個包進行分析。圖222第8個FRAME表223數據解析第1行現在此貞基本信息。名稱,692字節第2行顯示到達時間20100702第3、4行現在使用時間第6、7行現在貞長度和捕獲長度,都是692字節第8、9、10行現在此貞類型,為UDP類型圖224以太網圖225顯示了此貞的源地址和目的地址,分別為第3行,第7行。另外說明了此貞是個單波貞“THISISAUNICASTFRAME”。圖225INTERNET協議表226具體數據分析第1行給出了源地址和目的地址,分別為602124012;2185615886第2行VERSION4,表示IP協議的版本號為4,即IPV4,占4位,HEADERLENGTH20BYTES,表示IP包頭的總長度為20個字節,該部分占4個位。所以第一行合起來就是一個字節第3行給出頭長度,20字節第6行IDENTIFICATION40793,表示IP包識別號為40793。該部分占兩個字節第7行FLAGS,表示片標志,占3個位。各位含義分別為第一個“0”不用,第二位為不可分片位標志位,此處值為“1”表示該數據表禁制分片。第三位為是否最后一段標志位,此處“0”表示最后一段第10行給出貞類型,為UDP第11行HEADERCHECKSUN0XF43CCORRECT,表示IP包頭校驗和為0XF43C,括號內的CORRECT表示此IP數據包是正確的,沒有被非法修改過。該部分占兩字節圖227用戶數據報協議表228具體數據分析第2行源端口13237。2字節,源端口號,即發送這個TCP包的計算機所使用的端口號第3行目的端口10611。2字節,目標端口號,即接受這個TCP包計算機所使用的端口號第4行長度658字節第5行CHECKSUM檢驗和,校驗和。在數據處理和數據通信領域中,用于校驗目的的一組數據項的和。這些數據項可以是數字或在計算檢驗和過程中看作數字的其它字符串244ICMP協議的實驗ICMP是(INTERNETCONTROLMESSAGEPROTOCOL)INTERNET控制報文協議。它是TCP/IP協議族的一個子協議,屬于網絡層協議,主要用于在主機與路由器之間傳遞控制信息,包括報告錯誤、交換受限控制和狀態信息等,當遇到IP數據無法訪問目標、IP路由器無法按當前的傳輸速率轉發數據包等情況時,會自動發送ICMP消息,ICMP提供一致易懂的出錯報告信息,發送的出錯報文返回到發送原數據的設備,因為只有發送設備才是出錯報文的邏輯接受者,發送設備隨后可根據ICMP報文確定發生錯誤的類型,并確定如何才能更好地重發失敗的數據報1024。圖229窗口中的ICMP協議(請求)圖230窗口中的ICMP協議(應答)從上面兩圖和前面分析的協議區別是增加了TYPE0ECHOPINGREQUEST/REPLY,表示了PING類型和代碼。圖231網際協議表231數據分析第1行給出了源地址和目的地址,分別為602124012;221202136137第2行VERSION4,表示IP協議的版本號為4,即IPV4,占4位,HEADERLENGTH20BYTES,表示IP包頭的總長度為20個字節,該部分占4個位。所以第一行合起來就是一個字節第3行給出包頭長度,68字節第6行IDENTIFICATION40853,表示IP包識別號為40853。該部分占兩個字節第7行FLAGS,表示片標志,占3個位。各位含義分別為第一個“0”不用,第二位為不可分片位標志位,此處值為“1”表示該數據表禁制分片。第三位為是否最后一段標志位,此處“0”表示最后一段第10行給出貞類型,為ICMP第11行HEADERCHECKSUN0X8AECORRECT,表示IP包頭校驗和為0X8AE,括號內的CORRECT表示此IP數據包是正確的,沒有被非法修改過。該部分占兩字節3網絡協議分析程序的設計31應用技術311VISUALC簡介VISUALC即VC,微軟公司出品的高級可視化計算機程序開發工具。他提供了一套開發環境VISUALSTUDIO,VISUALSTUDIO本身包括一個文本編輯器、資源編輯器、工程編譯工具、一個增量連接器、源代碼瀏覽器、集成調試工具,以及一套聯機文檔,借助這套工具,用戶可以隨心所欲地開發出各種功能的應用軟件以及借助OPENGL和DIRECTX技術開發游戲軟件。VISUALC可以識別C/C并編譯,支持MFC類庫,并提供了一系列模板,常用的MFCAPPWIZARDEXE/DLL,MFCACTIVEXCONTROLWIZARD,WIN32APPLICATION,WIN32CONSOLEAPPLICATION,ATLCOMAPPWIZARD,這種可視化編程環境可以令程序員花更多精力在程序功能的實現上,而不是底層的建設上,這就大大加快了程序開發速度和效率,這也是VISUALC一個顯著的特點,利用VISUALC編譯出的程序空間小,運行快,比其他的編譯工具編譯出的軟件占據較多優勢11。312WINPCAP簡介WINPCAP是一個在WINDOWS操作系統下的免費、公開的用于直接訪問網絡的開發工具包(編程API)。大多數WINDOWS網絡應用程序都是通過WINSOCKAPI(WINDOWS套接口)這類高級編程接口訪問網絡的。這種方法只能可以在網絡上進行簡單的數據傳送,不可以滿足實際的需要。有些程序希望繞過TCP/IP協議棧,直接處理底層網絡中的通信數據,它們需要對網絡進行底層進行直接訪問,即在沒有類似協議棧(TCP/IP協議棧)的實體介入條件下對網絡進行原始訪問。基于WINSOCKAPI編程,應用程序是通過調用操作系統提供的編程接口訪問TCP/IP協議棧實現網絡通信的。基于WINPCAP編程,網絡程序實際上是繞開操作系統的TCP/IP協議棧直接通過底層網絡發送數據,因此網絡程序可以實現一些更低級、更靈活的功能。WINPCAP提供了一個強大的編程接口,它很容易地在各個操作系統之間進行移植和方便開發。很多不同的工具軟件都使用WINPCAP進行網絡安全監控,網絡分析和故障排除等方面。WINPCAP特別適用于網絡及協議分析,網絡監控,NIDS等經典領域。但是WINPCAP也不是萬能,因為它不利用主機的如TCP/IP協議去接收和發送數據包,所以它一定不可以阻塞,一臺主機中各程序之間的通信數據是不可以同時處理,物理線路上的數據報只能被它感受到,因此QOS調度和個人防火墻等是不能用它。(1)利用WINPCAP進行網絡數據包的捕獲和過濾的步驟表31具體步驟第一步打開網卡,并設為混雜模式第二步回調函數NETWORKTAP在得到監聽命令后,從網絡設備驅動程序處收集數據包把監聽到的數據包負責傳送給過濾程序第三步當PACKETFILTER監聽到有數據包到達時,NDIS中間驅動程序首先調用分組驅動程序,該程序將數據傳遞給每一個參與進程的分組過濾程序第四步然后由PACKETFILTER過濾程序決定哪些數據包應該丟棄,哪些數據包應該接收,是否需要將接收到的數據拷貝到相應的應用程序第五步通過分組過濾器后,將數據未過濾掉的數據包提交給核心緩沖區。然后等待系統緩沖區滿后,再將數據包拷貝到用戶緩沖區。監聽程序可以直接從用戶緩沖區中讀取捕獲的數據包第六步關閉網卡25圖32NDIS驅動程序結構(2)WINPCAP安裝本網絡探測程序需要用到兩個文件,他們都可以從WINPCAP官方網站HTTP/WWWWINPCAPORG/INSTALL/DEFAULTHTM上下載。第一個文件是WINPCAP4_0_2EXE,它是一個自動安裝文件,其包括重要的動態鏈接庫DLL和驅動程序,雙擊此文件就可以按照提示進行安裝了。這個文件必須安裝,他是所有基于WINPCAP的應用程序運行所必須的。如果不安裝此文件,就不能運行基于WINPCAP的應用程序。第二個文件是WPDPACK_4_0_2ZIP,他是WINPCAP開發包文件,是設計基于WINPCAP的應用程序的開發文件。該文件包括開發用的頭文件和靜態鏈接庫文件,是開發者要用到的。如果不需要開發基于WINPCAP的程序,而只是運行基于WINPCAP的軟件,就不需要此文件。(3)WINPCAP數據結構由于WINPCAP的設計與LIBPCAP相同的數據結構。在此只列出所有的WINPCAP核心數據結構,并進行簡單介紹。PCAP_ADDR數據結構描述的是網絡接口的地址的定義如下TYPEDEFSTRUCTPCAP_ADDRPCAP_ADDR_TSTRUCTPCAP_ADDRSTRUCTPCAP_ADDRNEXT/指向下一個地址節點STRUCTSOCKADDRADDR/網絡接口地址STRUCTSOCKADDRNETMASK/地址掩碼STRUCTSOCKADDRBROADADDR/廣播地址STRUCTSOCKADDRDSTADDR/目的地址PCAP_FILE_HEADER數據結構描述一個WINPCAP用不同的存儲文件類型,一個存儲文件類型用唯一值來表示26定義如下STRUCTPCAP_FILE_HEADERBPF_U_INT32MAGIC/文件類型U_SHORTVERSION_MAJOR/主版本號U_SHORTVERSION_MINOR/次版本號BPF_INT32THISZONE/區域時間BPF_U_INT32SIGFIGS/時間戳BPF_U_INT32SNAPLEN/捕獲長度BPF_U_INT32LINKTYPE/鏈路層類型PCAP_IF數據結構描述的是把當網絡接口表較多時組成一個鏈表,用此鏈表來存儲所有的網絡接口26,定義如下TYPEDEFSTRUCTPCAP_IFPCAP_IF_TSTRUCTPCAP_IFSTRUCTPCAP_IFNEXT/下一個網絡接口節點CHARNAME/網絡接口名字CHARDESCRIPTION/描述信息STRUCTPCAP_ADDRADDRESSES/網絡接口地址BPF_U_INT32FLAGS/標記;PCAP_PKTHDR數據結構描述每個捕獲到的數據包的一些基本信息,定義如下STRUCTPCAP_PKTHDRSTRUCTTIMEVALTS/時間戳BPF_U_INT32CAPLEN/捕獲長度BPF_U_INT32LEN/數據包長度;PCAP_STAT數據結構主要描述的是WINPCAP的狀態信息26,定義如下STRUCTPCAP_STATU_INTPS_RECV/捕獲到得數據包個數U_INTPS_DROP/丟失的數據包個數U_INTPS_IFDROP/未用IFDEFWIN32U_INTBS_CAPT/數據包到達應用層的個數ENDIF(4)WINPCAP函數說明WINPCAP提供的輸出函數與LIBPCAP的函數是完全一樣的,他們的使用方式也完全一樣。在此只列出所以函數名稱及功能介紹,其詳細說明請查看WINPCAP幫助文檔,幫助文檔可從此處下載HTTP/WWWCOFFEECATNETCN/WINPCAP/HTML/INDEXHTML。與WINDOWS相關的輸出函數單獨列出,并進行詳細介紹。表33網絡接口函數查找機器的所有可用的網絡接口,用一個網絡聊表返回INTPCAP_FINDALLDEVSPCAP_IF_TALLDEVSP,CHARERRBUF釋放網絡接口鏈表中的所有網絡接口VOIDPCAP_FREEALLDEVSPCAP_IF_TALLDEVS查詢本機的網絡接口名字CHARPCAP_LOOKUPDEVCHARERRBUF獲取網絡地址和網絡掩碼INTPCAP_LOOKUPNETREGISTERCONSTCHAREVICE,REGISTERBPF_U_INT32NETP,REGISTERBPF_U_INT32MASKP,REGISTERCHARERRBUF打開一個網絡接口進行數據包捕獲。打開IADE模式有“PROMISC“表示如果是1,就表示以混雜模式打開此網絡接口;否則,以非混雜模式打開網絡接口PCAP_TPCAP_OPEN_LIVECONSTCHARDEVICE,INTSNAPLEN,INTPROMISC,INTTO_MS,CHARERRBUF表34規則函數設置BFP過濾規則,由參數FP確定INTPCAP_SETFILTERPCAP_TP,STRUCTBPF_PROGRAMFP編譯BPF過濾規則INTPCAP_COMPILEPCAP_TP,STRUCTBFP_PROGRAMPROGRAM,CHARBUF,INTOPTIMIZE,BPF_U_INT32MASK編譯BPF過濾規則INTPCAP_COMPILE_NOPCAPINTSNAPLEN_ARG,INTLINKTYPE_ARG,STRCUTBPF_PROGRAMPROGRAM,CHARBUF,INTOPTIMIZE,BPF_U_INT32MASK釋放過濾規則的內存VOIDPCAP_FREECODESTRUCTBPF_PROGRAMPROGRAM表35數據包捕獲函數循環捕獲網絡數據包,直到遇到錯誤或滿足退出條件。每捕獲一個數據包就調用CALLBACK只是的回調函數。所以,可以在回調函數中對捕獲到的數據包進行操作INTPCAP_LOOPPCAP_TP,INTCNT,PCAP_HANDLERCALLBACK,U_CHARUSER捕獲網路數據包INTPCAP_DISPATCHPCAP_TP,INTCNT,PCAP_HANDLERCALLBACK,U_CHARUSER捕獲一個網絡數據包,然后返回此數據包捕獲一個網絡數據包CONSTU_CHARPCAP_NEXTPCAP_TP,STRUCTPCAP_PKTHDRHINTPCAP_NEXT_EXPCAP_TP,STRUCTPCAP_PKTHDRPKT_HEADER,CONSTU_CHARPKT_DATA退出循環捕獲數據包狀態VOIDPCAP_BREAKLOOPPCAP_TP構造一個LIBPCAP句柄PCAP_TPCAP_OPEN_DEADINTLINKTYPE,INTSNAPLEN打開一個文件,此文件的內容是網絡數據包VOIDPCAP_OPEN_OFFLINECONSTCHARFNAME,CHARERRBUF關閉LIBPCAP操作,并銷毀相應的資源VOIDPCAP_CLOSEPCAP_TP表36文件相關函數返回LIBPCAP的文件句柄FILEPCAP_FILEPCAP_TP返回LIBPCAP的文件描述符號INTPCAP_FILENOPCAP_TP把數據包數據存入文件中PCAP_DUMPER_TPCAP_DUMP_OPENPCAP_TP,CONSTCHARFNAME把數據包數據存入文件INTPCAP_DUMP_FLUSHPCAP_DUMPER_TP關閉文件VOIDPCAP_DUMP_CLOSEPCAP_DUMPER_TP)向文件中寫網路數據包內容VOIDPCAP_DUMPU_CHARUSER,CONSTSTRUCTPCAP_PKTHDRH,CONSTU_CHAR返回一個標準的文件句柄FILEPCAP_DUMP_FILEPCAP_DUMPER_TP表37錯誤處理函數獲取最后一個錯誤信息VOIDPCAP_PERRORPCAP_TP,CHARPREFIX獲取對應的錯誤信息CHARPCAP_STRERRORINTERRNUM表38輔助函數獲得統計信息INTPCAP_STATSPCAP_TP,STRUCTPCAP_STATPS是獲取鏈路層狀態。例如,如果類型為DLT_EN10MB,就表示以太網INTPCAP_DATALINKPCAP_TP返回支持的所有鏈路層類型的鏈表INTPCAP_LIST_DATALINKSPCAP_TP,INTDLT_BUFFER設置鏈路層類型INTPCAP_SET_DATALINKPCAP_TP,INTDLT此函數的功能是把鏈路層類型對應的名字轉換成標識INTPCAP_DATALINK_NAME_TO_VALCONSTCHARNAME把鏈路層標識轉換成對應的鏈路層名字字符串CONSTCHARPCAP_DATALINK_VAL_TO_NAMEINTDLT把鏈路層的描述求出來CONSTCHARPCAP_DATALINK_VAL_TO_DESCRIPTIONINTDLT返回LIBPCAP句柄中的SNAPSHOT數值INTPCAP_SNAPSHOTPCAP_TP返回文件類型是否正確的信息INTPCAP_IS_SWAPPEDPCAP_TP返回文件的主版本號INTPCAP_MAJOR_VERSIONPCAP_TP返回文件按的次版本號INTPCAP_MINOR_VERSIONPCAP_TP返回LIBPCAP的版本信息CONSTCHARPCAP_LIB_VERSIONVOID返回LIBPCAP的非阻塞狀態INTPCAP_GETNONBLOCKPCAP_TP,CHARERRBUF設置LIBPCAP是否為非阻塞模式INTPCAP_SETNONBOCKPCAP_TP,INTNONBLOCK,CHARERRBUFINTPCAP_SETNONBOCKPCAP_TP,INTNONBLOCK,CHARERRBUF表39與WINDOWS相關的函數函數返回值函數操作成功就返回0,失敗就返回1參數描述參數P表示WINPCAP句柄,參數DIM表示字節數目此函數的功能是設置內核中與網卡相關的緩沖區的大小INTPCAP_SETBUFFPCAP_TP,INTDIM函數返回值函數操作成功就返回0,失敗就返回1參數描述參數P表示WINPCAP句柄。參數MODE表示工作模式,有兩種工作模式捕獲模式和統計模式,分別用MODE_CAPT和MODE_STAT表示。如果是捕獲模式,網絡接口就只捕獲網絡數據包;如果是統計模式,網絡接口就可以進行網絡信息統計此函數的功能是設置網絡接口的共組模式INTPCAP_SETMODEPCAP_TP,INTMODE數返回值函數操作成功就返回0,失敗就返回1參數描述參數P表示WINPCAP句柄,參數BUF表示要發送的數據包緩存數據,參數SIZE表示緩存BUF的大小此函數的功能是發送一個原始數據包INTPCAP_SENDPACKETPCAP_TP,U_CHARBUF,INTSIZE函數返回值函數操作成功就返回0,失敗就返回1參數描述參數P表示WINPCAP句柄,擦數SIZE表示緩存大小此函數的功能是在內環設置一個最小的緩存大小。此緩存用來存放數據包內容,如果緩存裝滿,內核就把次數據內容復制給應用層;如果緩存還有空閑,內核就一直等到緩存裝滿后再把它們送到應用層,而不是一有數據到達就把它們送入應用層INTPCAP_SETMINTOCOPYPCAP_TP,INTSIZE32設計思路321程序功能介紹網絡協議分析程序主要要實現倆個功能捕獲數據包,即獲取以太網上的數據包;分析數據包,即對數據包進行協議分析。為了使程序有更好的操作性和用戶體驗,程序使用VISUALC60進行開發。程序主界面采用文檔/視圖結構,目的是利用其產生的菜單和工具欄、狀態欄,提供交互的命令。具體思想是設計一個類似VC界面的主界面,包含有6個用于顯示信息的視圖。主視圖占據程序界面的大部分區域用于顯示數據包的主要信息,包括數據包索引號、捕獲到數據包的時間、數據包的長度、以太網的源/目的MAC地址、源/目的IP地址以及端口號。流量視圖用于顯示單位時間的IP數據包個數。包結構視圖用于顯示用戶所選數據包的詳細信息。查看視圖用于查看各種數據包的統計信息和系統的一些輸出信息。主機視圖用于顯示ARP請求主機的IP和MAC地址。二進制包視圖用于顯示數據包的二進制數據。除主視圖外,其他的視圖都可以由用戶決定是否顯示。322設計思路1首先獲取網絡設備,然后打開設備,并設置網卡處于混雜模式,啟動捕獲線程,不斷地接收數據包和分析數據包。2通過在對話欄的組合框中輸入過濾串來確定監聽某種協議TCP,UDP,ICMP的數據包。默認情況下是不進行過濾的;3通過菜單或工具欄按鈕來控制監聽線程的開始和結束;4單獨創建一個線程用于進行數據包的接收,以提高界面的反應能力;監聽的結果顯示于列表控件中,包括以下各項,接收時間、數據包長度、源MAC地址、目的MAC地址、協議、源IP/端口、目標IP/端口。圖31設計思路圖32應用程序模塊設置過濾字符串選項設置分析數據包保存數據包更新列表視圖接收數據包停止終止監聽線程結束結束保存顯示結果監聽網絡保存到磁盤N圖33流程圖33主要函數說明使用WINPCAP庫函數,設置網卡為混雜模式,接收所有流經它的數據,并交由上層協議處理軟件處理。下面具體討論一下各個函數的功能。(1)DWORDWINAPICAPTURETHREADLPVOIDLPPARAMETER參數LPPARAMETER空類型指針,在程序中使用該函數時傳遞的是文檔類指針。網絡監聽線程函數,全局函數。函數主要進行接收數據的工作。函數是由菜單抓包開始命令的響應函數ONMENUITEMSTART中的STARTCAPTURE函數調用,主要是根據從界面接收相關參數,設置有關變量的值,開始監聽網絡。函數流程開網絡接口、檢測鏈路層類型、設置過濾器、捕獲數據包。并在該函數中調用SAVEPACKET進行保存數據包。(2)UINTSEARCHTHREADLPVOIDLPARAM參數LPPARAMETER空類型指針,在程序中使用該函數時傳遞的是文檔類指針。局域網主機搜索線程函數,全局函數。函數主要功能就是搜索局域網內的主機名稱和IP地址。N創建監聽線程NYYY(3)SAVEPACKETSTRUCTPCAP_PKTHDRHEADER,CONSTU_CHARPKT_DATA參數HEADER保存每個數據包的一些基本信息,PKT_DATA保存著完整的數據包。函數是由CAPTURETHREAD函數調用,完成數據包在內存中的保存,以備以后使用。函數流程新建DATAPACKET對象、新建PCAP_PKTHDR、將參數中的HEADER中的對應值賦給新建PCAP_PKTHDR、新建PDATA字符指針、將參數中的PKT_DATA復制到PDATA中、保存DATAPACKET對象到CPTRLIST鏈表M_DATA中。此函數的功能是將網絡數據包數據保存到CPTRLIST鏈表中。(4)ONTIMERUINTNIDEVENT參數NIDEVENT計時器ID。此函數的功能是計算機是否連接到網絡以及連接的方式。例外流量視圖的更新也是在此函數中操作的。(5)INTANALYZEDATAPCAP_PKTHDRHEADER,CONSTU_CHARPKT_DATA參數HEADER保存每個數據包的一些基本信息,PKT_DATA保存著完整的數據包。函數是由SAVEPACKET函數調用,完成對數據包的初步分析,為列表視圖準備數據。函數流程撥去以太網頭部、獲得上層封裝的協議、根據協議類型獲得相應的源/目的IP地址,源/目的端口。此函數的功能是分析一個數據包,得到接收的時間、數據包長度、以太網的MAC地址,源/目的IP地址,源/目的端口。并調用視圖類中的UPDATELIST函數更新列表視圖。(6)DUMP_IPCONSTU_CHARP此函數的功能是解析IP包,獲取數據包的源地址和目的地址,包的生存周期TTL,IP包內所使用的協議等,然后根據協議的類型,相應地調用TCP,UDP,ICMP協議的解析函數進行數據分析。(7)DUMP_TCPCONSTU_CHARP,INTLEN此函數的功能是對TCP數據包解析,得到通信兩方的端口號以及標志位等。雖然還可以解析包內的數據,但是只可以顯示數據的字符串格式,反映不出數據的原貌,更別說加密了。(8)DUMP_UDPCONSTU_CHARP,INTLEN此函數的功能是對UDP頭部進行分析。(9)DUMP_ICMPCONSTU_CHARP,INTLEN此函數的功能是對ICMP頭部進行分析。(10)DUMP_ARPCONSTU_CHARP此函數的功能是對ARP數據包進行分析。(11)DUMP_EAPCONSTU_CHARP此函數的功能是對EAP數據包進行分析。(12)UPDATETREEINTINDEX此函數的功能是當用戶在列表視圖中選中一個數據包時更新主界面右邊的包結構視圖的內容。(13)UPDATEEDITDATAPACKETPDATA此函數的功能是當用戶在列表視圖中選中一個數據包時更新主界
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供水企業巡檢管理制度
- 供水公司物業管理制度
- 供熱燃煤使用管理制度
- 供熱首站現場管理制度
- 供電公司巡查電纜管理制度
- 供電公司預算管理制度
- 便民服務設施管理制度
- 保安公司怎樣管理制度
- 保安公司財務管理制度
- 保安工作創新管理制度
- 2025-2030中國經顱磁刺激儀(TMS)行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030中國碳酸鎂行業市場發展分析及發展趨勢與投資前景研究報告
- 《飛向太空的航程》課件【中職專用】高一語文(高教版2023基礎模塊下冊)
- 2025蘭州資源環境職業技術大學輔導員考試試題及答案
- 上海中考:地理高頻考點
- 道路工程平移合同協議
- 處世奇書《解厄鑒》全文譯解
- 續簽采購合同范本(標準版)
- 肺癌介入治療進展
- GB/T 3091-2025低壓流體輸送用焊接鋼管
- 2025年上半年江蘇常州大學一般管理崗和專技崗招聘37人重點基礎提升(共500題)附帶答案詳解
評論
0/150
提交評論