freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

windows簡單防火墻的設計與實現(xiàn)—免費畢業(yè)設計論文-文庫吧資料

2024-12-07 11:26本頁面
  

【正文】 vIoControl(STOP_IP_HOOK, NULL, 0, NULL, 0)。 return。以下是用戶單擊開始和停止按鈕時程序調(diào)用的函數(shù): void CMainFrame::OnFileStart() // 開始過濾 { if(m_bStarted) return。 if(m_pIPFltDrv != NULL) delete m_pIPFltDrv。 } CMainFrame::~CMainFrame() 第 15 頁 共 20 頁 { if(m_bStarted) m_pFilterDrvIoControl(STOP_IP_HOOK, NULL, 0, NULL, 0)。 exit(1)。 m_pFilterDrv = new CDriver(szPath, DrvFltIp)。 ::GetFullPathName(, 256, szPath, amp。 // 啟動 IP 過濾鉤子驅(qū)動 char szPath[256]。 // 指示是否啟動 ?? }; // 文件 CMainFrame::CMainFrame() { // 確保 IP 過濾驅(qū)動啟動(否則怎樣為它安裝鉤子?) m_pIPFltDrv = new CDriver(, IpFltDrv)。 // IP 過濾驅(qū)動指針 CDriver* m_pFilterDrv。 CRuleDlg:從 CDialog 派生,過濾規(guī)則相關 核心代碼 CMainFram 類主要是加載 IP 過濾驅(qū)動、 IP 過濾鉤子驅(qū)動和處理菜單命令。 第 14 頁 共 20 頁 視圖類又從 CWnd 類派生。 ② 變量盡量不使用縮寫,個別較長的單詞或已成習慣縮寫如下 Initialize Init 初始化 Dialog Dlg 對話框 Application App 應用程序 ③ 自定義的全局變量用 m_開頭,過程變量則不用 變量的前綴用變量類 型的第一個字母標志變量類型。在“動作”一欄里,用戶可以選者“丟棄”或者“放行”來決定數(shù)據(jù)包如何處理。如源 ip 地址、源端口號,目的 ip 地址、目的端口號等內(nèi)容。 圖 4. 主程序界面 當用戶單擊“添加 規(guī)則 ”時彈出 添加 規(guī)則 窗口 , 如圖 5。用戶可以單擊“ 開始過濾”和“停止過濾”來決定數(shù)據(jù)過濾的開始與停止。首先建立一個 MFC 的界面工程。用戶單擊添加過濾規(guī)則 彈出添加規(guī)則對話框,為用戶提供添加過濾規(guī)則的輸入界面,單擊刪除時則實現(xiàn)刪除用戶選定的過濾規(guī)則;當用戶單擊安裝規(guī)則和卸載規(guī)則時,則分別發(fā)送控制代碼 ADD_FILTER 和 CLEAR_FILTER 來實現(xiàn)過濾規(guī)則的加載或者卸載。過濾函數(shù)實現(xiàn)大致流程如下: 第 11 頁 共 20 頁 圖 5 客戶端應用程序 用戶程序的核心實現(xiàn)就是使用 CDriver 類向驅(qū)動程序發(fā)送幾個設備控制代碼( START_IP_HOOK(安裝過濾鉤子 )、 STOP_IP_HOOK(清除過濾鉤子)、 ADD_FILTER(安裝過濾規(guī)則)、 CLEAR_FILTER(卸載過濾規(guī)則 ))。具體的過濾函數(shù)實際上就是過濾鉤子回調(diào)函數(shù),當有數(shù)據(jù)包的發(fā)送或者接收時鉤子回調(diào)函數(shù)將會被調(diào)用。由于是鏈表結構存儲,所以清除過濾列表時,只需要遍歷 g_pHeader 指向的鏈表,依次釋放添加規(guī)則時申請的內(nèi)存即可。 //定義列表首地址 向過濾列表中添加規(guī)則時,首先申請一塊 CFilterList 結構大小的內(nèi)存,然后用正確的參數(shù)來填充這塊內(nèi)存,最后連接到過濾列表中。 //過濾規(guī)則 CFilterList *pNext。在鉤子回調(diào)函數(shù)中,當有數(shù)據(jù)包需要通過時得遍歷這個列表。 下面是典型過濾器鉤子驅(qū)動的備控制例程處理兩種 I/O 控制請求 : SetHook IOCTL 表示注冊一個過濾器鉤子 ; ClearHook IOCTL 示清除以前注冊的過濾器鉤子 。 為了獲得 I/O 控制請求 , 過濾器鉤子驅(qū)動程序的設備控制例程必須調(diào)用IoGetCurrentIrpStackIocation 函數(shù) , 在調(diào)用中 , 設備控制例程把一個 IRP 指針傳遞給IoGetCurrentIrpStackIocation 函數(shù) , 然后設備控制例程決定哪一個 I/O 控制請求已經(jīng)收到并且做相應的處理 。這個 Dispatch 例程處理發(fā)來的 I/O 控制請求 , 在 DriverEntry 入口函數(shù)中為這個 Dispatch 例程設置和輸出入口點 。 成員 ExtensionPointer 是指向 hook 回調(diào)函數(shù)的指針 .通過該結構完成向 IP 過濾驅(qū)動程序注冊 hook 函數(shù) .如果 ExtensionPointer 為 NULL,則從 IP 過濾驅(qū)動程序中清除回調(diào)函數(shù)。 PF_SET_EXTENSION_HOOK_INFO 結構的定義如下,其包含回調(diào)函數(shù)的指針: Typedef struct_PF_SET_EXTENSION_HOOK_INFO { PacketFilterExtensionPtr ExtensionPointer。在這次調(diào)用中,過濾器鉤子驅(qū)動傳遞了一個指向 IP 過濾驅(qū)動設備對象的指針,也就是先前已經(jīng)創(chuàng)建的IRP 指針。當有數(shù)據(jù)包發(fā)送或接收時, IP 過濾驅(qū)動程序就要調(diào)用這些回調(diào)函數(shù)。該控制碼也用來從 IP 過濾驅(qū)動程序中清除回調(diào)函數(shù),為了清除過濾器鉤子,這個結構包括了空( NULL)值。 在這次調(diào)用中,過濾器鉤子驅(qū)動傳遞了指定 IOCTL_PF_SET_EXTENSION_POINTER值的參數(shù)、設備對象指針以及包含 PF_SET_EXTENSION_HOOK_INFO 結構的 緩沖區(qū)。 調(diào)用此函數(shù)時,為 ObjectName 參數(shù)傳遞 IP 過濾驅(qū)動名稱“ \Device\IPFILTERDRIVER”,為 DesireAccess 參數(shù)傳遞 FILE_ALL_ACCESS 過濾器鉤子驅(qū)動程序使用 PF_SET_EXTENSION_POINTER 控制碼建立一個 IRP,并將其提交給 IP 過濾鉤子驅(qū)動程序,通常 filterhook 驅(qū) 動 程 序 調(diào) 用IoBuildDeviceIoControlRequest 函數(shù)建立所需 IRP,該控制碼向 IP 過濾器驅(qū)動程序注冊過濾鉤子回調(diào)函數(shù)。 //指定這個對象要求訪問的權限 OUT PFILE_OBJECT *FileObject。 NTSTATUS IoGetDrivceObjectPointer( IN PUNICODE_STRING ObjectName。為了記錄和清除鉤子回調(diào)函數(shù),過濾器鉤子驅(qū)動必須首先用設備對象的指針為 IP 過 濾 器 驅(qū) 動 和IOCTL_PF_SET_EXTENSION_POINTER 創(chuàng)建一個 IRP,然后,過濾器鉤子驅(qū)動把這個 IRP提交給 IP 過濾器驅(qū)動,過濾器鉤子驅(qū)動設置或清除鉤子回歸函數(shù)的過程描述是:為了獲得IP 過濾器 驅(qū) 動的設備對象指針,過濾器鉤子驅(qū)動需要 調(diào)用函數(shù) IoGetDeviceObjectPointer。過濾器鉤子驅(qū)動程序設置了過濾器鉤子回調(diào)函數(shù),并通知 IP 過濾器驅(qū) 動 為每個傳入或者傳出的 IP 數(shù)據(jù)包調(diào)用這個鉤子回調(diào)函數(shù)。 PF PASS 表小 IP 過濾驅(qū)動程序處理該數(shù)據(jù)包,并將結果動作回復給 IP 協(xié)議棧. IP過濾器驅(qū)動如何過濾數(shù)據(jù)包由它本身和包過濾 API 接口的設置方式來決定;如果過濾器鉤子認為自己不需要處理該數(shù)據(jù)包,而是讓 IP 過濾器驅(qū)動過濾包,則應該返回該 PF_PASS。 PF DROP 表示 IP 過濾驅(qū)動程序?qū)⒘⒖滔?IP 協(xié)議棧發(fā)出丟棄響應, IP 協(xié)議將丟棄該數(shù)據(jù)包。 這 3 種回復響應代碼所代表的含義描述如下: 第 8 頁 共 20 頁 首先是把數(shù)據(jù)包的特定信息和 IP 過濾器驅(qū)動提供給過濾器鉤子的信息加以比較,以此決定數(shù)據(jù)包下一步如何被處理 。 不過,一般情況下要根據(jù)過濾器鉤子函數(shù)的基本功能來命名。 在過濾器鉤子驅(qū)動通過系統(tǒng)提供的 IP 過濾器驅(qū)動注冊其過濾鉤子( filter hook )的入口點時,已給出了過濾器鉤子的符號(可變)地址 。 //封包長度 USHORT checksum。 //源端口號 USHORT destinationPort。 //校驗和 USHORT urgenPointer。 //標志 USHORT windows。 //ack 序號 UCHAR dataoffset。 //目的端口 ULONG sequenceNumber。 TCP 頭 : typedef stuct_TCPHeader { USHORT sourcePort。 //目的 IP 地址 }IPPacket。 //效驗和 ULONG ipSoruce。 //生存時間 UCHAR ipProtocol。 //封包標適,唯一 標識 發(fā)送的每一個數(shù)據(jù)報 USHORY ipFlags。 //服務類型 USHORT ipLength。 Typedef struct IPHearder { UCHAR iphverLen。以下是該數(shù)據(jù)類型原型: tyfedef PF_FORWARD_ACTION (*PacketFilterExtensionPtr)( IN unsigned char *PacketHeader, //封包的 IP 頭指針 IN unsigned char *Packet, //具體封包數(shù)據(jù),不包括頭指針 IN unsigned int PacketLength, //具體封包數(shù)據(jù)大小,不包含頭指針 IN ubsigned int RecvInterfaceTndex, //接收數(shù)據(jù)的接口適配器編號 IN unsigned int SendInterfaceIndex , //發(fā)送數(shù)據(jù)的接口適配器編號 IN IPAddr RecvLinkNextHop, //接收數(shù)據(jù)包的適配器 IP 地址 IN IPAddr SendLinkNextHop //發(fā)送數(shù)據(jù)包的適配器 IP 地址 )。內(nèi)核中的過濾器鉤子驅(qū)動將本機進出的所有封包都傳入到我們的虛擬設備中,按照我們提供的過濾規(guī)則進行處理。由于是使用函數(shù)的地址而不是函數(shù)的名字注冊過濾鉤子的入口點,所以可以自由的為過濾鉤子函數(shù)命名。操作系統(tǒng)提供的 ip 過濾驅(qū)動程序使用這個過濾鉤子來判斷 ip 數(shù)據(jù)包的處理方式。這一部分說明文檔論述了 filterhook 驅(qū)程實現(xiàn)的回調(diào)函數(shù)和該驅(qū)程用以注冊回調(diào)函數(shù)的 i/o 控制碼。 它允許用戶注冊自己的 ip 數(shù)據(jù)報處理函數(shù)。 從 Windows 2020 開始, IpFilterDrive 成為系統(tǒng)自帶的一個驅(qū)動。它是一種 KMD(Kernel Mode Driver 內(nèi)核模式驅(qū)動 ),與 IpFilterDrive 相配合。主要利用 過濾鉤子驅(qū)動 模塊應用輸出接口提供的四個 IOCTL 來實現(xiàn)相應功能: START_IP_HOOK(注冊過濾函數(shù) );STOP_IP_HOOK(撤消過濾函數(shù)); ADD_FILTER(安裝新的過濾規(guī)則) CLEAR_FILTER(清除所有規(guī)則) 4 過濾鉤子 驅(qū)動的實現(xiàn) Filter_Hook Driver 概述 在 Windows2020 DDK 中, Microsoft 聲稱 包括了新的網(wǎng)絡驅(qū)動類型 FilterHook Driver。 程序模塊 該模塊主要就是用戶所看到的程序界面,是用戶和防火墻進行對話的對象。 圖 利用在 Microsoft Windows 2020 DDK 中介紹的 FilterHook Drive 來實現(xiàn)對所有進出接口的數(shù)據(jù)進行過濾。做折中比較后,在用驅(qū)動程序攔截數(shù)據(jù)包的方法中選擇了一個最簡單的方法:使用 Win2020 DDK 中提供的 FilterHook Driver 來實現(xiàn)數(shù)據(jù)包的過濾 。 雖然 用戶態(tài)下實現(xiàn) 數(shù)據(jù)包捕獲 比較容易,但其攔截數(shù)據(jù)包有一些局限性,一個最大的缺點就是只能在 Winsock 層次上進行,而對于網(wǎng)絡協(xié)議棧中底層協(xié)議的數(shù)據(jù)包無法進行處理。也就是是說, Winpcap 不能阻塞、過濾或控制其他應用程序數(shù)據(jù)包的收發(fā),它僅僅是監(jiān)聽共享網(wǎng)絡上傳送的數(shù)據(jù)報。截獲數(shù)據(jù)包有很多種方法,首先想到了 Winpcap(Windows Packet Capture), 它是Windows 平臺下的一個免費、公共的網(wǎng)絡訪問系統(tǒng)。 3 總體 設計方案 設計過程 防火墻是對所
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1