《網(wǎng)絡(luò)安全實(shí)踐》(共16頁)
《《網(wǎng)絡(luò)安全實(shí)踐》(共16頁)》由會(huì)員分享,可在線閱讀,更多相關(guān)《《網(wǎng)絡(luò)安全實(shí)踐》(共16頁)(17頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-----傾情為你奉上 《網(wǎng)絡(luò)安全實(shí)踐》課程項(xiàng)目報(bào)告 項(xiàng)目名稱:基于SharpPcap的網(wǎng)絡(luò)嗅探器的設(shè)計(jì) 年 級(jí):2010級(jí)計(jì)算機(jī)學(xué)院 專 業(yè): 網(wǎng)絡(luò)工程 班 級(jí): 網(wǎng)絡(luò)工程二班 姓 名: 陳緒群 學(xué) 號(hào): 成 績: 指導(dǎo)教師: 盧 正 添 提交報(bào)告時(shí)間: 2013年12月20日 摘要: SharpPcap是.Net平臺(tái)上高性能的包捕獲開發(fā)工具。本文對(duì)S
2、harpPcap的結(jié)構(gòu)和功能進(jìn)行了詳細(xì)的介紹和分析,闡述了基SharpPcap捕獲和分析網(wǎng)絡(luò)數(shù)據(jù)包的方法和主要步驟,并且給出了一個(gè)在.Net平臺(tái)上,Microsoft Visual Studio 2008環(huán)境下,基于SharpPcap捕獲和 分析網(wǎng)絡(luò)數(shù)據(jù)包的實(shí)例。該實(shí)例能過濾用戶指定IP地址、端口號(hào)和網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)包,并在界面實(shí)時(shí)顯示數(shù)據(jù)包的具體信息。本文還研究了基于Sharpcap的局域網(wǎng)數(shù)據(jù)包的捕獲機(jī)制,實(shí)現(xiàn)了.NET平臺(tái)下的原始數(shù)據(jù)包捕獲應(yīng)用設(shè)計(jì),解決了.Net下使用原始套接字抓包慢、丟包嚴(yán)重的問題,填補(bǔ)了.Net程序員捕獲原始數(shù)據(jù)包的空白,實(shí)踐證明此方法比較快速、準(zhǔn)確、穩(wěn)定、高效。
3、關(guān)鍵詞:Sharpcap;數(shù)據(jù)包;捕獲;C#;.Net; 1. 研究背景 網(wǎng)絡(luò)技術(shù)的日新月異,發(fā)展突飛猛進(jìn),計(jì)算機(jī)網(wǎng)絡(luò)的應(yīng)用越來越廣泛,其作用也越來越重要。但是由于計(jì)算機(jī)系統(tǒng)中軟硬件的脆弱性和計(jì)算機(jī)網(wǎng)絡(luò)的脆弱性以及地理分布的位置、自然環(huán)境、自然破壞以及人為因素的影響,不僅增加了信息存儲(chǔ)、處理的風(fēng)險(xiǎn),也給信息傳送帶來了新的問題。計(jì)算機(jī)網(wǎng)絡(luò)安全問題越來越嚴(yán)重,網(wǎng)絡(luò)破壞所造成的損失越來越大。Internet的安全已經(jīng)成為亟待解決的問題。多數(shù)黑客入侵成功并植入后門后的第一件事就是選擇一個(gè)合適當(dāng)前網(wǎng)絡(luò)的嗅探器,以獲得更多的受侵者的信息。嗅探器是一種常用的收集有用數(shù)據(jù)的方法,可以作為網(wǎng)絡(luò)數(shù)據(jù)包的設(shè)備。
4、網(wǎng)絡(luò)嗅探器就是是利用計(jì)算機(jī)的網(wǎng)絡(luò)接口截獲其他計(jì)算機(jī)的數(shù)據(jù)報(bào)文的一種工具,而且它與一般的鍵盤捕獲程序不同。鍵盤捕獲程序捕獲在終端上輸入的鍵值,而嗅探器捕獲的則是真實(shí)的網(wǎng)絡(luò)報(bào)文.如果把網(wǎng)絡(luò)嗅探器放置于網(wǎng)絡(luò)節(jié)點(diǎn)處,對(duì)網(wǎng)絡(luò)中的數(shù)據(jù)幀進(jìn)行捕獲的一種被動(dòng)監(jiān)聽手段,是一種常用的收集有用數(shù)據(jù)的方法,可以分析各種信息包并描述出網(wǎng)絡(luò)的結(jié)構(gòu)和使用的機(jī)器,由于它接收任何一個(gè)在同一網(wǎng)段上傳輸?shù)臄?shù)據(jù)包,所以也就存在著捕獲密碼、各種信息、秘密文檔等一些沒有加密的信息的可能性。這成為黑客們常用的擴(kuò)大戰(zhàn)果的方法,用來奪取其他主機(jī)的控制權(quán)。當(dāng)然嗅探器的正當(dāng)用處主要是網(wǎng)絡(luò)管理人員分析網(wǎng)絡(luò)的流量,以便找出所關(guān)心的網(wǎng)絡(luò)中潛在的問題。例
5、如,假設(shè)網(wǎng)絡(luò)的某一段運(yùn)行得不是很好,報(bào)文的發(fā)送比較慢,而我們又不知道問題出在什么地方,此時(shí)就可以用嗅探器截獲網(wǎng)絡(luò)中的數(shù)據(jù)包,分析問題的所在。因此研究網(wǎng)絡(luò)底層數(shù)據(jù)包捕獲和分析技術(shù)對(duì)于保障網(wǎng)絡(luò)安全有著重要的意義。 2. 相關(guān)技術(shù) 2.1 開發(fā)環(huán)境與工具 Microsoft Visual Studio 2008,Windows 7 2.2 開發(fā)相關(guān)技術(shù) 2.2.1 C#語言簡介 C#是在2000年7月發(fā)布的一種全新且簡單、安全、語言,是專門為.NET的應(yīng)用而開發(fā)的語言。它吸收了C++、Visual Basic、Delphi、Java等語言的優(yōu)點(diǎn),體現(xiàn)了當(dāng)今最新的的功能和精華。
6、C#繼承了C語言的語法風(fēng)格,同時(shí)又繼承了C++的特性。不同的是,C#的對(duì)象模型已經(jīng)面向Internet進(jìn)行了重新設(shè)計(jì),使用的是.NET的類庫;C#不再提供對(duì)類型的支持,使得程序不能隨便訪問空間,從而更加健壯;C#不再支持,避免了以往類層次結(jié)構(gòu)中由于多重繼承帶來的可怕后果。.NET為C#提供了一個(gè)強(qiáng)大的、易用的、一致的程序設(shè)計(jì)環(huán)境。同時(shí),(Common Language Runtime)為C#程序語言提供了一個(gè)托管的運(yùn)行時(shí)環(huán)境,使程序比以往更加穩(wěn)定、安全。其特點(diǎn)有: 語言簡潔。 保留了C++的強(qiáng)大功能。 功能。 語言的自由性。 強(qiáng)大的。 支持跨
7、平臺(tái)。 與XML相融合。 2.2.2 嗅探技術(shù)簡介 數(shù)據(jù)在網(wǎng)絡(luò)上是以很小的稱為幀(Frame)的單位傳輸?shù)?,幀由幾部分組成,不同的部分執(zhí)行不同的功能。幀通過特定的稱為網(wǎng)絡(luò)驅(qū)動(dòng)程序的軟件進(jìn)行成型,然后通過網(wǎng)卡發(fā)送到網(wǎng)線上,通過網(wǎng)線到達(dá)它們的目的機(jī)器,在目的機(jī)器的一端執(zhí)行相反的過程。接收端機(jī)器的以太網(wǎng)卡捕獲到這些幀,并告訴操作系統(tǒng)幀已到達(dá),然后對(duì)其進(jìn)行存儲(chǔ)。就是在這個(gè)傳輸和接收的過程中,存在著安全方面的問題。 每一個(gè)在局域網(wǎng)(LAN)上的工作站都有其硬件地址,這些地址唯一地表示了網(wǎng)絡(luò)上的機(jī)器(這一點(diǎn)與Internet地址系統(tǒng)比較相似)。當(dāng)用戶發(fā)送一個(gè)數(shù)據(jù)包時(shí),這些數(shù)據(jù)包就會(huì)發(fā)
8、送到LAN上所有可用的機(jī)器。[3] 圖示:一個(gè)簡單的局域網(wǎng)組成 在一般情況下,網(wǎng)絡(luò)上所有的機(jī)器都可以“聽”到通過的流量,但對(duì)不屬于自己的數(shù)據(jù)包則不予響應(yīng)(換句話說,工作站A不會(huì)捕獲只屬于工作站B的數(shù)據(jù),而是簡單地忽略這些數(shù)據(jù))。 嗅探器工作在網(wǎng)絡(luò)的底層,在網(wǎng)絡(luò)上監(jiān)聽數(shù)據(jù)包來獲取敏感信息。從原理上來說,在一個(gè)實(shí)際的系統(tǒng)中,數(shù)據(jù)的收發(fā)是由網(wǎng)卡來完成的,網(wǎng)卡接收到傳輸來的數(shù)據(jù),其內(nèi)的單片程序接收數(shù)據(jù)幀的目的MAC地址,根據(jù)計(jì)算機(jī)上的網(wǎng)卡驅(qū)動(dòng)程序設(shè)置的接收模式判斷該不該接收,認(rèn)為該接收就接收后產(chǎn)生中斷信號(hào)通知CPU,認(rèn)為不該接收就
9、丟掉不管,所以不該接收的數(shù)據(jù)網(wǎng)卡就截?cái)嗔耍?jì)算機(jī)根本就不知道。對(duì)于網(wǎng)卡來說一般有四種接收模式: a)廣播方式:該模式下的網(wǎng)卡能夠接收網(wǎng)絡(luò)中的廣播信息。 b)組播方式:設(shè)置在該模式下的網(wǎng)卡能夠接收組播數(shù)據(jù)。 c)直接方式:在這種模式下,只有目的網(wǎng)卡才能接收該數(shù)據(jù)。 d)混雜模式:在這種模式下的網(wǎng)卡能夠接收一切通過它的數(shù)據(jù),而不管該數(shù)據(jù)是否是傳給它的。 首先,在以太網(wǎng)中是基于廣播方式傳送數(shù)據(jù)的,也就是說,所有的物理信號(hào)都要經(jīng)過我的機(jī)器。其次,如果某個(gè)工作站的網(wǎng)絡(luò)接口處于混雜模式,那么它就可以捕獲網(wǎng)絡(luò)上所有的數(shù)據(jù)。 嗅探程序是一種利用以太網(wǎng)的特性把網(wǎng)絡(luò)適配卡(NIC,一般為以太網(wǎng)卡)置為
10、混雜模式狀態(tài)的工具,一旦網(wǎng)卡設(shè)置為這種模式,它就能接收傳輸在網(wǎng)絡(luò)上的每一個(gè)信息包,而不管該數(shù)據(jù)是否傳給它的。[4] 2.2.3 TCP/IP協(xié)議 現(xiàn)今因特網(wǎng)上用到的主要協(xié)議有:用戶數(shù)據(jù)報(bào)協(xié)議(UDP),次要文件傳輸協(xié)議(TFTP),網(wǎng)際協(xié)議(IP),因特網(wǎng)控制報(bào)文協(xié)議(ICMP),傳輸控制協(xié)議(TCP),地址轉(zhuǎn)換協(xié)議(ARP),虛終端協(xié)議(Telnet),反向地址轉(zhuǎn)換協(xié)議(RARP),外部網(wǎng)關(guān)協(xié)議(EGP)版本2,引導(dǎo)協(xié)議(BootP),路由信息協(xié)議(RIP),距離向量多播路由協(xié)議(DVMRP)。下面對(duì)其中的4個(gè)協(xié)議做一些簡單的介紹: ① IP :網(wǎng)際協(xié)議IP是TCP/IP的心臟,也
11、是網(wǎng)絡(luò)層中最重要的協(xié)議。IP層接收由更低層(網(wǎng)絡(luò)接口層,例如以太網(wǎng)設(shè)備驅(qū)動(dòng)程序)發(fā)來的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層--TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數(shù)據(jù)包傳送到更低層。IP數(shù)據(jù)包是不可靠的,因?yàn)镮P并沒有做任何事情來確認(rèn)數(shù)據(jù)包是按順序發(fā)送的或者沒有被破壞。IP數(shù)據(jù)包中含有發(fā)送它的主機(jī)的地址(源地址)和接收它的主機(jī)的地址(目的地址)。 高層的TCP和UDP服務(wù)在接收數(shù)據(jù)包時(shí),通常假設(shè)包中的源地址是有效的。也可以這樣說,IP地址形成了許多服務(wù)的認(rèn)證基礎(chǔ),這些服務(wù)相信數(shù)據(jù)包是從一個(gè)有效的主機(jī)發(fā)送來的。IP確認(rèn)包含一個(gè)選項(xiàng),叫作IP Source Routing,
12、可以用來指定一條源地址和目的地址之間的直接路徑。對(duì)于一些TCP和UDP的服務(wù)來說,使用了該選項(xiàng)的IP包好象是從路徑上的最后一個(gè)系統(tǒng)傳遞過來的,而不是來自于它的真實(shí)地點(diǎn)。這個(gè)選項(xiàng)是為了測(cè)試而存在的,說明了它可以被用來欺騙系統(tǒng)來進(jìn)行平常是被禁止的連接。那么,許多依靠IP源地址做確認(rèn)的服務(wù)將產(chǎn)生問題并且會(huì)被非法入侵。 ② TCP:如果IP數(shù)據(jù)包中有已經(jīng)封好的TCP數(shù)據(jù)包,那么IP將把它們向‘上’傳送到TCP層。TCP將包排序并進(jìn)行錯(cuò)誤檢查,同時(shí)實(shí)現(xiàn)虛電路間的連接。TCP數(shù)據(jù)包中包括序號(hào)和確認(rèn),所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。 TCP將它的信息送到更高層的應(yīng)用程序,例如
13、Telnet的服務(wù)程序和客戶程序。應(yīng)用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設(shè)備驅(qū)動(dòng)程序和物理介質(zhì),最后到接收方。 面向連接的服務(wù)(例如Telnet、FTP、Rlogin、X Windows和SMTP)需要高度的可靠性,所以它們使用了TCP。DNS在某些情況下使用TCP(發(fā)送和接收域名數(shù)據(jù)庫),但使用UDP傳送有關(guān)單個(gè)主機(jī)的信息。 ③ UDP:UDP與TCP位于同一層,但對(duì)于數(shù)據(jù)包的順序錯(cuò)誤或重發(fā)。因此,UDP不被應(yīng)用于那些使用虛電路的面向連接的服務(wù),UDP主要用于那些面向查詢---應(yīng)答的服務(wù),例如NFS。相對(duì)于FTP或Telnet,這些服務(wù)需要交換的信息量較小。
14、使用UDP的服務(wù)包括NTP(網(wǎng)落時(shí)間協(xié)議)和DNS(DNS也使用TCP)。 欺騙UDP包比欺騙TCP包更容易,因?yàn)閁DP沒有建立初始化連接(也可以稱為握手)(因?yàn)樵趦蓚€(gè)系統(tǒng)間沒有虛電路),也就是說,與UDP相關(guān)的服務(wù)面臨著更大的危險(xiǎn)。 ④ ICMP: ICMP與IP位于同一層,它被用來傳送IP的的控制信息。它主要是用來提供有關(guān)通向目的地址的路徑信息。ICMP的‘Redirect’信息通知主機(jī)通向其他系統(tǒng)的更準(zhǔn)確的路徑,而‘Unreachable’信息則指出路徑有問題。另外,如果路徑不可用了,ICMP可以使TCP連接‘體面地’終止。PING是最常用的基于ICMP的服務(wù)。[6] 2.2.4
15、 數(shù)據(jù)包簡介 “包”(Packet)是通信傳輸中的數(shù)據(jù)單位,一般也稱“數(shù)據(jù)包”。有人說,局域網(wǎng)中傳輸?shù)牟皇恰皫?Frame)嗎?沒錯(cuò),但是TCP/IP協(xié)議是工作在第三層()、第四層()上的,而幀是工作在第二層(數(shù)據(jù)鏈路層)。上一層的內(nèi)容由下一層的內(nèi)容來傳輸,所以在局域網(wǎng)中,“包”是包含在“幀”里的。OSI(Open System Interconnection,開放系統(tǒng)互聯(lián))模型是由國際標(biāo)準(zhǔn)化組織(ISO)定義的標(biāo)準(zhǔn),它定義了一種分層體系結(jié)構(gòu),在其中的每一層定義了針對(duì)不同通信級(jí)別的協(xié)議。OSI模型有5層,1到5層分別是:物理層、
16、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層。OSI模型在邏輯上可分為兩個(gè)部分:低層的1至3層關(guān)注的是原始數(shù)據(jù)的傳輸;高層的4至5層關(guān)注的是網(wǎng)絡(luò)下的應(yīng)用程序。 2.2.4 SharpPcap 2.2.4.1 Sharpcap簡介 SharpPcap是Tamir Gal專門為.Net開發(fā)環(huán)境寫的數(shù)據(jù)包捕獲框架,它是Winpcap組件和Windows網(wǎng)絡(luò)核心函數(shù)的完美結(jié)合。該程序集繼承Winpcap又超越Winpcap,它采用了消息機(jī)制,將面向?qū)ο蟮膬?yōu)越性表現(xiàn)的淋漓盡致,同時(shí)還集成了部分網(wǎng)絡(luò)API函數(shù)和讀取注冊(cè)表的API函數(shù),。它封裝了接口類、異常類、事件類、數(shù)據(jù)包類等32個(gè)類,適用于C#.Net
17、、VB.Net。 2.2.4.1 Sharpcap中主要類的功能 (1)LivePcapDeviceList類獲取計(jì)算機(jī)的網(wǎng)卡列表。該類有1個(gè)字段,2個(gè)屬性,4個(gè)方法,主要是獲取本機(jī)的網(wǎng)卡列表和刷新列表。 (2)LivePcapDevice類封裝了網(wǎng)卡所有的功能,如捕獲、發(fā)送、過濾等。該類有2個(gè)阻塞設(shè)置字段,7個(gè)網(wǎng)卡信息屬性,12個(gè)網(wǎng)卡操作方法,其中打開網(wǎng)卡方法2次重載,發(fā)送包方法3次重載,另外還有網(wǎng)卡流量統(tǒng)計(jì)信息方法、隊(duì)列發(fā)送方法。由于它繼承了PcapDevice類,因此還有網(wǎng)卡過濾設(shè)置方法,發(fā)送文件,關(guān)閉文件方法,緩沖區(qū)設(shè)置方法,捕捉方法,延時(shí)設(shè)置等多種方法。 (3)Devic
18、eMode類枚舉類網(wǎng)卡工作模式。它指定網(wǎng)卡的工作模式是正常還是混雜。 (4)PcapInterface類封裝了本機(jī)適配器的所有信息。該類有7個(gè)屬性用來描述適配器名稱、標(biāo)志,本機(jī)IP、MAC,網(wǎng)關(guān)地址等信息。 (5)PcapStatistics、StatisticsModePacket類負(fù)責(zé)網(wǎng)絡(luò)統(tǒng)計(jì)信息。PcapStatistics類用來統(tǒng)計(jì)適配器接收到的包,丟棄的包數(shù)目。 (6)SendQueue類負(fù)責(zé)發(fā)送包隊(duì)列處理。 (7)Sockaddr、Sockaddr.Type類解決了地址簇的問題;PcapUnmanagedStructure類封裝了Winpcap總用到的結(jié)構(gòu)體和常量。 (8
19、)WinPcapRequiredException、PacketArrivalEventHandler、CaptureStoppedEventHandler類定義了Sharpcap中產(chǎn)生的所有的異常、消息。 (9)ARP類封裝了ARP協(xié)議的所有功能。它提供了2個(gè)重載構(gòu)造函數(shù),3個(gè)屬性用來設(shè)置ARP協(xié)議的幾個(gè)參數(shù),一個(gè)方法獲取目標(biāo)主機(jī)的MAC地址。 (10) MiscUtil.Conversion、MiscUtil.IO、PacketDotNet等接口類負(fù)責(zé)所有的接口定義。 3.系統(tǒng)分析與設(shè)計(jì) 3.1 需求分析 (1) 能夠監(jiān)聽所有數(shù)據(jù)包,以及監(jiān)聽指定IP地址的數(shù)據(jù)包; (2)
20、能夠顯示完整的IP數(shù)據(jù)包首部信息,例如:版本、首部長度、數(shù)據(jù)包長度、數(shù)據(jù)包類型(協(xié)議字段)、TTL、源IP地址、目的IP地址等; (3) 能夠顯示完整的TCP報(bào)文段信息,例如:源端口、目的端口、序號(hào)、確認(rèn)號(hào)、數(shù)據(jù)部分等; (4) 能夠自動(dòng)提取FTP的用戶名和密碼; (5) 具有圖形化操作界面。 3.2系統(tǒng)體系結(jié)構(gòu) Application PacketDotNet.dll NPF Device Driver Kernel Lever User Level Packets SharpPcap.dll
21、3.3 設(shè)計(jì)方案 4.系統(tǒng)實(shí)現(xiàn) 4.1 功能實(shí)現(xiàn) 4.1.1獲得適配器列表 LivePcapDeviceList devices = null; 先聲明LivePcapDeviceList類對(duì)象,一般該對(duì)象都會(huì)作為其他類的屬性,因此可以先設(shè)置對(duì)象為空。然后在實(shí)現(xiàn)獲取網(wǎng)卡列表的過程中添加下面這個(gè)句子: devices = LivePcapDeviceList.Instance; 該句子執(zhí)行了LivePcapDeviceList類中的構(gòu)造函數(shù),在構(gòu)造函數(shù)中實(shí)現(xiàn)的功能類似于Winpcap中的pcap_findalldevs函數(shù)。與其不同的是該構(gòu)造函數(shù)中還調(diào)用了.Net類庫中的Net
22、workInterface類,能夠檢測(cè)當(dāng)前在用的適配器并能返回網(wǎng)卡的MAC和網(wǎng)關(guān)地址。這是Winpcap沒有做到的。 4.1.2 打開適配器 LivePcapDevice device =null; 同上,先聲明類對(duì)象。 device = devices[select]; 然后,將獲得的網(wǎng)卡列表中某一項(xiàng)傳遞給該對(duì)象。其中select指明該項(xiàng)在列表中的位置。 device. Open(DeviceMode mode); device.Open(DeviceMode mode, int read_timeout); 或者 device.DumpOpen(string f
23、ilename); 接著是打開適配器了,LivePcapDevice類重載了打開適配器的方法,mode參數(shù)指明了打開適配器的模式,如正常模式、混雜模式,read_timeout參數(shù)為超時(shí)時(shí)間設(shè)置。 最后一個(gè)函數(shù)是打開一個(gè)網(wǎng)絡(luò)包文件,由于不經(jīng)常用,不作過多解釋。 4.1.3 設(shè)置適配器過濾準(zhǔn)則 device.Filter=filterExpression; filterExpression參數(shù)是一個(gè)字符串,它指定適配器的過濾規(guī)則,如”ip and tcp”、”ip and icmp”。 4.1.4 進(jìn)行數(shù)據(jù)包捕獲 在完成以上工作后,我們可以開始捕獲包了。 device
24、.StartCapture(); 該語句將開啟一個(gè)新的線程,專門負(fù)責(zé)監(jiān)聽適配器是否有數(shù)據(jù)包到來。這個(gè)線程的意義就是同主窗體這個(gè)線程分開,避免了當(dāng)數(shù)據(jù)包到來時(shí)主線程阻塞,造成程序“死掉”。 4.1.5 數(shù)據(jù)包的接收 數(shù)據(jù)包捕獲過程中最重要的環(huán)節(jié)就是數(shù)據(jù)包的接收,接收的設(shè)計(jì)影響這個(gè)捕獲的效率、準(zhǔn)確度,甚至決定了捕獲數(shù)據(jù)包的成敗。因此,也到了.Net再次發(fā)揮性能優(yōu)勢(shì)的地方了。 在數(shù)據(jù)包接收之前,必須要建立數(shù)據(jù)包接收函數(shù)的消息映射,該消息映射可以解決類與類之間的安全通信,還大大增強(qiáng)了程序的實(shí)時(shí)性,同時(shí)減緩了CPU的資源開銷。 device.OnPacketArrival += new Pa
25、cketArrivalEventHandler(device_OnPacketArrival); void device_OnPacketArrival(object sender, CaptureEventArgs e) { ... } 第一個(gè)語句是將數(shù)據(jù)包到來的事件通過消息映射到自定義函數(shù)device_OnPacketArrival上,這里一定要注意device_OnPacketArrival的聲明格式,也就是函數(shù)中的參數(shù)。Sender是消息的發(fā)送方,e參數(shù)是發(fā)送方傳遞過來的消息,該消息類型已在Sharpcap中定義。此時(shí)此刻一定要理解e也是一個(gè)類對(duì)象,其中它的屬性中還有一個(gè)類
26、對(duì)象Packet,Packet其中一個(gè)屬性Data就是適配器捕捉到的一個(gè)數(shù)據(jù)包,Data是一個(gè)字節(jié)流。因此,不難理解被捕獲到的包是怎樣在類間傳遞的了。 在device_OnPacketArrival可以添加自己的處理過程了,所有的檢測(cè)工具都是在這個(gè)過程中大展筆墨的。 4.1.6 數(shù)據(jù)處理結(jié)果的顯示 當(dāng)完成數(shù)據(jù)處理過程后,是不是將自己的結(jié)果直接顯示到主窗體上?答案是否定的。要知道數(shù)據(jù)包捕獲后處理過程是屬于一個(gè)線程的,而窗體是另一個(gè)線程。這里涉及到線程之間的安全通信問題。假設(shè)如果以上所有的過程都沒有在主窗體這個(gè)類下,那么還涉及到類與類之間的安全通信,并且大多數(shù)開發(fā)人員為了增強(qiáng)程序的效率和穩(wěn)定
27、性,通常不會(huì)把以上完成的步驟直接放在主窗體類下。但由于方才講述了如何實(shí)現(xiàn)類與類之間通信,此處只講述線程與線程之間的安全通信手段。 .Net在解決這個(gè)問題時(shí)提供了一個(gè)解決方案:委托。 public delegate void LVDelegateHandler(ListViewItem li); 先聲明一個(gè)委托,也就是托管代碼。建立委托的詳細(xì)過程參見參考文獻(xiàn)[8]。 public void UpdateLV(ListViewItem li) { ….. } .Net平臺(tái)下的大多數(shù)控件都有一個(gè)方法:Invoke,該方法將控件顯示與某個(gè)實(shí)現(xiàn)過程通過委托聯(lián)系起來,形成一一映射。不得
28、不提醒一下:建立的委托參數(shù)格式必須與自定義的實(shí)現(xiàn)過程一致。說明:listBox1是一個(gè)顯示控件,showlist是自定義的普通函數(shù),在該函數(shù)中添加顯示處理程序。 4.1.7 關(guān)閉適配器 在退出數(shù)據(jù)包捕獲程序之前,不要忘記了關(guān)閉適配器。 device.StopCapture(); device.Close(); 第一個(gè)語句是停止適配器監(jiān)聽,該語句背后執(zhí)行將適配器監(jiān)聽線程合并到主線程中然后退出。這里采用了常用的關(guān)閉線程的方法,而非使線程強(qiáng)制退出,從而是程序性能更加穩(wěn)定。第二個(gè)句子就是關(guān)掉適配器了。 4.1.8 動(dòng)態(tài)顯示數(shù)據(jù)包分析結(jié)果 這里采用Treeview控件來顯示協(xié)議分
29、析結(jié)果,處理函數(shù)如下: private void listView1_SelectedIndexChanged(object sender, EventArgs e){} 5.測(cè)試與評(píng)價(jià) 5.1 測(cè)試方法 以自己設(shè)計(jì)抓包軟件抓取的包同WireShark網(wǎng)絡(luò)抓包軟件抓取的數(shù)據(jù)包對(duì)比來測(cè)試自己設(shè)計(jì)的抓包軟件是否正常。 5.2 測(cè)試結(jié)果 1.抓取結(jié)果如下: 2.對(duì)抓取到的同一個(gè)FTP數(shù)據(jù)包進(jìn)行分析比對(duì) 經(jīng)過比對(duì),抓包的信息完全一致,基本可以判定,自己設(shè)計(jì)的嗅探器在抓包與數(shù)據(jù)分析上沒有問題,而且軟件設(shè)計(jì)的要求基本實(shí)現(xiàn)。 5.3系統(tǒng)實(shí)現(xiàn)情況分析 實(shí)現(xiàn)功能情況如下: 1. 抓包功能 2. 數(shù)據(jù)內(nèi)容分析功能 3. 協(xié)議分析功能 4. 包過濾設(shè)置 5. 嗅探器操作 6. 個(gè)性化設(shè)置—換皮膚 換皮膚后: 7. 關(guān)于本軟件信息 5.4對(duì)未來的展望 由于基于.Net的sharpPcap無論從界面還是抓取實(shí)現(xiàn)上都比較容易,而且比較RawSocket效率更高,更快,所以,基于SharpPcap的抓包分析軟件在未來我覺得還是很不錯(cuò)。再就是本系統(tǒng)在設(shè)計(jì)和實(shí)現(xiàn)上由于時(shí)間等的原因,未能完整分析各種包,所以,希望在后面的空閑時(shí)間內(nèi)可以完善該系統(tǒng)。 專心---專注---專業(yè)
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)2圖形與幾何第7課時(shí)圖形的位置練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)2圖形與幾何第1課時(shí)圖形的認(rèn)識(shí)與測(cè)量1平面圖形的認(rèn)識(shí)練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)1數(shù)與代數(shù)第10課時(shí)比和比例2作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)4比例1比例的意義和基本性質(zhì)第3課時(shí)解比例練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)3圓柱與圓錐1圓柱第7課時(shí)圓柱的體積3作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)3圓柱與圓錐1圓柱第1節(jié)圓柱的認(rèn)識(shí)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)2百分?jǐn)?shù)(二)第1節(jié)折扣和成數(shù)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)1負(fù)數(shù)第1課時(shí)負(fù)數(shù)的初步認(rèn)識(shí)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)期末復(fù)習(xí)考前模擬期末模擬訓(xùn)練二作業(yè)課件蘇教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)期末豐收?qǐng)@作業(yè)課件蘇教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)易錯(cuò)清單十二課件新人教版
- 標(biāo)準(zhǔn)工時(shí)講義
- 2021年一年級(jí)語文上冊(cè)第六單元知識(shí)要點(diǎn)習(xí)題課件新人教版
- 2022春一年級(jí)語文下冊(cè)課文5識(shí)字測(cè)評(píng)習(xí)題課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)4數(shù)學(xué)思考第1課時(shí)數(shù)學(xué)思考1練習(xí)課件新人教版