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