WinPcap核心資料

2021-06-06 00:49:00 字數 1323 閱讀 4343

npf驅動核心指南

如何編譯winpcap

packet.dll -- 資料報驅動api

這部分指南從最底層的模組開始,描述了winpcap的核心結構與介面。這部分內容的適合那些想要擴充套件或修改本軟體的人,或者是那些對winpcap的工作原理感興趣的人。因此,那些只希望在他們的軟體中,使用winpcap的開發人員,不需要閱讀此部分的內容。飲用winpcap主頁上的一段內容:

winpcap是乙個win32平台的,用於捕獲資料報和進行網路分析的體系結構。它包括了乙個核心級的資料報過濾器,乙個低層動態鏈結庫(packet.dll),乙個高層的,依賴於系統的庫(wpcap.dll)。

為什麼我們使用術語"體系結構"而不是"庫"呢?因為資料捕獲是乙個低層的行為,它需要和網路介面卡,及作業系統的資訊交換,特別是網路的實現。所以,乙個簡單的庫是實現不了的。

以下結構顯示了winpcap的不同的元件:

winpcap的主要結構

首先,捕獲系統需要占用作業系統的協議棧,來訪問通過網路的原始資料。這就需要有部分內容要執行在作業系統核心中,能直接訪問網路介面驅動。這部分內容非常依賴於系統,在我們的解決方案中,它被認為是裝置驅動,稱為netgroup packet filter(npf);我們為windows 95,windows 98,windows me, windows nt 4, windows 2000 和 windows xp提供了不同版本的驅動。這些驅動都提供了相同的基本功能,比如資料捕獲和傳送,也提供了一些高階功能,比如可程式設計的過濾系統和乙個監聽引擎,前者可以被用來獲取過濾後的資料流(比如,可以從指定的埠,僅捕獲ftp資料流),後者提供了乙個強大的,但很簡單的方式來獲取資料流的統計資訊。(比如獲取網路流量或者兩個主機間交換資料的總大小)。

其次,捕獲系統必須輸出乙個埠,以便使用者級應用程式利用核心驅動所提供的特性。winpcap提供了兩個不同的庫:packet.dll 和 wpcap.dll

第乙個提供了低層的api,它可以直接訪問驅動的函式,並且依賴於微軟作業系統的可程式設計介面。 

第二個提供了更多強大的,高層次的,和libpcap(乙個知名的unix捕獲庫)相容的捕獲原語。這些函式捕可以在不考慮網路硬體和作業系統的情況下捕獲資料。

縱觀本文件,我們會首先使用packet driver apipacket.dll的函式,然後才是wpcap,wpcap.dlllibpcap的。

核心資料結構

關於開發驅動重要的核心資料結構,方便自己理解 driver object typedef struct driver object cshort type cshort size 乙個鍊錶,記錄了該驅動建立的所有裝置物件 pdevice object deiceobject ulong flags ...

核心資料結構

核心需要儲存i o元件使用的狀態資訊,可以通過若干核心資料結構比如說檔案開啟表等來完成 unix系統中在讀取乙個使用者檔案的時候,核心需要去檢查下快取,然後再去決定是否執行磁碟i o,在讀乙個程序映象時候,核心只需要從記憶體當中讀取資料,也就是說這些操作都可以呼叫read 函式來完成,但是語義不同 ...

核心資料結構

這部分包含了修改核心模組,所以要使用到核心鏈結表資料結構。首先你得定義乙個包含元素的結構去插入鍊錶。下邊這段 用c語言定義了生日結構 struct birthday 注意struct list head list。結構list head在包含目錄的裡有定義。它的作用就是嵌入包含列表節點的鏈結表。li...