畢業(yè)設(shè)計(jì)(論文)核心層網(wǎng)絡(luò)封包截獲技術(shù)應(yīng)用_第1頁
畢業(yè)設(shè)計(jì)(論文)核心層網(wǎng)絡(luò)封包截獲技術(shù)應(yīng)用_第2頁
畢業(yè)設(shè)計(jì)(論文)核心層網(wǎng)絡(luò)封包截獲技術(shù)應(yīng)用_第3頁
畢業(yè)設(shè)計(jì)(論文)核心層網(wǎng)絡(luò)封包截獲技術(shù)應(yīng)用_第4頁
畢業(yè)設(shè)計(jì)(論文)核心層網(wǎng)絡(luò)封包截獲技術(shù)應(yīng)用_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、核心層網(wǎng)絡(luò)封包截獲技術(shù)應(yīng)用學(xué)生姓名xxx院系名稱計(jì)算機(jī)科學(xué)學(xué)院專業(yè)名稱xxxxx班 級200x級 x班學(xué) 號xxxxxxxxx指導(dǎo)教師xxx完成時(shí)間20xx年 5 月 xx 日核心層網(wǎng)絡(luò)封包截獲技術(shù)應(yīng)用學(xué)生:xxx 指導(dǎo)教師:xxx內(nèi)容摘要:隨著網(wǎng)絡(luò)安全問題的日益突出,計(jì)算機(jī)用戶對網(wǎng)絡(luò)安全技術(shù)及其相關(guān)產(chǎn)品也越來越關(guān)注。在眾多的網(wǎng)絡(luò)安全技術(shù)中,核心層封包截獲技術(shù)有著非常重要的地位,它是包過濾防火墻的基礎(chǔ),并且被廣泛的用于封包過濾、協(xié)議轉(zhuǎn)換、截取報(bào)文分析以及網(wǎng)絡(luò)嗅探等技術(shù)中。因此,本文就核心層網(wǎng)絡(luò)封包截獲技術(shù)進(jìn)行了探究。首先,本文對目前該技術(shù)的國內(nèi)外現(xiàn)狀進(jìn)行了說明,以明確進(jìn)行研究的目的。隨后,詳盡

2、地對核心層網(wǎng)絡(luò)封包截獲技術(shù)的實(shí)現(xiàn)原理作了講述,在講述原理時(shí)主要介紹了一下幾個方面的內(nèi)容:分層服務(wù)提供者(lsp)的相關(guān)概念、原理和用途;核心層網(wǎng)絡(luò)驅(qū)動和ndis網(wǎng)絡(luò)驅(qū)動程序;核心層網(wǎng)絡(luò)封包截獲技術(shù)的實(shí)現(xiàn)。通過對原理的說明,使讀者了解實(shí)現(xiàn)這項(xiàng)技術(shù)的具體方法。最后,為了實(shí)現(xiàn)這項(xiàng)技術(shù)并對前面提出的原理進(jìn)行驗(yàn)證設(shè)計(jì)了相關(guān)的軟件,本文對這個軟件作了系統(tǒng)分析和系統(tǒng)設(shè)計(jì),最終并實(shí)現(xiàn)了該軟件。通過測試,證明了其具有在核心層截獲封包,在應(yīng)用層分析封包的功能,也驗(yàn)證了本文所探討的原理的正確性和重要性。關(guān)鍵詞:網(wǎng)絡(luò)安全 核心層 封包截獲the technoloty of packet interception in

3、 kernel layersabstract: because the network security problems have gone from bad to worse, computer users begin to notice network security technology and network security products. among all kinds of security technologies, the technology of packet interception in kernel layer is very important for i

4、t is the basis for packet filter firewall and it is widely used in packet filtering, protocol conversion, interception of message analysis and network sniffering. therefor, i devote myself to studying on the technology of the packet interception in kernel layer.in this article, firstly, the present

5、situation of this technolony is described to tell reader why i study on it. secondly, principles of packet interception are told about in detail.in this detailed description part, the concept of the lsp ,the theory of the lsp and the usage of lsp are introduced in more detail. whats more, i also exp

6、lain many aspects of the network drivers in kenel layer and tell reader how to implement the interception.thus, reader can understand the technology of packet interception in kernel layer accurately. finally, to implement and check out the technology i have discussed, i compile the software named ne

7、tfilter which is analyzed and designed systematically in this article. by testing , the software can intercept packets in kenel layer and analyze packet in application layer.key words:network security kernel layer packet interception目錄1概述11.1研究目的和意義11.2研究背景21.2.1國內(nèi)現(xiàn)狀21.2.2國外現(xiàn)狀21.3主要貢獻(xiàn)31.4文章的結(jié)構(gòu)42預(yù)備知識

8、及原理說明42.1分層服務(wù)提供者(lsp)42.1.1分層服務(wù)提供者(lsp)的概念42.1.2分層服務(wù)提供者(lsp)的原理42.1.3分層服務(wù)提供者(lsp)的用途用戶級封包截獲52.2核心層網(wǎng)絡(luò)驅(qū)動和ndis網(wǎng)絡(luò)驅(qū)動程序52.2.1核心層(kernel mode)概述52.2.2核心層網(wǎng)絡(luò)驅(qū)動62.2.3 ndis網(wǎng)絡(luò)驅(qū)動程序62.3核心層網(wǎng)絡(luò)封包截獲技術(shù)72.3.1windows網(wǎng)絡(luò)系統(tǒng)體系結(jié)構(gòu)82.3.2用戶模式下的網(wǎng)絡(luò)數(shù)據(jù)過濾92.3.3內(nèi)核模式下的網(wǎng)絡(luò)數(shù)據(jù)過濾102.3.4應(yīng)用層封包截獲與核心層封包截獲113 netfilter系統(tǒng)分析113.1需求分析113.2功能說明123.

9、2.1網(wǎng)絡(luò)訪問監(jiān)視123.2.2應(yīng)用層過濾規(guī)則123.2.3核心層過濾規(guī)則133.2.4系統(tǒng)設(shè)置134 netfilter系統(tǒng)設(shè)計(jì)134.1系統(tǒng)總體設(shè)計(jì)134.1.1系統(tǒng)的工作流程134.1.2系統(tǒng)的功能模塊144.2系統(tǒng)詳細(xì)設(shè)計(jì)144.2.1系統(tǒng)關(guān)鍵類154.2.2系統(tǒng)重要數(shù)據(jù)結(jié)構(gòu)154.2.3系統(tǒng)重要模塊詳細(xì)設(shè)計(jì)165. netfilter系統(tǒng)實(shí)現(xiàn)175.1開發(fā)平臺175.1.1 windows server 2003 ddk185.1.2 dbgview185.1.3 micosoft visual c+ 6.0185.1.4 micosoft visual visio 2003185.

10、2模塊實(shí)現(xiàn)185.2.1 sys模塊185.2.2添加應(yīng)用層規(guī)則196 netfilter系統(tǒng)測試與運(yùn)行206.1 測試206.1.1單元測試206.1.2 功能測試216.1.3 系統(tǒng)綜合測試216.2 系統(tǒng)運(yùn)行217 結(jié)束語238 致謝23參考文獻(xiàn)24核心層網(wǎng)絡(luò)封包截獲技術(shù)應(yīng)用1概述1.1研究目的和意義 隨著網(wǎng)絡(luò)的普及,安全問題正在威脅著每一個網(wǎng)絡(luò)用戶。由于黑客攻擊和信息泄露等安全問題并不像病毒直截了當(dāng)?shù)貙ο到y(tǒng)進(jìn)行破壞,而是故意隱藏自己的行動,所以往往不能引起人們的重視。但是,一旦網(wǎng)絡(luò)安全問題發(fā)生,通常會帶來嚴(yán)重的后果。因此,利用網(wǎng)絡(luò)安全技術(shù)及產(chǎn)品來加強(qiáng)安全意識,并及早防范是非常必要的。在

11、網(wǎng)絡(luò)安全技術(shù)中,核心層網(wǎng)絡(luò)封包截獲技術(shù)有著很重要的作用。1、核心層網(wǎng)絡(luò)封包截獲技術(shù)是包過濾防火墻的技術(shù)基礎(chǔ)。包過濾防火墻是pc機(jī)上使用的主流防火墻, 核心層包過濾技術(shù)為之提供設(shè)置規(guī)則表,按照規(guī)則表檢查數(shù)據(jù)包并對其施行相關(guān)動作(如放行,拒絕等)。2、核心層網(wǎng)絡(luò)封包截獲技術(shù)應(yīng)用于協(xié)議轉(zhuǎn)換。當(dāng)網(wǎng)絡(luò)類型不同(比如以太網(wǎng)、令牌環(huán)),彼此不認(rèn)識對方的幀格式,單純依靠數(shù)據(jù)鏈路層協(xié)議無法實(shí)現(xiàn)兩個網(wǎng)絡(luò)的相互連接。因此這個問題需在網(wǎng)絡(luò)層上進(jìn)行解決:方法是在不同的網(wǎng)絡(luò)類型中分別設(shè)置兩個網(wǎng)關(guān),網(wǎng)關(guān)需要核心層封包過濾技術(shù)的支持,獲取封包以后在轉(zhuǎn)化為相應(yīng)的協(xié)議。3、核心層網(wǎng)絡(luò)封包截獲技術(shù)用作包過濾器。按照不同的參數(shù)設(shè)置,

12、如ip地址段,地址掩碼等。這一項(xiàng)技術(shù)的核心同樣需要核心層封包技術(shù)的支持。4、核心層網(wǎng)絡(luò)封包截獲技術(shù)應(yīng)用于截取報(bào)文分析。在網(wǎng)絡(luò)層截獲數(shù)據(jù)包,并對其進(jìn)行源地址、源端口以及內(nèi)容的分析。5、核心層網(wǎng)絡(luò)封包截獲技術(shù)應(yīng)用于網(wǎng)絡(luò)嗅探技術(shù)。嗅探(sniffer)技術(shù)是網(wǎng)絡(luò)安全攻防技術(shù)中很重要的一種。對黑客來說,通過嗅探技術(shù)能以非常隱蔽的方式攫取網(wǎng)絡(luò)中的大量敏感信息,與主動掃描相比,嗅探行為更難被察覺,也更容易操作。對安全管理人員來說,借助嗅探技術(shù),可以對網(wǎng)絡(luò)活動進(jìn)行實(shí)時(shí)監(jiān)控,并進(jìn)行發(fā)現(xiàn)各種網(wǎng)絡(luò)攻擊行為。6、核心層網(wǎng)絡(luò)封包截獲技術(shù)應(yīng)用于個人網(wǎng)絡(luò)安全工具。根據(jù)管理者設(shè)置的安全規(guī)則把守網(wǎng)絡(luò),提供訪問控制,信息過濾等

13、功能,幫助用戶抵擋網(wǎng)絡(luò)入侵和攻擊,防止信息泄露。總的來所,核心層網(wǎng)絡(luò)封包截獲技術(shù)有著相當(dāng)大的應(yīng)用前景。它在技術(shù)上對很多網(wǎng)絡(luò)安全技術(shù)提供支持;同時(shí),也是許多商業(yè)網(wǎng)絡(luò)安全產(chǎn)品中必要的知識。當(dāng)我們掌握了這項(xiàng)技術(shù)了后,開發(fā)防火墻,嗅探器等安全軟件就會變得容易。所以我們有必要學(xué)習(xí)和探究這項(xiàng)技術(shù)。1.2研究背景1.2.1國內(nèi)現(xiàn)狀在國內(nèi)的產(chǎn)品中使用這項(xiàng)技術(shù)的有很多的例子,例如我們耳熟能詳?shù)摹?60安全衛(wèi)士”、以及“瑞星”、“江民”等殺毒軟件中提供的“實(shí)時(shí)監(jiān)控系統(tǒng)”都無一例外的采用了這項(xiàng)技術(shù)。因?yàn)樗麄兌夹枰獙?shí)時(shí)的監(jiān)控網(wǎng)絡(luò)的情況,實(shí)時(shí)的對應(yīng)用服務(wù)進(jìn)行監(jiān)控。對我來說,印象最深刻的是“360安全衛(wèi)士”的實(shí)時(shí)保護(hù)功能

14、。它提供了琳瑯滿目的各種防火墻,比如“漏洞防火墻”、“系統(tǒng)防火墻”、“木馬防火墻”、“網(wǎng)頁防火墻”、“u盤防火墻”以及“arp防火墻”等。讓我對奇虎公司的專注精神尤為佩服。若我們撇開以上各個防火墻的具體功能,把注意力放在實(shí)現(xiàn)方法上,發(fā)現(xiàn)其中哪一個也離不開“核心層網(wǎng)絡(luò)封包截獲技術(shù)”的支持。因?yàn)檫@些防火墻中大多數(shù)采用的監(jiān)控方法是:當(dāng)數(shù)據(jù)包從網(wǎng)絡(luò)到達(dá)nic后,繼而截取分析包,最后判斷這個應(yīng)用是否是危險(xiǎn)的;或者根據(jù)服務(wù)調(diào)用下層驅(qū)動時(shí),通過在驅(qū)動上添加截獲分析功能了解你的服務(wù)是否是合法的。圖 1 360安全衛(wèi)士實(shí)時(shí)監(jiān)控圖使用過“360安全衛(wèi)士”的用戶,對圖1的提示框應(yīng)該不會陌生,它提示您現(xiàn)在google

15、的更新軟件正在工作(裝入服務(wù)),詢問您允許它工作還是阻止它工作。這是比較典型的利用這項(xiàng)技術(shù)進(jìn)行網(wǎng)絡(luò)安全防范的例子。1.2.2國外現(xiàn)狀國外產(chǎn)品中使用“核心層網(wǎng)絡(luò)封包截獲技術(shù)”的最好的例子是network general 公司的sniffer這款軟件,中文名字是嗅探器。首先了解sniffer的基本功能:1、網(wǎng)絡(luò)安全的保障與維護(hù) (1)對異常的網(wǎng)絡(luò)攻擊的實(shí)時(shí)發(fā)現(xiàn)與告警; (2)對高速網(wǎng)絡(luò)的捕獲與偵聽; (3)全面分析與解碼網(wǎng)絡(luò)傳輸?shù)膬?nèi)容;2、面向網(wǎng)絡(luò)鏈路運(yùn)行情況的監(jiān)測 (1)各種網(wǎng)絡(luò)鏈路的運(yùn)行情況; (2)各種網(wǎng)絡(luò)鏈路的流量及阻塞情況; (3)網(wǎng)上各種協(xié)議的使用情況; (4)網(wǎng)絡(luò)協(xié)議自動發(fā)現(xiàn); (5

16、)網(wǎng)絡(luò)故障監(jiān)測;3、面向網(wǎng)絡(luò)上應(yīng)用情況的監(jiān)測 (1)任意網(wǎng)段應(yīng)用流量、流向; (2)任意服務(wù)器應(yīng)用流量、流向; (3)任意工作站應(yīng)用流量、流向; (4)典型應(yīng)用程序響應(yīng)時(shí)間; (5)不同網(wǎng)絡(luò)協(xié)議所占帶寬比例; (6)不同應(yīng)用流量、流向的分布情況及拓?fù)浣Y(jié)構(gòu);sniffer是嗅探器中的重要產(chǎn)品,除了這三種基本功能外,它還有很多獨(dú)特而專業(yè)的功能,sniffer是網(wǎng)絡(luò)分析產(chǎn)品中的首選工具。除了sniffer外,國外種類繁雜的包過濾防火墻產(chǎn)品也都相應(yīng)的有核心層網(wǎng)絡(luò)封包截獲技術(shù)的支持,所以我們有必要了解和學(xué)習(xí)這一技術(shù)為以后的網(wǎng)絡(luò)安全學(xué)習(xí)打下基礎(chǔ)??傊v觀國內(nèi)外的產(chǎn)品,這項(xiàng)技術(shù)不乏有相當(dāng)成功的事例;可在國

17、內(nèi),我們還沒有這方面知識的完備描述和相關(guān)資料。這讓一個初次接觸網(wǎng)絡(luò)編程的學(xué)生感到很困難,不僅是由于對網(wǎng)絡(luò)編程體系知識的不了解,其次資料的匱乏也是一個重要的原因;另外,不容忽視的一點(diǎn),這項(xiàng)技術(shù)涉及到windows驅(qū)動程序的開發(fā),這使包括我在內(nèi)的很多初學(xué)者都很茫然,一度不知道何從下手,因?yàn)轵?qū)動程序開發(fā)需要大量經(jīng)驗(yàn)的積累和調(diào)試,若出意外,小者系統(tǒng)死機(jī),系統(tǒng)崩潰也是常發(fā)生的事情。所以本文盡自己最大的努力學(xué)習(xí)和研究了這項(xiàng)技術(shù),希望提升自己,也希望有同樣需求的人士可以參考與指正。1.3主要貢獻(xiàn) 本文就核心層網(wǎng)絡(luò)封包截獲技術(shù)進(jìn)行了探究。首先,本文對目前該技術(shù)的國內(nèi)外現(xiàn)狀進(jìn)行了說明,以明確進(jìn)行研究的目的。隨后

18、,詳盡地對核心層網(wǎng)絡(luò)封包截獲技術(shù)的實(shí)現(xiàn)原理作了講述,在講述原理時(shí)主要介紹了一下幾個方面的內(nèi)容:分層服務(wù)提供者(lsp)的相關(guān)概念、原理和用途;核心層網(wǎng)絡(luò)驅(qū)動和ndis網(wǎng)絡(luò)驅(qū)動程序;核心層網(wǎng)絡(luò)封包截獲技術(shù)的實(shí)現(xiàn)。通過對原理的說明,使讀者了解實(shí)現(xiàn)這項(xiàng)技術(shù)的具體方法。最后,為了實(shí)現(xiàn)這項(xiàng)技術(shù)并對前面提出的原理進(jìn)行驗(yàn)證設(shè)計(jì)了相關(guān)的軟件,本文對這個軟件作了系統(tǒng)分析和系統(tǒng)設(shè)計(jì),最終并實(shí)現(xiàn)了該軟件。通過測試,證明了其具有在核心層截獲封包,在應(yīng)用層分析封包的功能。1.4文章的結(jié)構(gòu)本文共為八個主要部分:第一部分是概述,這部分主要說明了核心層網(wǎng)絡(luò)封包截獲技術(shù)研究的必要性和重要性,主要從市場和技術(shù)兩個角度說明為什么進(jìn)

19、行這項(xiàng)研究。第二部分是研究前必要的預(yù)備知識和原理說明,在研究這項(xiàng)技術(shù)前我們必須有一些預(yù)備知識,才能更好的理解和討論這項(xiàng)技術(shù)。第三部分是netfilter系統(tǒng)分析,主要使用層次方框圖等說明本系統(tǒng)包括的主要功能。第四部分是系統(tǒng)設(shè)計(jì),說明了系統(tǒng)的工作流程和代碼的主要組成部分。并通過系統(tǒng)關(guān)鍵類和主要數(shù)據(jù)結(jié)構(gòu)來說明系統(tǒng)的詳細(xì)設(shè)計(jì)。第五部分是系統(tǒng)實(shí)現(xiàn),主要通過程序流程圖對本系統(tǒng)的幾個主要的功能模塊的實(shí)現(xiàn)進(jìn)行詳細(xì)的說明。第六部分是系統(tǒng)測試與運(yùn)行,說明該系統(tǒng)開發(fā)在這些方面所做的工作。第七部分是總結(jié)篇,對該系統(tǒng)進(jìn)行了綜述性的評述,并提出了系統(tǒng)可能存在的不足及解決方案。最后是本文所參考的各種有價(jià)值的資料列表。2預(yù)

20、備知識及原理說明在研究“核心層網(wǎng)絡(luò)封包截獲技術(shù)應(yīng)用”時(shí),有必要了解一些預(yù)備知識,用以更好的理解核心層封包截獲的原理和實(shí)現(xiàn)過程。這些預(yù)備知識包括“分層服務(wù)提供者”,“核心層網(wǎng)絡(luò)驅(qū)動”和“ndis網(wǎng)絡(luò)驅(qū)動程序”等。2.1分層服務(wù)提供者(lsp)2.1.1分層服務(wù)提供者(lsp)的概念lsp的全稱是layered service provider ,中文名為“分層服務(wù)提供程序”。 簡而言之,lsp就是tcp/ip協(xié)議等的接口。lsp為應(yīng)用程序提供建立連接,傳輸數(shù)據(jù),流量控制,出錯控制等相關(guān)的服務(wù)。lsp本身是dll,使用之前將其安裝在winsock目錄中。以便創(chuàng)建套接字的應(yīng)用程序不必知道此lsp的任

21、何細(xì)節(jié)就能調(diào)用它。2.1.2分層服務(wù)提供者(lsp)的原理用戶在創(chuàng)建套接字時(shí),套接字創(chuàng)建函數(shù)(如socket)會在winsock目錄中尋找合適的協(xié)議,然后調(diào)用此協(xié)議的提供者導(dǎo)出函數(shù)完成各種用戶需要的功能。如果將自己編寫的lsp安裝在winsock目錄中,讓用戶調(diào)用編者的服務(wù)提供者,再由編者的服務(wù)提供者調(diào)用下層提供者。這樣一來,便可以截獲所有的winsock調(diào)用了。ws2_32.dll基礎(chǔ)服務(wù)提供者lsp1lsp2spispispiapi圖 2 lsp原理圖lsp導(dǎo)出一些與winsock api相對應(yīng)的函數(shù),如wspstartup,wspsentto等。如圖2所示。winsock庫加載服務(wù)提供者

22、之后,便是依靠調(diào)用這些函數(shù)來實(shí)現(xiàn)相關(guān)的winsock api(如wsasocket等)的。2.1.3分層服務(wù)提供者(lsp)的用途用戶級封包截獲lsp是實(shí)現(xiàn)用戶級數(shù)據(jù)封包截獲的有力工具,它可以用來編寫監(jiān)視系統(tǒng)網(wǎng)絡(luò)通訊情況的sniffer(嗅探器);在生活中,我們看見lsp最常用的用途是“瀏覽器劫持”。 在封包截獲技術(shù)上,根據(jù)所有與網(wǎng)絡(luò)交換的信息都必須通過lsp這個原理,從而使它可以監(jiān)視使用者的信息。當(dāng)然,除了lsp這種方法可以實(shí)現(xiàn)用戶級封包截獲技術(shù)外,還有windows 2000/xp封包過濾接口也支持這項(xiàng)功能,然而由于windows 2000/xp封包過濾接口的限制太多,本文便采用了lsp的

23、方法實(shí)現(xiàn)用戶級封包截獲。2.2核心層網(wǎng)絡(luò)驅(qū)動和ndis網(wǎng)絡(luò)驅(qū)動程序2.2.1核心層(kernel mode)概述有許多功能在用戶模式(user mode)下是實(shí)現(xiàn)不了的,如原始mac數(shù)據(jù)的發(fā)送和診斷,這個時(shí)候我們必須開發(fā)核心層的驅(qū)動,也稱為內(nèi)核模式下的驅(qū)動來解決問題。ring0層ring3層用戶模式內(nèi)核模式圖 3 cpu特權(quán)層和操作系統(tǒng)用戶模式、內(nèi)核模式關(guān)系圖cpu特權(quán)層和操作系統(tǒng)用戶模式、內(nèi)核模式的關(guān)系如圖3所示,ring0的特權(quán)最高,也就是說可以執(zhí)行任意的代碼,而ring3特權(quán)最低,只能執(zhí)行有限的代碼。windows將內(nèi)核模式運(yùn)行在cpu的ring0層,而將用戶模式運(yùn)行在cpu的ring3

24、層,所以核心層的組件可以進(jìn)行所有權(quán)限的操作。當(dāng)然由于本文探討的“核心封包截獲技術(shù)”是對核心級的操作,就必須要使用到核心層網(wǎng)絡(luò)驅(qū)動;相應(yīng)的開發(fā)核心驅(qū)動來配合實(shí)現(xiàn)目的功能。2.2.2核心層網(wǎng)絡(luò)驅(qū)動windows的產(chǎn)品使用了由iso開發(fā)的基于7層網(wǎng)絡(luò)模型的體系結(jié)構(gòu)。iso開放式系統(tǒng)互連(osi)參考模型將網(wǎng)絡(luò)描述為:“一系列的協(xié)議層,每層都有一組特定的功能,他們向上層提供特定服務(wù)的同時(shí),隱藏了這些服務(wù)實(shí)現(xiàn)的細(xì)節(jié)。一個明確的相鄰層之間的接口定義了下層向上層提供的服務(wù),以及如何訪問這些服務(wù)”。在核心層,網(wǎng)絡(luò)驅(qū)動程序?qū)崿F(xiàn)了osi參考模型中的4層:物理層,鏈路層,網(wǎng)絡(luò)層和傳輸層。這樣它可以完成相應(yīng)層功能。2

25、.2.3 ndis網(wǎng)絡(luò)驅(qū)動程序ndis是network driver interface specification(網(wǎng)絡(luò)驅(qū)動接口標(biāo)準(zhǔn))的縮寫,它為網(wǎng)絡(luò)驅(qū)動抽象了網(wǎng)絡(luò)硬件,指定了分層網(wǎng)絡(luò)驅(qū)動間的標(biāo)準(zhǔn)接口,因此,它為上層驅(qū)動(如網(wǎng)絡(luò)傳輸)抽象了管理硬件的下層驅(qū)動。ndis也維護(hù)了網(wǎng)絡(luò)驅(qū)動的狀態(tài)信息和參數(shù),這包括一些函數(shù)和指針等。ndis支持3中類型的驅(qū)動,它們是微端口(miniport)驅(qū)動,中間層(intermediate)驅(qū)動和協(xié)議(protocol)驅(qū)動。如圖4所示:圖 4 ndis支持的三種驅(qū)動圖 1、微端口(miniport)驅(qū)動:是指常說的網(wǎng)卡驅(qū)動,它負(fù)責(zé)管理網(wǎng)卡,包括通過網(wǎng)卡發(fā)送和

26、接收數(shù)據(jù),它也為上層驅(qū)動提供接口。微端口驅(qū)動一般由硬件提供商提供。2、中間層(intermediate)驅(qū)動:中間層協(xié)議驅(qū)動(intermediate)介于ndis的協(xié)議層驅(qū)動(protocol)和微端口驅(qū)動(miniport)之間。是基于鏈路層和網(wǎng)絡(luò)層之間的驅(qū)動。他導(dǎo)出一系列的虛擬適配器,對用戶來說,跟真實(shí)的物理網(wǎng)卡一樣,對于上層的協(xié)議驅(qū)動來說,當(dāng)它向這個虛擬適配器發(fā)送封包或者請求時(shí),中間層驅(qū)動將這些封包和請求傳播到下層微端口驅(qū)動。當(dāng)下層微端口驅(qū)動向上指示接受封包或者狀態(tài)時(shí),中間層驅(qū)動向上將這些封包、狀態(tài)傳播到綁定在虛擬適配器上的協(xié)議驅(qū)動。這樣利用它來實(shí)現(xiàn)對核心層的封包截獲,并且他能實(shí)現(xiàn)對所

27、有封包的截獲。3、協(xié)議(protocol)驅(qū)動:即網(wǎng)絡(luò)協(xié)議,它位于ndis體系的最高層,經(jīng)常用作實(shí)現(xiàn)傳輸協(xié)議堆棧的傳輸驅(qū)動中的最底層驅(qū)動??傊?,對ndis有了必要的認(rèn)識后,我們可以發(fā)現(xiàn)利用ndis的中間層驅(qū)動來實(shí)現(xiàn)核心級上的封包過濾是很好的辦法,它能夠截獲所有的網(wǎng)絡(luò)數(shù)據(jù)包(如果是以太網(wǎng)那就是以太幀)。2.3核心層網(wǎng)絡(luò)封包截獲技術(shù)核心層網(wǎng)絡(luò)封包截獲技術(shù)主要應(yīng)用于過濾,轉(zhuǎn)換協(xié)議,截取報(bào)文分析等。在討論這項(xiàng)技術(shù)前,有必要詳盡的了解windows網(wǎng)絡(luò)系統(tǒng)體系結(jié)構(gòu);而后再研究用戶模式下的網(wǎng)絡(luò)數(shù)據(jù)過濾和內(nèi)核模式下的網(wǎng)絡(luò)數(shù)據(jù)過濾。2.3.1windows網(wǎng)絡(luò)系統(tǒng)體系結(jié)構(gòu)1.圖5是用戶模式下的網(wǎng)絡(luò)系統(tǒng)體系結(jié)構(gòu)

28、windows socket1.1apiwindows socket2.0apiwindows socket1.1api圖 5 用戶模式下的網(wǎng)絡(luò)系統(tǒng)體系結(jié)構(gòu)圖通過觀察上圖不難發(fā)現(xiàn),用戶模式下的網(wǎng)絡(luò)系統(tǒng)由一些列的dll相互支持完成,上層應(yīng)用程序調(diào)用下層的服務(wù)dll,繼而再繼續(xù)調(diào)用更下層的服務(wù)dll。最終形成一個完整的網(wǎng)絡(luò)體系結(jié)構(gòu)。2.內(nèi)核模式下的網(wǎng)絡(luò)系統(tǒng)體系結(jié)構(gòu)圖內(nèi)核模式下的網(wǎng)絡(luò)系統(tǒng)是由一系列的服務(wù)驅(qū)動構(gòu)成,比如由ndis(網(wǎng)絡(luò)驅(qū)動接口標(biāo)準(zhǔn))構(gòu)成的網(wǎng)絡(luò)系統(tǒng)。miniport驅(qū)動導(dǎo)出虛擬網(wǎng)卡連接到實(shí)際的網(wǎng)卡,intermediate驅(qū)動在下層調(diào)用miniport驅(qū)動的服務(wù),并為上層協(xié)議驅(qū)動導(dǎo)出服務(wù)

29、。ndis為tcp/ip提供了驅(qū)動服務(wù),是網(wǎng)絡(luò)系統(tǒng)體系結(jié)構(gòu)中非常重要的部分。弄懂了內(nèi)核模式下的網(wǎng)絡(luò)系統(tǒng)體系結(jié)構(gòu),我們發(fā)現(xiàn)在系統(tǒng)中為tcp/ip協(xié)議提供驅(qū)動的服務(wù),簡稱為tcp/ip driver,這個驅(qū)動服務(wù)在整個網(wǎng)絡(luò)系統(tǒng)體系結(jié)構(gòu)中有著非常重要的作用,通過他不僅僅可以實(shí)現(xiàn)packet filter技術(shù),同樣的ip路由也由它提供著支持,另外的一個重要應(yīng)用就是firewall hook。具體結(jié)構(gòu)如圖6所示:圖 6 內(nèi)核模式下的網(wǎng)絡(luò)系統(tǒng)體系結(jié)構(gòu)圖2.3.2用戶模式下的網(wǎng)絡(luò)數(shù)據(jù)過濾首先認(rèn)識一下網(wǎng)絡(luò)通信程序,最常見的網(wǎng)絡(luò)通信程序是qq。如圖7所示:a輸入信息,發(fā)送qq將數(shù)據(jù)傳送給服務(wù)程序(核心層的驅(qū)動程

30、序)qq接受驅(qū)動程序送來的數(shù)據(jù)b顯示應(yīng)用層核心層驅(qū)動程序按照協(xié)議要求將數(shù)據(jù)打包發(fā)送到網(wǎng)卡網(wǎng)卡通過網(wǎng)絡(luò)連線將數(shù)據(jù)包發(fā)出驅(qū)動程序按照協(xié)議要求將數(shù)據(jù)翻譯成qq識別的數(shù)據(jù)網(wǎng)卡接受qqa發(fā)出的數(shù)據(jù)包圖 7 通信程序qq的網(wǎng)絡(luò)傳輸數(shù)據(jù)原理圖從此例子可以看出,所有的網(wǎng)絡(luò)通信程序在通信前都需要調(diào)用下層的驅(qū)動或者服務(wù),如果將自己編寫的lsp放在winsock目錄下,讓用戶不知不覺的調(diào)用lsp導(dǎo)出的一些列服務(wù)(函數(shù)),再由lsp調(diào)用下層的服務(wù),于是我們便可以在lsp上跟蹤用戶的網(wǎng)絡(luò)服務(wù)請求,從而實(shí)現(xiàn)用戶模式下的網(wǎng)絡(luò)數(shù)據(jù)過濾。在這里使用的關(guān)鍵技術(shù)就是前面談到的分層服務(wù)提供者lsp。2.3.3內(nèi)核模式下的網(wǎng)絡(luò)數(shù)據(jù)過濾

31、首先引入以圖8示例:驅(qū)動程序下層nic-下層nic-下層nic用戶模式內(nèi)核模式dll(winsock)dll(winsock)訪問網(wǎng)絡(luò)的應(yīng)用程序1訪問網(wǎng)絡(luò)的應(yīng)用程序2圖 8 一般網(wǎng)絡(luò)通信程序傳輸數(shù)據(jù)原理圖通過上圖以及前面對于核心層網(wǎng)絡(luò)驅(qū)動的介紹,我們可以看出,需要在內(nèi)核模式下實(shí)現(xiàn)封包截獲就需要編寫內(nèi)核模式下的驅(qū)動服務(wù)。這樣,需要進(jìn)行任何網(wǎng)絡(luò)活動的應(yīng)用程序都需要加載這項(xiàng)服務(wù),在這個驅(qū)動程序上就可實(shí)現(xiàn)核心層的封包截獲任務(wù)。前面討論了ndis,本篇使用ndis的中間層驅(qū)動服務(wù),根據(jù)它導(dǎo)出的一些列虛擬網(wǎng)卡我們可以較容易的實(shí)現(xiàn)對經(jīng)過真實(shí)nic(網(wǎng)卡)的所有網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行截獲。2.3.4應(yīng)用層封包截獲與核心

32、層封包截獲7應(yīng)用層6表示層5會話層4傳輸層3網(wǎng)絡(luò)層2數(shù)據(jù)鏈路層1物理層7應(yīng)用程序6winsock api5 spi4 tdi3 ndis2網(wǎng)絡(luò)驅(qū)動1 網(wǎng)卡應(yīng)用層核心層網(wǎng)絡(luò)協(xié)議模型windows結(jié)構(gòu)圖 9 核心層與應(yīng)用層網(wǎng)絡(luò)封包截獲實(shí)現(xiàn)原理圖如圖9所示,最終為了實(shí)現(xiàn)應(yīng)用層和核心層的雙重封包截獲,我們可以采用這樣的方法。在應(yīng)用層實(shí)現(xiàn)封包截獲,本文使用了spi中的lsp技術(shù),在核心層實(shí)現(xiàn)封包截獲本文使用了ndis中的中間層驅(qū)動。這樣便可以構(gòu)造一個比較合理的封包截獲系統(tǒng)。3 netfilter系統(tǒng)分析3.1需求分析在本文中,利用核心層網(wǎng)絡(luò)封包截獲技術(shù)設(shè)計(jì)了netfilter軟件。netfilter網(wǎng)絡(luò)

33、訪問監(jiān)視應(yīng)用層過濾規(guī)則核心層過濾規(guī)則系統(tǒng)設(shè)置添加應(yīng)用層規(guī)則編輯應(yīng)用層規(guī)則刪除應(yīng)用層規(guī)則添加核心層規(guī)則編輯核心層規(guī)則刪除核心層規(guī)則核心層規(guī)則設(shè)置公共設(shè)置應(yīng)用層規(guī)則設(shè)置圖 10 netfilter層次結(jié)構(gòu)圖如圖10所以,netfilter具有在核心層截獲封包,在應(yīng)用層歸結(jié)到具體應(yīng)用分析封包的功能;并對所有進(jìn)出系統(tǒng)的數(shù)據(jù)包進(jìn)行檢查,以阻止那些不符合既定規(guī)則的數(shù)據(jù)包的傳輸。netfilter能夠基于數(shù)據(jù)包使用的協(xié)議(如tcp),數(shù)據(jù)包的源地址,數(shù)據(jù)包的目的地址,端口號,數(shù)據(jù)包的傳輸方向等對封包進(jìn)行過濾。3.2功能說明3.2.1網(wǎng)絡(luò)訪問監(jiān)視netfilter對向網(wǎng)絡(luò)上傳或從網(wǎng)絡(luò)下載的數(shù)據(jù)流進(jìn)行有選擇的控

34、制。這種控制動作發(fā)生在從internet向intranet傳輸數(shù)據(jù)時(shí),或從intranet向internet傳輸數(shù)據(jù)時(shí)。網(wǎng)絡(luò)訪問監(jiān)視頁面記錄所有的網(wǎng)絡(luò)動作,將其顯示在該頁面中,以供用戶查看和分析。3.2.2應(yīng)用層過濾規(guī)則設(shè)置應(yīng)用層過濾規(guī)則。主要參數(shù)包括:應(yīng)用程序名,進(jìn)出方向,對其實(shí)施的動作(如放行),服務(wù)類型,服務(wù)端口等。設(shè)置了這些規(guī)則后,符合規(guī)則的數(shù)據(jù)包才會被系統(tǒng)接收。3.2.3核心層過濾規(guī)則設(shè)置核心層過濾規(guī)則。主要參數(shù)包括:協(xié)議類型,對其實(shí)施的動作(如放行),源端和目的端的ip地址值,ip掩碼,端口號碼等。設(shè)置了核心層規(guī)則后,符合規(guī)定的數(shù)據(jù)包才會被下層的驅(qū)動服務(wù)接收。3.2.4系統(tǒng)設(shè)置下層

35、服務(wù)驅(qū)動的安裝與卸載,用戶層和核心層工作模式的默認(rèn)設(shè)置。4 netfilter系統(tǒng)設(shè)計(jì)4.1系統(tǒng)總體設(shè)計(jì)4.1.1系統(tǒng)的工作流程如圖11所示,當(dāng)需要進(jìn)行網(wǎng)絡(luò)訪問的應(yīng)用程序提交了自己的服務(wù)請求,這個請求(如winsock)首先被lsp(分層服務(wù)提供者)截獲,lsp根據(jù)應(yīng)用層的工作模式,控管規(guī)則,對程序進(jìn)行控管。而后lsp繼續(xù)調(diào)用下層的服務(wù)最終接受核心層網(wǎng)絡(luò)驅(qū)動程序的服務(wù)(ndis的中間層驅(qū)動),在這里根據(jù)核心層的工作模式,控管規(guī)則,對封包進(jìn)行控管。這樣最終實(shí)現(xiàn)了用戶層和核心層的雙重過濾功能。用戶界面(netfilter)netfilter.exe需要網(wǎng)絡(luò)服務(wù)的應(yīng)用程序 lsp根據(jù)工作模式,控管規(guī)

36、則,參數(shù)設(shè)置,對用程序聯(lián)網(wǎng)動作控管系統(tǒng)winsock 2 spi工作模式,控管規(guī)則核心層過濾網(wǎng)絡(luò)驅(qū)動服務(wù)(ndis的中間層驅(qū)動)圖 11 netfilter工作流程圖lsp提供應(yīng)用層的過濾規(guī)則,ndis提供核心層的過濾規(guī)則。4.1.2系統(tǒng)的功能模塊如圖12所示,netfilter整個程序代碼主要分為三部分:主程序,應(yīng)用程序過濾模塊,核心層過濾模塊。netfilter訪問網(wǎng)絡(luò)的應(yīng)用程序3dll(winsock)dll(lsp)sys模塊(驅(qū)動程序)下層nic-下層nic-下層nic用戶模式內(nèi)核模式dll(winsock)dll(winsock)訪問網(wǎng)絡(luò)的應(yīng)用程序1訪問網(wǎng)絡(luò)的應(yīng)用程序2ioctl發(fā)

37、送消息設(shè)置共享數(shù)據(jù)圖 12 netfilter功能模塊圖主程序(exe)主要就是用戶所看到的程序界面,是用戶和netfilter進(jìn)行對話的對象。它負(fù)責(zé)管理過濾規(guī)則,安裝與卸載應(yīng)用層過濾模塊(dll模塊),與應(yīng)用層過濾模塊和核心層過濾模塊(sys模塊)進(jìn)行通信等。應(yīng)用層過濾模塊是一個分層服務(wù)提供者,它主要用來截獲應(yīng)用程序的winsock調(diào)用,根據(jù)用戶設(shè)置的應(yīng)用程序權(quán)限規(guī)則限制各個應(yīng)用程序?qū)W(wǎng)絡(luò)訪問,實(shí)時(shí)向主模塊報(bào)告用戶層網(wǎng)絡(luò)活動狀態(tài)。核心層過濾模塊是一個ndis中間層驅(qū)動程序,它的作用是根據(jù)核心層過濾規(guī)則管理輸入輸出封包,記錄網(wǎng)絡(luò)活動狀態(tài)。4.2系統(tǒng)詳細(xì)設(shè)計(jì)在設(shè)計(jì)netfilter時(shí),程序代碼主

38、要分為三部分:主程序,應(yīng)用程序過濾模塊,核心層過濾模塊。為了使設(shè)計(jì)方便和合理,在程序中創(chuàng)建了許多結(jié)構(gòu)體和宏定義。同時(shí)在主程序中設(shè)計(jì)了許多類。4.2.1系統(tǒng)關(guān)鍵類圖 13 netfilter系統(tǒng)關(guān)鍵類名圖1、 cpicontrol類:管理lsp共享內(nèi)存。為了方便與lsp模塊進(jìn)行通信,主模塊封裝了cpicontrol類來訪問lsp模塊中的共享數(shù)據(jù),這個類主要是是通過調(diào)用lsp的導(dǎo)出函數(shù)來實(shí)現(xiàn)的。2、 cprulefile類:管理規(guī)則文件。它負(fù)責(zé)將規(guī)則從文件讀出,保存到cprulefile對象中,或者將cprulefile對象中的數(shù)據(jù)保存到文件中。3、 cnetfilteruapp類:主應(yīng)用程序類。

39、4.2.2系統(tǒng)重要數(shù)據(jù)結(jié)構(gòu)如圖14所示,是netfilter中所涉及到的重要的結(jié)構(gòu)體及其中的數(shù)據(jù)成員。1、rule_item結(jié)構(gòu)體:用戶層訪問規(guī)則是針對應(yīng)用程序而言的,比如允許那些應(yīng)用程序訪問網(wǎng)絡(luò),禁止哪些應(yīng)用程序訪問網(wǎng)絡(luò)、允許應(yīng)用程序使用哪些網(wǎng)絡(luò)服務(wù)器等。所以定義了rule_item結(jié)構(gòu)體描述單個用戶層規(guī)則。2、session結(jié)構(gòu)體:用戶層訪問規(guī)則記錄在共享內(nèi)存中,每當(dāng)應(yīng)用程序訪問網(wǎng)絡(luò)時(shí),lsp模塊就將應(yīng)用程序會話屬性與訪問規(guī)則進(jìn)行比較。因此需要定義session結(jié)構(gòu)來描述發(fā)生在各個套接字上的網(wǎng)絡(luò)事件的屬性,如使用的協(xié)議,ip地址,應(yīng)用程序等。應(yīng)用程序每創(chuàng)建一個套接字,lsp模塊就創(chuàng)建一個s

40、ession結(jié)構(gòu),跟蹤用戶在此套接字上的活動,并將這些網(wǎng)絡(luò)事件發(fā)送給主模塊。session在傳輸網(wǎng)絡(luò)數(shù)據(jù)之前,lsp模塊在應(yīng)用層過濾規(guī)則中查找相關(guān)應(yīng)用程序表項(xiàng),如果找不到,就詢問主模塊,要求添加規(guī)則。3、rule_file_header結(jié)構(gòu)體和rule_file結(jié)構(gòu)體:每個應(yīng)用程序都需要將用戶配置信息和必要的數(shù)據(jù)保存到磁盤上。netfilter要保存的主要是用戶設(shè)置的用戶層訪問規(guī)則和核心層訪問規(guī)則。圖 14 netfilter系統(tǒng)重要數(shù)據(jù)結(jié)構(gòu)名圖4.2.3系統(tǒng)重要模塊詳細(xì)設(shè)計(jì)1、lsp模塊設(shè)計(jì):它一個分層服務(wù)提供者,本身是一個dll,它截獲ws2_32.dll對wspsocket、wspclo

41、sesocket、wspbind、wspaccept、wspcconnect、wspsendto、wsprecvfrom的調(diào)用,如圖15所以結(jié)構(gòu)。lsp導(dǎo)出了plspiocontrol函數(shù)。該函數(shù)主要是完成與主模塊的通信。為了實(shí)現(xiàn)lsp,為其建立了動態(tài)鏈接庫,在該庫里面聲明了類cacl類。圖 15 netfilter中l(wèi)sp模塊中cacl圖2、共享數(shù)據(jù)與i/o控制:主模塊主要是通過共享內(nèi)存來與dll模塊進(jìn)行交互的。lsp共享數(shù)據(jù)分為兩類:一類是加載進(jìn)程加載dll時(shí)候初始化了的,這些數(shù)據(jù)定義在lsp的“initdata”段;一類是未經(jīng)初始化的數(shù)據(jù),它們定義在lsp的“uninitdata”段。在

42、“initdata”段中,聲明了主窗口句柄,和應(yīng)用層工作模式。在“uninitdata”段中,聲明了應(yīng)用層規(guī)則向量(記錄所有應(yīng)用程序的規(guī)則),以及用于與主程序通信用的session類型的g_sessionbuffer和g_querysession向量。為了讓主模塊訪問dll的共享數(shù)據(jù),lsp向外導(dǎo)出了plspiocontrol函數(shù),這個函數(shù)用來設(shè)置共享內(nèi)存中的數(shù)據(jù)。g_sessionbuffer數(shù)組作用是在dll和主模塊間傳遞會話信息。當(dāng)有新的會話創(chuàng)建,會話屬性改變或者會話銷毀時(shí),dll模塊要將這個會話通過windows消息的形式發(fā)送給主模塊。在做這件事時(shí),它首先在g_sessionbuffe

43、r數(shù)組中找到一個沒有被使用的成員,然后將發(fā)生事件的會話復(fù)制到找到的成員中,最后發(fā)送給主模塊的是這個成員的索引。主模塊接收到索引之后,調(diào)用plspiocontrol函數(shù)取得整個session結(jié)構(gòu)。g_querysession數(shù)組的作用于g_sessionbuffer相似,它在dll和主模塊間傳遞發(fā)出詢問的應(yīng)用程序信息。一個應(yīng)用程序訪問網(wǎng)絡(luò)時(shí),如果lsp發(fā)現(xiàn)過濾規(guī)則中沒有該應(yīng)用程序規(guī)則項(xiàng),就詢問主模塊,使用g_querysession數(shù)組中的一個成員來傳遞應(yīng)用程序消息。3、核心層sys模塊設(shè)計(jì):sys模塊是一個ndis中間層驅(qū)動程序。在sys模塊中實(shí)現(xiàn)了重要的功能。包括了基本的deviceioco

44、ntrol接口為win32應(yīng)用程序與sys模塊通信提供基本的機(jī)制;枚舉綁定功能允許win32應(yīng)用程序查詢sys驅(qū)動綁定的適配器;adapt結(jié)構(gòu)添加引用計(jì)數(shù)向驅(qū)動中adapt結(jié)構(gòu)添加引用計(jì)數(shù);適配器句柄打開/關(guān)閉功能提供一種機(jī)制,讓用戶程序可以創(chuàng)建被關(guān)聯(lián)到指定適配器的用戶模式句柄。這個句柄可以用來在特定適配器上做ndis請求,做讀和寫i/o以及其他操作;句柄事件通知這里要處理這種情況,就是驅(qū)動程序可能會使已經(jīng)成功打開的win32句柄無效;在一個打開的適配器句柄上獲取和設(shè)置oid數(shù)據(jù)添加一種機(jī)制,使得用戶可以獲取和設(shè)置特定適配器的oid數(shù)據(jù)。5. netfilter系統(tǒng)實(shí)現(xiàn)由于在本系統(tǒng)設(shè)計(jì)時(shí),設(shè)計(jì)

45、涉及windows驅(qū)動程序的開發(fā),這也是本篇開發(fā)的重點(diǎn)與難點(diǎn)。由于驅(qū)動程序的開發(fā)涉及操作系統(tǒng)底層的很多知識,而且很多概念非常的抽象,不容易理解。所以采用需要采用較好的開發(fā)環(huán)境協(xié)助我們的設(shè)計(jì)開發(fā)式非常重要的。5.1開發(fā)平臺選擇合適的開發(fā)工具與語言可以有效的提高開發(fā)效率。5.1.1 windows server 2003 ddk在設(shè)計(jì)sys模塊時(shí),涉及windows驅(qū)動程序的開發(fā),往往開發(fā)驅(qū)動程序需要對windows內(nèi)核要有深入的了解和大量的內(nèi)核調(diào)試技巧,稍有不慎,就會造成系統(tǒng)的崩潰。所以一個好的平臺開發(fā)工具是必備的。再開發(fā)驅(qū)動之前,首先安裝微軟公司提供的windows驅(qū)動程序開發(fā)包ddk(dri

46、ver development kit)。微軟提供了windows 2000 ddk,windows xp ddk 和windows server 2003。為了使用ddk的最新功能建議安裝windows server 2003 ddk。5.1.2 dbgview同時(shí),在編寫驅(qū)動程序時(shí),比較頭痛的一個問題就是調(diào)試。因?yàn)轵?qū)動程序運(yùn)行在內(nèi)核模式下,很難像一般win32程序一樣進(jìn)行調(diào)試。一般說來驅(qū)動程序的調(diào)試有兩個途徑。其一是在關(guān)鍵的地方打印出調(diào)試信息,也就是俗稱的打log。其二就是調(diào)用內(nèi)核調(diào)試工具,諸如softice或者windbg等工具進(jìn)行內(nèi)核調(diào)試。本篇推薦dbgview。因?yàn)檫@是一個免費(fèi)軟件,

47、dbgview可以同時(shí)監(jiān)聽內(nèi)核和win32上層應(yīng)用程序發(fā)送的調(diào)試信息。如果接收的調(diào)試的信息太多時(shí),用戶還可以根據(jù)自己需要過濾無用的調(diào)試信息。5.1.3 micosoft visual c+ 6.0lsp模塊本身是dll;主程序模塊是win32程序。他們是在micosoft visual c+ 6.0下開發(fā)的,所以還需要micosoft visual c+ 6.0開發(fā)工具的支持。5.1.4 micosoft visual visio 2003它輔助設(shè)計(jì)本文的相關(guān)圖。5.2模塊實(shí)現(xiàn)5.2.1 sys模塊以服務(wù)形式被安裝后,sys模塊接受系統(tǒng)的服務(wù)請求,為系統(tǒng)服務(wù)。工作流程如圖16所示。netfil

48、ter加載服務(wù)openscmanager返回值createservice非null返回值非nullstartservice結(jié)束getlasterror返回值startserviceerror_io_pending其他null圖 16 netfilter中sys模塊程序流程圖5.2.2添加應(yīng)用層規(guī)則設(shè)置應(yīng)用層過濾規(guī)則。用戶選擇需要添加的應(yīng)用程序,按照主要參數(shù):協(xié)議類型,對其實(shí)施的動作(如放行),源端和目的端的ip地址值,ip掩碼,端口號碼等設(shè)置了應(yīng)用層規(guī)則后,告訴主模塊,然后將規(guī)則顯示在頁面中。其具體過程見圖17。開始選擇程序設(shè)置進(jìn)出方向設(shè)置過濾動作高級設(shè)置設(shè)置服務(wù)類型設(shè)置服務(wù)端口成功不成功是備

49、注將規(guī)則寫入規(guī)則文件顯示在頁面中結(jié)束否圖 17 netfilter中添加應(yīng)用層規(guī)則程序流程圖6 netfilter系統(tǒng)測試與運(yùn)行6.1 測試 對netfilter采用模塊化測試,按照功能模塊分別進(jìn)行測試。該系統(tǒng)的主要進(jìn)行了以下幾個方面的測試:單元測試、功能測試、性能測試等。6.1.1單元測試為了確保在開發(fā)中實(shí)現(xiàn)了所有的需求,同時(shí)也為了使項(xiàng)目代碼滿足各種編碼規(guī)范,在正式測試之前對代碼進(jìn)行了人工排查,對系統(tǒng)進(jìn)行了靜態(tài)單元測試代碼審查。程序中有齊全的各種注釋:各種方法都有功能描述,方法中的功能模塊具有功能的相關(guān)描述;參數(shù)和返回值也有相關(guān)的文字描述;除局部變量外都進(jìn)行了變量的含義注釋。方法,變量等都使用了統(tǒng)一的命名規(guī)范。本系統(tǒng)的開發(fā)完全遵照c#的編碼規(guī)范,如代碼按行進(jìn)行書寫,一行只有一個語句等等,變量使用camelcase(駝峰) 命名規(guī)范進(jìn)行命名。命名空間也使用了規(guī)范的命名規(guī)則和組織規(guī)則。如上這些規(guī)范都可以提高代碼的可讀性和系統(tǒng)的可維護(hù)性。通過代碼審查可以發(fā)現(xiàn)一些顯而易見的邏輯錯誤和功能缺失,這些先期的處理可以為后面的測試節(jié)省時(shí)間和測試代價(jià)。6.1.2 功能測試功能測試主要是對需求中的各功能要求進(jìn)行測試性運(yùn)行,保證系統(tǒng)的正確運(yùn)行。在測試中,首先進(jìn)行了用戶界

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論