在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于NDIS中間層驅(qū)動程序的網(wǎng)絡嗅探器

            基于NDIS中間層驅(qū)動程序的網(wǎng)絡嗅探器

            ——
            作者: 時間:2007-12-25 來源: 收藏

              1 引 言

              ()是利用計算機網(wǎng)絡接口截獲所需網(wǎng)絡內(nèi)部數(shù)據(jù)報文的一種工具,他廣泛地應用于流量分析、安全監(jiān)控、網(wǎng)管分析、防火墻等的實現(xiàn)中。主要被用來在網(wǎng)絡上截獲位于協(xié)議模型中各個協(xié)議層次上的數(shù)據(jù)包,通過對截獲數(shù)據(jù)包的分析,嗅探器可以掌握目標主機的信息。由于與具體平臺的網(wǎng)絡協(xié)議棧密切相關,并涉及網(wǎng)絡安全的敏感問題,網(wǎng)絡嗅探一般沒有通用的實現(xiàn)方法。

              隨著計算機網(wǎng)絡應用的普及,和Windows 2000/XP網(wǎng)絡操作系統(tǒng)的廣泛應用,使得在Window 2000/XP下保障網(wǎng)絡通信安全成為一個迫切需要解決的問題。本文基于NDIS中間層驅(qū)動程序?qū)崿F(xiàn),為滿足上述需求提供了充分的可能。

              2 的基本工作原理

              網(wǎng)絡嗅探器利用的是共享式的網(wǎng)絡傳輸介質(zhì)。共享即意味著網(wǎng)絡中的一臺機器可以嗅探到傳遞給本網(wǎng)段(沖突域)中的所有機器的報文。例如最常見的以太網(wǎng)就是一種共享式的網(wǎng)絡技術,以太網(wǎng)卡收到報文后,通過對目的地址進行檢查,來判斷是否是傳遞給自己的,如果是,則把報文傳遞給操作系統(tǒng);否則,將報文丟棄,不進行處理;網(wǎng)卡存在一種特殊的工作模式,在這種工作模式下,網(wǎng)卡不對目的地址進行判斷,而直接將他收到的所有報文都傳遞給操作系統(tǒng)進行處理,這種特殊的工作模式,就稱之為混雜模式。網(wǎng)絡嗅探器通過將網(wǎng)卡設置為混雜模式來實現(xiàn)對網(wǎng)絡的嗅探。

              一個實際的主機系統(tǒng)中,數(shù)據(jù)的收發(fā)是由網(wǎng)卡來完成的,當網(wǎng)卡接收到傳輸來的數(shù)據(jù)包時,網(wǎng)卡內(nèi)的單片程序首先解析數(shù)據(jù)包的目的網(wǎng)卡物理地址,然后根據(jù)網(wǎng)卡驅(qū)動程序設置的接收模式判斷該不該接收,認為該接收就產(chǎn)生中斷信號通知CPU,認為不該接收就丟掉數(shù)據(jù)包,所以不該接收的數(shù)據(jù)包就被網(wǎng)卡截斷了,上層應用根本就不知道這個過程。CPU如果得到網(wǎng)卡的中斷信號,則根據(jù)網(wǎng)卡的驅(qū)動程序設置的網(wǎng)卡中斷程序地址調(diào)用驅(qū)動程序接收數(shù)據(jù),并將接收的數(shù)據(jù)交給上層協(xié)議軟件處理。

              3 NDIS中間層驅(qū)動程序

              訪問位于網(wǎng)絡底層的傳輸協(xié)議是網(wǎng)絡嗅探器的基本功能。網(wǎng)絡嗅探器必須能夠接收并分析來自數(shù)據(jù)鏈路層、網(wǎng)絡層、傳輸層等底層的數(shù)據(jù)包,本文介紹的網(wǎng)絡嗅探器采用了網(wǎng)絡驅(qū)動程序接口規(guī)范(NDIS)中間層驅(qū)動程序技術設計。

              NDIS是Windows網(wǎng)絡協(xié)議棧構(gòu)件間的接口規(guī)范,基于NDIS的核心態(tài)包過濾技術具有較高的結(jié)構(gòu)性和可擴展性。從NDIS4.0開始,NDIS開始支持中間層驅(qū)動程序(Intermediate Driver),為NDIS體系帶來了很多的靈活性,他是位于一個或者多個NIC驅(qū)動之上和傳輸層驅(qū)動之下的驅(qū)動程序,即位于鏈路層和協(xié)議層之間,對上面的協(xié)議層提供一個虛擬的微端口網(wǎng)卡驅(qū)動接口(MiniportDriver),而對下面的鏈路層則提供一個協(xié)議驅(qū)動接口(Protocol Driver)。所有經(jīng)過網(wǎng)卡發(fā)送到網(wǎng)絡和從網(wǎng)絡接收的數(shù)據(jù)包都要由此通過,因此中間層驅(qū)動程序可以對所有網(wǎng)絡數(shù)據(jù)包進行過濾和處理。從NDIS中間層在Windows中的位置來看,其處于核心層,處于與操作系統(tǒng)同等級別的核心態(tài),如圖1所示。

              

            {{分頁}}

              本文使用微軟提供的驅(qū)動程序開發(fā)包DDK進行NDIS中間層驅(qū)動程序編程。具體流程為:

              (1)NDIS驅(qū)動程序在主入口函數(shù)DirverEntry中調(diào)用NdisMinitializeWrapper函數(shù)注冊輸出函數(shù)集入口,得到設備句柄;

              (2)輸入(1)得到的句柄調(diào)用NdisIMRegisterLayeredMiniport,為NDIS中間層驅(qū)動程序注冊一套Miniport回調(diào)函數(shù),這樣上層Protocol協(xié)議就認為中間層驅(qū)動程序是網(wǎng)卡,并通過NDIS庫調(diào)用這些回調(diào)函數(shù);

              (3)調(diào)用NdisRegisterProtocol,為NDIS中間層驅(qū)動程序注冊一套Protocol回調(diào)函數(shù),這樣下層網(wǎng)卡就認為中間層驅(qū)動程序是一個協(xié)議,并通過NDIS庫調(diào)用這些函數(shù);

              (4)當操作系統(tǒng)發(fā)現(xiàn)NIC時,NDIS調(diào)用中間層驅(qū)動程序注冊的ProtocolAdapterBind函數(shù),該函數(shù)內(nèi)部需要調(diào)用NdisOpenAdapt打開適配器,保證了網(wǎng)卡和中間層的綁定關系;

              (5)調(diào)用PtReceivePacket接收網(wǎng)卡收到的數(shù)據(jù)包;

              (6)數(shù)據(jù)包與所設置過濾規(guī)則進行比較,不滿足規(guī)則時調(diào)用函數(shù)返回NDIS_STATUS_NOT_ACCEPTED,該宏在ndis.h中定義,這樣就結(jié)束了本接收函數(shù)的調(diào)用。

              4 基于NDIS中間層驅(qū)動程序的網(wǎng)絡嗅探器實現(xiàn)

              4.1 網(wǎng)絡嗅探器的結(jié)構(gòu)模型

              本文實現(xiàn)的網(wǎng)絡嗅探器主要由運行于Ring0層的NDIS中間層驅(qū)動程序模塊和運行于Ring3層的應用層包處理模塊構(gòu)成。在Windows 2000平臺下實現(xiàn)了對流經(jīng)指定網(wǎng)絡適配器的各種網(wǎng)絡協(xié)議、任意/指定IP地址和端口的數(shù)據(jù)包的嗅探,如圖2所示。

              

              (1)應用層包處理模塊:處于應用層,負責過濾準則的設置和數(shù)據(jù)包的處理分析。

              (2)數(shù)據(jù)包捕獲及過濾實現(xiàn)模塊:基于NDIS中間層驅(qū)動程序完成底層數(shù)據(jù)的截獲功能,并依據(jù)數(shù)據(jù)包過濾準則實現(xiàn)對數(shù)據(jù)包的接收過濾,向上層應用程序遞交數(shù)據(jù)包。

            {{分頁}}

              4.2 應用層包過濾準則設置

              網(wǎng)絡嗅探器中采用包過濾技術的目的主要是為了有選擇地接收網(wǎng)絡數(shù)據(jù)包,屏蔽偵聽者不關心的網(wǎng)絡數(shù)據(jù)包,從而提高系統(tǒng)的監(jiān)聽效率,減輕高層應用對數(shù)據(jù)包的分析處理負擔。數(shù)據(jù)包的過濾是對捕獲的數(shù)據(jù)包的報頭進行分析,依據(jù)過濾準則來決定數(shù)據(jù)包是否需要提交高層應用進行處理。

              過濾準則的設置主要分為IP地址過濾、協(xié)議過濾、端口過濾三個方面,可分別進行設置,并通過CFile::Open(″../data/filter″,CFile::modeCreate|CFile::modeRead-Write)和CFiIe::Write(&m_Filter,sizeof(m_Filter))分別寫入配置文件。過濾準則依照以下方式進行工作:

              (1)當數(shù)據(jù)包到達NIC時,對數(shù)據(jù)包的各級包頭進行協(xié)議分析。

              (2)過濾準則無設置時,默認接收該準則權限內(nèi)的所有數(shù)據(jù)包。

              (3)若3個過濾準則中的任一個有設置,數(shù)據(jù)包將依次與IP地址過濾準則、協(xié)議過濾準則、端口過濾準則匹配,若存在一條準則拒絕接收該數(shù)據(jù)包,并丟棄。

              (4)如果一個數(shù)據(jù)包滿足所有數(shù)據(jù)包過濾準則,則該數(shù)據(jù)包被提交給高層應用。

              4.3 數(shù)據(jù)包捕獲及過濾實現(xiàn)

              當過濾規(guī)則設置完成后,核心態(tài)的驅(qū)動程序就可以根據(jù)上層的要求來截獲數(shù)據(jù)包。具體步驟為:

              (1)用戶態(tài)程序啟動驅(qū)動服務程序;

              (2)用戶態(tài)程序調(diào)用CFile::Read(&m_Filter,sizeof(m_Filter))讀取過濾準則;

              (3)調(diào)用DeviceloControl(hFile,IOCTL_ENUM_ADAPTERS,NULL,0,buffer,MAX_ADAPTERS*256,&BytesTxd,NULL)從注冊表中獲取網(wǎng)絡適配器的信息,并顯示到用戶界面;

              (4)用戶選擇適配器綁定并設置適配器為混雜模式;

              (5)創(chuàng)建事件對象,接收數(shù)據(jù)包線程ReadProcessProc()和發(fā)送讀請求線程ReadRequestProc()使用事件機制來同步、協(xié)調(diào)工作,使得讀隊列不太長,也不為空;

              (6)ReadRequestProc()調(diào)用WaitForSingleObject函數(shù)等待事件發(fā)生,當讀請求隊列長度小于設定的最小長度時,調(diào)用SetEvent沒置事件為有信號狀態(tài),線程不斷地發(fā)出讀請求,保持驅(qū)動程序的讀隊列不為空,防止丟包發(fā)生;當讀請求隊列長度超出設定的最大長度時,調(diào)用ResetEvent設置事件為無信號狀態(tài),線程停止發(fā)送讀請求;

              (7)ReadProcessProc()檢查完成端口狀態(tài),有讀請求時,在PtReceive/PtReceivePacket函數(shù)中處理收到的數(shù)據(jù)包,當有數(shù)據(jù)包符合所有的過濾條件時,將其復制到共享內(nèi)存,收取數(shù)據(jù)并按照過濾準則考慮是否通知用戶界面程序讀取數(shù)據(jù);

              (8)應用層接到NDIS中間層驅(qū)動程序的事件通知后,獲取共享內(nèi)存隊列中的數(shù)據(jù),做進一步的處理,繼續(xù)循環(huán)等待。

              5 結(jié) 語

              采用本文介紹的設計思想,實現(xiàn)基于NDIS中間層驅(qū)動程序的網(wǎng)絡嗅探器,具有良好的結(jié)構(gòu)性、擴展性、并行性、效率性和可編程性,能夠?qū)W(wǎng)絡中的各層進行訪問,并且能收發(fā)基于這些層的各種協(xié)議數(shù)據(jù)包。該嗅探器運行于系統(tǒng)的核心層,最大限度地提高了系統(tǒng)的數(shù)據(jù)處理效率,在單位內(nèi)部網(wǎng)絡安全監(jiān)控以及網(wǎng)絡入侵檢測等方面發(fā)揮了重要的作用。



            評論


            相關推薦

            技術專區(qū)

            關閉