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