【正文】
IE→詢問是否通過 →確定通過→編輯控管規(guī)則。用到截獲數(shù)據(jù)包的技術(shù)也是數(shù)不勝數(shù)。我希望我可以永遠(yuǎn)保持一顆求知的心去工作,去生活。相信這對于我以后的工作將會大有裨益。return。白盒測試是把測試對象看作一個打開的盒子。mSessionbProtocol!=[iIndex].bServiceType)goto COMPARE。DWORD iIndex = 0。 管制函數(shù)IsLocalIP:判斷 IP 地址是否為本機(jī) IP,同時判斷本次調(diào)用 DLL 的應(yīng)用程序是否為需要放行的超級進(jìn)程。CheckSend:在發(fā)送面向連接的數(shù)據(jù)前檢查是否放行。如果設(shè)置,則用自定義函數(shù) AddOverlapped 保存參數(shù)信息,然后用自己的回調(diào)函數(shù)代替原來的并轉(zhuǎn)發(fā)。當(dāng)一個 Socket 建立連接后調(diào)用這個函數(shù),轉(zhuǎn)發(fā)之前先調(diào)用訪問控制函數(shù) CheckConnect,檢查是否放行。return 0。if((ErrorCode=WSPStartupFunc(wVersionRequested,lpWSPData,lpProtocolInfo, upcallTable, lpProcTable)) != ERROR_SUCCESS)return ErrorCode。WSPStartup 是 Windows Sockets 應(yīng)用程序調(diào)用 SPI 的初始化函數(shù)。(2) 變量一般不用縮寫,用英文單詞全稱。 b. 控管規(guī)則界面控管規(guī)則界面用來顯示和設(shè)置控管規(guī)則(如圖 ) 。0:全部1:TCP(端口為任意,可編輯)2:UDP(端口為任意,可編輯)3:FTP(端口為 21,不可編輯)4:TELNET(端口為 23,不可編輯)5:HTTP(端口為任意,可編輯)6:NNTP(端口為 119,不可編輯)7:POP3(端口為 110,不可編輯)8:SMTP(端口為 25,不可編輯)(7) 服務(wù)端口,數(shù)值的含義如下。在 DLL 與 EXE 之間通信使用消息是一種優(yōu)勢,多個應(yīng)用程序雖然調(diào)用同一個 DLL,但是它們都擁有獨(dú)立的模塊副本。類的成員函數(shù)和成員變量有公有和私有之分。(4) 模塊 :EXE 設(shè)置 DLL 的控管規(guī)則模塊,設(shè)置控管規(guī)則單獨(dú)的函數(shù),調(diào)用模塊 讀寫控管規(guī)則模塊得到控管規(guī)則數(shù)據(jù),調(diào)用 DLL 的函數(shù)FloControl 設(shè)置 DLL 的控管規(guī)則。建立一些中間模塊,讓兩端的模塊來完成相互調(diào)用的透明化。② 提供清空監(jiān)視列表,停止/開始監(jiān)視及停止/開始滾動功能。第 4 頁 共 37 頁 開發(fā)平臺與開發(fā)工具開發(fā)平臺如題說明,以 Windows 平臺為主,重點(diǎn)討論開發(fā)工具的選擇。利用這種技術(shù)可以在Socket 中插入一曾層,從而可以完成諸如擴(kuò)展 TCP/IP 協(xié)議棧,網(wǎng)絡(luò)安全控制等功能,所以這是一個非常強(qiáng)大而且有用的接口,下面介紹這種編程技術(shù)。實(shí)現(xiàn)的主要的核心功能如下定義:(1) 根據(jù)應(yīng)用程序訪問規(guī)則可對應(yīng)用程序連網(wǎng)動作進(jìn)行過濾;(2) 對應(yīng)用程序訪問規(guī)則具有自學(xué)習(xí)功能;(3) 可實(shí)時監(jiān)控、監(jiān)視網(wǎng)絡(luò)活動。顧名思義,防火墻能夠在計(jì)算機(jī)和網(wǎng)絡(luò)間形成一道過濾屏障,保證被認(rèn)可的行為順利執(zhí)行,而危險行為則被屏蔽。一個是完成應(yīng)用程序初始化的類第 2 頁 共 37 頁CPropertyApp,它繼承自 CWinApp,是 EXE 的入口,其實(shí)里面封裝了 WinMain函數(shù);另一個是主窗口模塊 CMainFrame,這個主窗口并不是 EXE 顯示出來的那個屬性頁窗口,而是一個隱藏的窗口,它繼承自 CMrameWnd,是一個無模式窗口,他隱藏顯示,充當(dāng)接受機(jī),用來接受 DLL 及其他模塊發(fā)送過來的消息,然后對消息進(jìn)行相應(yīng)的處理。Winsock 2 SPI 除了有完成網(wǎng)絡(luò)傳輸?shù)膫鬏敺?wù)提供者,還有提供友好名稱服務(wù)的名字空間服務(wù)提供者。其中 Borland 使用的 VCL 類庫是為 Delphi 準(zhǔn)備的,并不是真正用C++實(shí)現(xiàn)的。 模塊劃分 模塊劃分原則模塊劃分是系統(tǒng)分析中非常重要的一部分,下面是模塊劃分時的基本原則。 模塊結(jié)構(gòu)根據(jù) 節(jié)的功能定義和 節(jié)的工作流程圖,需要對模塊做進(jìn)一步細(xì)化,得出更詳細(xì)的模塊結(jié)構(gòu)。 模塊接口定義模塊之間接口有 3 種方式:(1) 函數(shù)接口函數(shù)接口是最常用而且獨(dú)立性和封裝性最好的接口方式 [7]。雖然不提倡使用,但是有些地方使用全局變量與是不可避免的,而且有時候可以減少很多麻煩。 控管規(guī)則文件需要存儲的內(nèi)容控管規(guī)則文件需要存儲的內(nèi)容如下:(1) 系統(tǒng)設(shè)置(2) 控管設(shè)置(3) 控管規(guī)則附加數(shù)據(jù),授權(quán)訪問的遠(yuǎn)端網(wǎng)絡(luò) IP 地址記錄(1) 規(guī)則編號字段是控管規(guī)則的唯一性編號。a. 封包監(jiān)視界面封包監(jiān)視界面用來顯示截獲的網(wǎng)絡(luò)封包?!皠幼鳌庇脕泶_定符合這一條控管規(guī)則的網(wǎng)絡(luò)訪問動作是放行還是拒絕。不知道函數(shù)是干什么的。amp。lpProcTablelpWSPSend = WSPSend。XfShutdown 調(diào)用系統(tǒng)服務(wù)提供者函數(shù) WSPShutdown,關(guān)閉一個 Socket 連接。這個函數(shù)用來接收面向連接的數(shù)據(jù)。WSPStartup 是 Winsock 2 SPI 入口函數(shù),每個應(yīng)用程序連網(wǎng)時調(diào)用且僅調(diào)用一次這個函數(shù)。CreateSession 創(chuàng)建一個新的網(wǎng)絡(luò)封包記錄。第 23 頁 共 37 頁開始調(diào)用 D L L 的進(jìn)程名是否為空 ?調(diào)用進(jìn)程是否為系統(tǒng)進(jìn)程 ?目的 I P 是否本地 I P ?檢查工作模式在控管規(guī)則中查找是否有關(guān)于這個進(jìn)程調(diào)用的規(guī)則 ?檢查這條控管規(guī)則的進(jìn)出方向和當(dāng)前連接的方向是否相同 ?檢查這條控管規(guī)則的協(xié)議和當(dāng)前連接的是否相同 ?檢查這條控管規(guī)則的 I P 和當(dāng)前連接的目的 I P 是否相同 ?檢查這條控管規(guī)則的 A c t i o n 是否為 P A S S ?檢查這條控管規(guī)則的端口和當(dāng)前連接的端口是否相同 ?返回 “ P A S S ”結(jié)束返回 “ P A S S ”返回 “ P A S S ”返回 “ P A S S ”返回 “ P A S S ”是否第一次查找 ?上一個找到的控管規(guī)則的A c t i o n 是否為 P A S S返回 “ Q U E R Y ”返回 “ D E N Y ”返回 “ P A S S ”返回 “ ” D E N Y返回 “ D E N Y ”否否否Q u e r y有相同相同相同相同是是是是P a s s A l lD e n y A l l沒有是否是否否不相同圖 控管規(guī)則比對流程圖int CCheckAcl::GetAccessFromAcl(SESSION *mSession)第 24 頁 共 37 頁{//下面的判斷語句表示:如果控管規(guī)則文件無效,進(jìn)程名無效,是本機(jī) IP或是超級進(jìn)程,則返回放行動作。}}if(IsOne) IsOne = FALSE。第 26 頁 共 37 頁}FindAcl:根據(jù)應(yīng)用程序和名稱從控管規(guī)則中查找與之相匹配的記錄。(5) 解決辦法:首先去掉通知 DLL 的代碼。CAclSet::m_EnableComboApplication = TRUE。只有將防火墻軟件和讓病毒軟件整合起來才能更好的實(shí)現(xiàn)“安全”的意義。同時更加豐富軟件的功能,使其功能和界面更加人性化?!?…}測試三:(1) 操作系統(tǒng): WinXP。void CMainSheet::OnCancel(){if(!GetDlgItem(ID_APPLY_NOW)IsWindowEnabled())return。黑盒測試,英文是 Black Box Testing,又稱功能測試或者數(shù)據(jù)驅(qū)動測試。if([iIndex].bDirection!=ACL_DIRECTION_IN_OUTamp。mSessionulRemoteIP) )return XF_PASS。DeleteSession 從已有的網(wǎng)絡(luò)封包記錄中刪除一條。CheckCloseSocket:WSPCloseSocket 函數(shù)的預(yù)處理函數(shù),用來刪除相應(yīng)的Session。如果設(shè)置,則用自定義函數(shù) AddOverlapped 保存參數(shù)信息,然后用自己的回調(diào)函數(shù)代替原來的并轉(zhuǎn)發(fā)。截獲的服務(wù)提供者函數(shù):過濾 WSPSocket。lpProcTablelpWSPRecv = WSPRecv。TCHAR sLibraryPath[512]。第 16 頁 共 37 頁4 核心功能的實(shí)現(xiàn)本課題的核心功能實(shí)現(xiàn)封裝在 DLL 里面。本機(jī)向遠(yuǎn)端服務(wù)器發(fā)出連接請求就是出;遠(yuǎn)端主機(jī)向本機(jī)發(fā)出連接請求則為進(jìn)。如圖 。(2) 應(yīng)用程序名稱及路徑字段用來保持應(yīng)用程序的名稱和路徑。(3) Windows 消息接口Windows 消息接口是一種特殊的接口形式,它是基于 Windows 操作系統(tǒng)的消息機(jī)制 [8]。如果每個函數(shù)都有單獨(dú)的接口,那么,函數(shù)多了,接口也就多了,也就越來越復(fù)雜了。(1) 模塊 :用戶界面, 節(jié)詳細(xì)說明。理想的狀態(tài)就是模塊之間沒有關(guān)系,但這種情況不符合現(xiàn)實(shí)。最大的優(yōu)勢是跨平臺。名字空間服務(wù)提供者把一個網(wǎng)絡(luò)協(xié)議的地址屬性和一個或多個用戶友好名稱關(guān)聯(lián)起來,這樣可以起用與協(xié)議無關(guān)的名字解析方案。這時鉤子程序就會起作用,把截獲的底層服務(wù)進(jìn)行“過濾” ,及先調(diào)用自定義的函數(shù)再轉(zhuǎn)給下層服務(wù)提供者函數(shù) 【2】 。 課題目標(biāo)現(xiàn)在防火墻的花樣與種類繁多,讓人眼花繚亂。所以現(xiàn)在防火墻一般與防病毒軟件配合使用。第 3 頁 共 37 頁2 WINSOCK 2 SPI 編程技術(shù)Winsock 2 是 Windows Sockets 的 版本,在此之前的版本是 。所以編寫基