欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種Win9x操作系統(tǒng)中截獲端口數(shù)據(jù)的方法和系統(tǒng)的制作方法

文檔序號:6337450閱讀:250來源:國知局
專利名稱:一種Win9x操作系統(tǒng)中截獲端口數(shù)據(jù)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)截獲領(lǐng)域,特別是涉及一種WinQx操作系統(tǒng)中截獲端口數(shù)據(jù)的方法和系統(tǒng)。
背景技術(shù)
微軟公司的Wir^x操作系統(tǒng)包括Windows 95,Windows 98系統(tǒng),雖然已被基于NT 技術(shù)的Windows 2000/XP等操作系統(tǒng)所替代,但由于其結(jié)構(gòu)相對簡單,應(yīng)用成本低,因而在工控、商業(yè)銷售等領(lǐng)域中仍有廣泛應(yīng)用。在應(yīng)用WinQx操作系統(tǒng)的計(jì)算機(jī)中,常常會保存一些重要的數(shù)據(jù),例如工控?cái)?shù)據(jù)庫、技術(shù)文本、財(cái)務(wù)數(shù)據(jù)以及各類統(tǒng)計(jì)數(shù)據(jù)等,如果這些數(shù)據(jù)被泄露出去,會給這些單位帶來巨大的風(fēng)險(xiǎn)和損失,因此,需要對應(yīng)用WinQx操作系統(tǒng)的計(jì)算機(jī)輸入或輸出的數(shù)據(jù)進(jìn)行嚴(yán)格監(jiān)控,從而保證其中的重要數(shù)據(jù)的安全。由于計(jì)算機(jī)是通過端口來輸入或者輸出數(shù)據(jù)的,因此,可以采用監(jiān)控計(jì)算機(jī)端口的方式來監(jiān)控計(jì)算機(jī)輸入或輸出的數(shù)據(jù),這就不可避免地要對端口讀寫的數(shù)據(jù)進(jìn)行截獲。WinQx操作系統(tǒng)下,端口都是獨(dú)占設(shè)備,在對端口進(jìn)行讀、寫、打開、關(guān)閉、控制等操作時(shí),需要先申請?jiān)摱丝诘氖褂脵?quán),只有在獲得了端口的使用權(quán)之后才能對其進(jìn)行操作,操作完畢后再釋放該端口的使用權(quán),這樣,其他程序或設(shè)備才能對該端口進(jìn)行訪問。圖1為現(xiàn)有的WinQx操作系統(tǒng)中截獲端口數(shù)據(jù)的系統(tǒng)結(jié)構(gòu)圖。如圖1所示,現(xiàn)有技術(shù)將專門的硬件截獲設(shè)備103連接在所要監(jiān)控的端口 101與端口讀寫設(shè)備102之間,這樣, 硬件截獲設(shè)備103就獨(dú)占了端口 101的使用權(quán),任何的端口讀寫設(shè)備102在對端口 101進(jìn)行操作時(shí),都必須由硬件截獲設(shè)備103作為中介。因此,現(xiàn)有技術(shù)截獲端口 101處讀出或?qū)懭氲臄?shù)據(jù)的方法為當(dāng)端口讀寫設(shè)備102向端口 101發(fā)出讀數(shù)據(jù)的請求時(shí),該讀請求就被硬件截獲設(shè)備103截獲,則硬件截獲設(shè)備103申請端口 101的獨(dú)占使用權(quán),在該申請獲準(zhǔn)之后, 硬件截獲設(shè)備103從端口 101獲得該讀請求所要求的數(shù)據(jù),將該數(shù)據(jù)存儲到自身的存儲裝置中,然后再將該數(shù)據(jù)送至端口讀寫設(shè)備102,從而實(shí)現(xiàn)對從端口 101讀取的數(shù)據(jù)的截獲。 當(dāng)端口讀寫設(shè)備102向端口 101發(fā)出寫數(shù)據(jù)的請求以及所要寫入的數(shù)據(jù)時(shí),該寫請求和待寫入的數(shù)據(jù)也也被硬件截獲設(shè)備103截獲,該硬件截獲設(shè)備103首先申請端口 101的獨(dú)占使用權(quán),在該申請獲準(zhǔn)之后,硬件截獲設(shè)備103將待寫入的數(shù)據(jù)保存到自身的存儲裝置中, 然后將該寫請求和待寫入數(shù)據(jù)送至端口 101,從而實(shí)現(xiàn)對寫入端口 101的數(shù)據(jù)的截獲。截獲完成之后,硬件截獲設(shè)備103釋放端口 101的獨(dú)占使用權(quán)。由此可見,現(xiàn)有技術(shù)利用硬件截獲設(shè)備103作為中介,通過硬件截獲設(shè)備103獨(dú)占端口 101的使用權(quán),從而實(shí)現(xiàn)了對從端口 101讀取的數(shù)據(jù)以及寫入端口 101的數(shù)據(jù)的截獲, 有效地保證了端口 101所在的計(jì)算機(jī)的數(shù)據(jù)安全。但是,現(xiàn)有技術(shù)采用硬件截獲設(shè)備103 來截獲端口數(shù)據(jù),所使用的硬件截獲設(shè)備的數(shù)量不能少于要監(jiān)控的端口的數(shù)量,對每個要實(shí)現(xiàn)計(jì)算機(jī)數(shù)據(jù)監(jiān)控的單位來說,本單位內(nèi)待監(jiān)控的計(jì)算機(jī)數(shù)量通常比較多,而且有些計(jì)算機(jī)還有多個輸入輸出端口需要進(jìn)行監(jiān)控,這造成采用現(xiàn)有技術(shù)進(jìn)行計(jì)算機(jī)端口數(shù)據(jù)截獲的成本很高。另外,現(xiàn)有技術(shù)中,硬件截獲設(shè)備103需要獨(dú)占端口 101的使用權(quán),才能對端
4口 101進(jìn)行訪問,因而在訪問端口 101之前,硬件截獲設(shè)備103需要申請?jiān)摱丝诘氖褂脵?quán), 在訪問結(jié)束后,又要釋放該端口的使用權(quán),這都需要花費(fèi)一定的時(shí)間,在端口訪問量比較大的情況下,現(xiàn)有技術(shù)需要花費(fèi)大量的時(shí)間用于使用權(quán)的申請和釋放。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種WinQx操作系統(tǒng)中截獲端口數(shù)據(jù)的方法和系統(tǒng),能在無需申請和釋放端口使用權(quán)的前提下,降低端口數(shù)據(jù)截獲的成本。本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下一種WinQx操作系統(tǒng)中截獲端口數(shù)據(jù)的方法,該方法包括在內(nèi)核模式下,創(chuàng)建與端口相對應(yīng)的日志文件;利用Win9x操作系統(tǒng)中的VxD驅(qū)動程序,截獲針對端口的每一操作請求,判斷所述操作請求是否為讀/寫請求,如果是,則將所述讀/寫請求所要讀/寫的數(shù)據(jù)保存到與該端口相對應(yīng)的日志文件,然后執(zhí)行所述讀/寫請求;否則,執(zhí)行所述操作請求。本發(fā)明的有益效果是本發(fā)明中,由于在內(nèi)核模式下創(chuàng)建了與端口相對應(yīng)的日志文件,在利用WinQx操作系統(tǒng)中的VxD驅(qū)動程序截獲針對端口的每一操作請求之后,都判斷該操作請求是否為讀/寫請求,對于讀/寫請求,則將其要讀/寫的數(shù)據(jù)保存到與該端口相對應(yīng)的日志文件,然后再執(zhí)行該讀/寫請求,而對于讀/寫請求之外的其他操作請求,則不進(jìn)行處理,直接執(zhí)行該操作請求即可,因此,本發(fā)明能夠?qū)崿F(xiàn)對從端口讀取的數(shù)據(jù)和寫入端口的數(shù)據(jù)的截獲,從而有效地監(jiān)控計(jì)算機(jī)的輸入輸出數(shù)據(jù),保證數(shù)據(jù)的安全,同時(shí),本發(fā)明所采用的端口數(shù)據(jù)截獲方法完全是軟件方法,只需將該軟件加載到各待監(jiān)控計(jì)算機(jī)而無需采用任何專門的硬件截獲設(shè)備來實(shí)現(xiàn)數(shù)據(jù)截獲功能,因此,本發(fā)明大大降低了端口數(shù)據(jù)截獲的成本。另外,由于本發(fā)明是在內(nèi)核模式下利用軟件方法在內(nèi)核模式下對端口進(jìn)行的訪問,因此,無需申請或釋放端口的使用權(quán)。綜上所述,本發(fā)明能在無需申請和釋放端口使用權(quán)的前提下,降低端口數(shù)據(jù)截獲的成本。在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)進(jìn)一步,在內(nèi)核模式下,創(chuàng)建與端口相對應(yīng)的日志文件之前,該方法進(jìn)一步包括 確定所述端口是否可用,如果是,則在內(nèi)核模式下創(chuàng)建與該端口相對應(yīng)的日志文件,否則, 不對該端口的數(shù)據(jù)進(jìn)行截獲。進(jìn)一步,在判斷所述操作請求為讀/寫請求之后,該方法進(jìn)一步包括將所述讀/ 寫請求所要讀/寫的數(shù)據(jù)順序保存到緩沖區(qū);則將所述讀/寫請求所要讀/寫的數(shù)據(jù)保存到與該端口相對應(yīng)的日志文件,為確定所述讀/寫請求所要讀/寫的數(shù)據(jù)保存在所述緩沖區(qū)中的首地址和數(shù)據(jù)長度;根據(jù)所述讀/寫請求所要讀/寫的數(shù)據(jù)保存在所述緩沖區(qū)中的首地址和數(shù)據(jù)長度,將首地址為所述緩沖區(qū)中的首地址、長度為所述數(shù)據(jù)長度的數(shù)據(jù)從所述緩沖區(qū)中取出, 保存到與該端口相對應(yīng)的日志文件。進(jìn)一步,在判斷所述操作請求為讀/寫請求之后,該方法進(jìn)一步包括將根據(jù)所述讀/寫請求進(jìn)行數(shù)據(jù)讀/寫的時(shí)間與所述讀/寫請求所要讀/寫的數(shù)據(jù)相對應(yīng),保存到與該端口相對應(yīng)的日志文件;
禾口/ 或,將讀/寫請求標(biāo)志與所述讀/寫請求所要讀/寫的數(shù)據(jù)相對應(yīng),保存到與該端口相對應(yīng)的日志文件。進(jìn)一步,所述端口為一個以上的端口,則所述創(chuàng)建與端口相對應(yīng)的日志文件為創(chuàng)建與每個端口相對應(yīng)的日志文件;所述截獲針對端口的每一操作請求為截獲針對每個端口的每一操作請求。進(jìn)一步,所述端口為串行接口,和/或,所述端口為并行接口。另外,本發(fā)明還提供了一種WinQx操作系統(tǒng)中截獲端口數(shù)據(jù)的系統(tǒng),所述端口具有端口編號,該系統(tǒng)包括日志創(chuàng)建與保存模塊、過濾模塊、操作請求執(zhí)行模塊,其中所述日志創(chuàng)建與保存模塊用于,在內(nèi)核模式下,創(chuàng)建與端口相對應(yīng)的日志文件;根據(jù)所述讀/寫請求所針對的端口的端口編號,確定所述讀/寫請求所針對的端口,將所述過濾模塊送來的讀/寫請求所要讀/寫的數(shù)據(jù)保存到與所述讀/寫請求所針對的端口相對應(yīng)的日志文件,將所述讀/寫請求發(fā)送到所述操作請求執(zhí)行模塊;所述過濾模塊用于,利用Win9x操作系統(tǒng)中的VxD驅(qū)動程序,截獲針對端口的每一操作請求,判斷所述操作請求是否為讀/寫請求;將讀/寫請求所要讀/寫的數(shù)據(jù)和所述讀 /寫請求所針對的端口的端口編號發(fā)送到所述日志創(chuàng)建與保存模塊;將讀/寫請求之外的其他操作請求發(fā)送到所述操作請求執(zhí)行模塊;所述操作請求執(zhí)行模塊用于,利用WinQx操作系統(tǒng)中的VxD驅(qū)動程序,執(zhí)行所述日志創(chuàng)建與保存模塊送來的所述讀/寫請求;利用WinQx操作系統(tǒng)中的VxD驅(qū)動程序,執(zhí)行所述過濾模塊送來的所述讀/寫請求之外的其他操作請求。所述日志創(chuàng)建與保存模塊進(jìn)一步用于,確定所述端口是否可用;將端口不可用的消息發(fā)送到所述過濾模塊;則所述過濾模塊進(jìn)一步用于,根據(jù)所述端口不可用的消息,不截獲針對該端口的操作請求。進(jìn)一步,所述過濾模塊進(jìn)一步用于,將所述讀/寫請求所要讀/寫的數(shù)據(jù)順序保存到緩沖區(qū);則所述日志創(chuàng)建與保存模塊用于,確定所述讀/寫請求所要讀/寫的數(shù)據(jù)保存在所述緩沖區(qū)中的首地址和數(shù)據(jù)長度;根據(jù)所述讀/寫請求所要讀/寫的數(shù)據(jù)保存在所述緩沖區(qū)中的首地址和數(shù)據(jù)長度,將首地址為所述緩沖區(qū)中的首地址、長度為所述數(shù)據(jù)長度的數(shù)據(jù)從所述緩沖區(qū)中取出,保存到與所述讀/寫請求所針對的端口相對應(yīng)的日志文件。進(jìn)一步,所述日志創(chuàng)建與保存模塊進(jìn)一步用于,將根據(jù)所述讀/寫請求進(jìn)行數(shù)據(jù)讀/寫的時(shí)間與所述讀/寫請求所要讀/寫的數(shù)據(jù)相對應(yīng),保存到與該端口相對應(yīng)的日志文件;和/或,將讀/寫請求標(biāo)志與所述讀/寫請求所要讀/寫的數(shù)據(jù)相對應(yīng),保存到與該端口相對應(yīng)的日志文件。進(jìn)一步,所述端口為一個以上的端口,則所述日志創(chuàng)建與保存模塊用于,創(chuàng)建與每個端口相對應(yīng)的日志文件;所述過濾模塊用于,截獲針對每個端口的每一操作請求。進(jìn)一步,所述端口為串行接口,和/或,所述端口為并行接口。


圖1為現(xiàn)有的WinQx操作系統(tǒng)中截獲端口數(shù)據(jù)的系統(tǒng)結(jié)構(gòu)圖;圖2為本發(fā)明提供的WinQx操作系統(tǒng)中截獲端口數(shù)據(jù)的方法流程圖;圖3為本發(fā)明提供的WinQx操作系統(tǒng)中截獲端口數(shù)據(jù)的系統(tǒng)結(jié)構(gòu)圖。
具體實(shí)施例方式以下結(jié)合附圖對本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。圖2為本發(fā)明提供的WinQx操作系統(tǒng)中截獲端口數(shù)據(jù)的方法流程圖。如圖2所示, 該方法包括步驟201 在內(nèi)核模式下,創(chuàng)建與端口相對應(yīng)的日志文件。這里,WinQx操作系統(tǒng)分為用戶模式和內(nèi)核模式,操作系統(tǒng)的核心代碼運(yùn)行在內(nèi)核模式下,這些核心代碼能夠直接訪問物理端口、物理內(nèi)存等,而無需事先申請使用權(quán),因而在端口訪問結(jié)束之后也就不需釋放使用權(quán);非核心代碼運(yùn)行在用戶模式下,這些非核心代碼要訪問物理端口,需要向內(nèi)核模式下的核心代碼提出請求,然后由核心代碼來執(zhí)行訪問物理端口的操作,執(zhí)行完畢后將執(zhí)行結(jié)果返回給非核心代碼。由于現(xiàn)有技術(shù)中訪問端口的應(yīng)用程序、硬件設(shè)備等都運(yùn)行在用戶模式下,因此,這些應(yīng)用程序、硬件設(shè)備在訪問端口前, 必須向核心代碼提交訪問端口的申請,在端口訪問結(jié)束之后,也必須釋放端口使用權(quán)。本步驟在內(nèi)核模式下創(chuàng)建與端口相對應(yīng)的日志文件,步驟202至步驟205也在 WinQx操作系統(tǒng)的內(nèi)核模式下進(jìn)行,因此,本發(fā)明是在內(nèi)核模式下用軟件訪問端口的方式來實(shí)現(xiàn)端口數(shù)據(jù)截獲的,因而無需在訪問端口前申請端口的使用權(quán),也無需再訪問端口結(jié)束之后釋放端口的使用權(quán),這樣,本發(fā)明可以方便快捷地用軟件實(shí)現(xiàn)截獲端口數(shù)據(jù)的功能。本發(fā)明中,要進(jìn)行監(jiān)控的端口的數(shù)量可以為一個,也可以為多個,每個端口都有自己的端口編號,不同端口的端口編號不同,在各種操作請求對某個端口進(jìn)行訪問時(shí),需要區(qū)分出該操作請求所要執(zhí)行的操作是針對哪個端口進(jìn)行的,因而該操作請求中可以包含端口編號,用來指示自身所針對的端口。在需要進(jìn)行監(jiān)控的端口的數(shù)量為一個以上的情況下,針對每個端口,本發(fā)明都創(chuàng)建一個與該端口相對應(yīng)的日志文件,用于存儲從該端口讀出或?qū)懭朐摱丝诘臄?shù)據(jù),對不同端口進(jìn)行讀/寫的數(shù)據(jù)是存儲到不同的日志文件中的。步驟202 利用Wiri^c操作系統(tǒng)中的VxD驅(qū)動程序,截獲針對端口的每一操作請求。這里,截獲針對端口的每一操作請求的方法為利用Wiri^c操作系統(tǒng)中的 VxD (Virtual Device Driver,虛擬設(shè)備驅(qū)動器)驅(qū)動程序,截獲針對端口的每一操作請求。 其中,VxD驅(qū)動程序是WinQx操作系統(tǒng)中特有的驅(qū)動程序,該驅(qū)動程序工作在內(nèi)核模式下, 因而可以直接訪問操作系統(tǒng)下的任何硬件、數(shù)據(jù)以及內(nèi)存,這樣,VxD驅(qū)動程序可以直接對端口進(jìn)行訪問,無需在訪問前申請使用權(quán),也無需在訪問結(jié)束后釋放使用權(quán),因此,本發(fā)明利用VxD驅(qū)動程序,可以在無需獨(dú)占端口使用權(quán)的前提下,實(shí)現(xiàn)截獲端口數(shù)據(jù)的功能。對端口的操作請求多種多樣,每一種操作請求都涉及一種對端口的操作,例如,讀請求、寫請求、打開請求、關(guān)閉請求等,分別實(shí)現(xiàn)從端口讀出數(shù)據(jù)、向端口寫入數(shù)據(jù)、打開端口以及關(guān)閉端口等功能,其中,只有寫請求和讀請求涉及輸入輸出數(shù)據(jù),因此,本發(fā)明需要將針對端口的所有操作請求都截獲,然后從中分辨出對端口進(jìn)行讀操作或?qū)懖僮鞯恼埱螅?從而實(shí)現(xiàn)對端口讀寫的數(shù)據(jù)的截獲。步驟203 判斷該操作請求是否為讀/寫請求,如果是,則依次執(zhí)行步驟204和 205,否則,執(zhí)行步驟205。這里,當(dāng)步驟202截獲針對端口的一項(xiàng)操作請求時(shí),通過本步驟可以判斷出該操作請求是否為讀/寫請求,如果是讀請求或?qū)懻埱螅瑒t依次執(zhí)行步驟204的保存數(shù)據(jù)和步驟 205的執(zhí)行讀/寫請求的步驟,如果是讀請求和寫請求之外的其他操作請求,則直接執(zhí)行步驟205執(zhí)行該操作請求的步驟,這種在判斷出該操作請求為讀請求和寫請求之外的其他操作請求之后,按照步驟205直接執(zhí)行該操作請求的操作方式,稱為I^ss-Through方式。WinQx操作系統(tǒng)中,判斷操作請求是否為讀/寫請求的方法可以為根據(jù)該操作請求是否包含讀/寫數(shù)據(jù)項(xiàng)來判斷,也可以為根據(jù)各種操作請求的數(shù)據(jù)結(jié)構(gòu)來判斷。步驟204 將讀/寫請求所要讀/寫的數(shù)據(jù)保存到與該端口相對應(yīng)的日志文件。這里,步驟203對步驟202中截獲的操作請求的判斷結(jié)果為是讀/寫請求,故為了實(shí)現(xiàn)對端口輸入輸出數(shù)據(jù)的監(jiān)控,在本步驟中將該讀/寫請求所要讀/寫的數(shù)據(jù)保存到步驟201創(chuàng)建的與該端口相對應(yīng)的日志文件。對于要從端口讀出數(shù)據(jù)的讀請求,本發(fā)明可以按照該讀請求,將該讀請求所要求讀出的數(shù)據(jù)先送至特定的存儲空間,例如內(nèi)存中的緩沖區(qū),或者硬盤中的特定文件,或者其他存儲空間,然后從該特定的存儲空間將這些數(shù)據(jù)發(fā)送到與該端口相對應(yīng)的日志文件中進(jìn)行保存,這樣就在緩沖數(shù)據(jù)傳輸速度的同時(shí),實(shí)現(xiàn)了對從該端口讀出的數(shù)據(jù)的截獲。當(dāng)然,也可以在將讀請求所涉及的數(shù)據(jù)從端口讀出后,直接存入與該端口相對應(yīng)的日志文件,中間不經(jīng)緩沖裝置的緩存。讀出端口的數(shù)據(jù)在截獲完成之后,即可執(zhí)行步驟205。對于要將數(shù)據(jù)寫入端口的寫請求,本發(fā)明是先截獲該寫請求以及要寫入端口的數(shù)據(jù),在把要寫入端口的數(shù)據(jù)保存到該端口對應(yīng)的日志文件、實(shí)現(xiàn)了對要寫入端口的數(shù)據(jù)的截獲之后,再執(zhí)行步驟205,按照該寫請求將數(shù)據(jù)寫入端口。將數(shù)據(jù)保存到日志文件中后,在用戶模式下,利用應(yīng)用程序或某些硬件設(shè)備就可以訪問該日志文件,從而獲知對該日志文件對應(yīng)的端口所讀/寫過的數(shù)據(jù),進(jìn)而判斷是否泄密。當(dāng)然,也可以在應(yīng)用層創(chuàng)建專門的虛擬過濾設(shè)備,用于作為內(nèi)核模式下本發(fā)明所述的方法在用戶模式下的虛擬對應(yīng)實(shí)體,實(shí)現(xiàn)本發(fā)明所述的步驟201至步驟205的方法,同時(shí),該虛擬過濾設(shè)備還可以進(jìn)一步用于接收應(yīng)用層的應(yīng)用程序的請求,幫助這些應(yīng)用程序?qū)崿F(xiàn)對日志文件的訪問。步驟205 執(zhí)行該操作請求。這里,本步驟為按照操作請求對端口執(zhí)行相應(yīng)的操作,S卩,如果是在執(zhí)行完步驟 204所述的對讀/寫數(shù)據(jù)的截獲之后,本步驟就按照讀/寫請求,完成數(shù)據(jù)的讀/寫;如果在步驟203中判斷所截獲的操作請求為讀/寫請求之外的其他操作請求后,直接執(zhí)行本步驟, 則按照該操作請求執(zhí)行相應(yīng)的操作,例如,該操作請求為打開請求,則本步驟就執(zhí)行打開端口的操作。
其中,執(zhí)行讀/寫請求的方法可以為利用WinQx操作系統(tǒng)中的VxD驅(qū)動程序,執(zhí)行讀/寫請求;同樣,執(zhí)行操作請求的方法為利用WinQx操作系統(tǒng)中的VxD驅(qū)動程序,執(zhí)行操作請求。與步驟202相同,本步驟同樣是由于利用VxD驅(qū)動程序來執(zhí)行操作請求,因此, 本步驟可以在無需獨(dú)占端口使用權(quán)的前提下對端口進(jìn)行訪問。由此可見,本發(fā)明中,由于在內(nèi)核模式下創(chuàng)建了與端口相對應(yīng)的日志文件,在利用 WinQx操作系統(tǒng)中的VxD驅(qū)動程序截獲針對端口的每一操作請求之后,都判斷該操作請求是否為讀/寫請求,對于讀/寫請求,則將其要讀/寫的數(shù)據(jù)保存到與該端口相對應(yīng)的日志文件,然后再執(zhí)行該讀/寫請求,而對于讀/寫請求之外的其他操作請求,則不進(jìn)行處理,直接執(zhí)行該操作請求即可,因此,本發(fā)明能夠?qū)崿F(xiàn)對從端口讀取的數(shù)據(jù)和寫入端口的數(shù)據(jù)的截獲,從而有效地監(jiān)控計(jì)算機(jī)的輸入輸出數(shù)據(jù),保證數(shù)據(jù)的安全,同時(shí),本發(fā)明所采用的端口數(shù)據(jù)截獲方法完全是軟件方法,只需將該軟件加載到各待監(jiān)控計(jì)算機(jī)而無需采用任何專門的硬件截獲設(shè)備來實(shí)現(xiàn)數(shù)據(jù)截獲功能,因此,本發(fā)明大大降低了端口數(shù)據(jù)截獲的成本。另夕卜,由于本發(fā)明是在內(nèi)核模式下利用軟件方法在內(nèi)核模式下對端口進(jìn)行的訪問,因此,無需申請或釋放端口的使用權(quán)。綜上所述,本發(fā)明能在無需申請和釋放端口使用權(quán)的前提下,降低端口數(shù)據(jù)截獲的成本。本發(fā)明中,由于無需申請和釋放端口的使用權(quán)即可實(shí)現(xiàn)端口數(shù)據(jù)的截獲,因此,在截獲數(shù)據(jù)前無需申請端口的使用權(quán),在截獲數(shù)據(jù)完成之后,也無需再釋放端口的使用權(quán),相對于現(xiàn)有技術(shù),本發(fā)明截獲端口數(shù)據(jù)的速度大大提高。步驟201中,在內(nèi)核模式下創(chuàng)建與端口相對應(yīng)的日志文件之前,該方法進(jìn)一步包括確定該端口是否可用,如果是,則在內(nèi)核模式下創(chuàng)建與該端口相對應(yīng)的日志文件,否則, 不對該端口的數(shù)據(jù)進(jìn)行截獲。這里,本發(fā)明首先確定端口是否可用,如果是,則執(zhí)行本發(fā)明所述的步驟201至 205,否則,該端口不可用,則無論是否有針對該端口的訪問請求,該端口都無法讀出或?qū)懭霐?shù)據(jù),也就不會通過該端口泄密,因此,本發(fā)明不對該端口的數(shù)據(jù)進(jìn)行截獲。確定該端口是否可用的方法可以為通過端口注冊的方式。在WinQx操作系統(tǒng)中, 可以調(diào)用該操作系統(tǒng)中的VC0MM_Add_Port ()函數(shù)來注冊各種端口,也可以編制新的端口注冊函數(shù),例如HookAddPortO函數(shù)來注冊各種端口。端口注冊成功,意味著該端口可用, 則該函數(shù)返回真值(TRUE),端口注冊失敗則意味著該端口不可用,VC0MM_Add_POrt()函數(shù)返回假值(FALSE)。在步驟203判斷一個操作請求為讀/寫請求之后,該方法進(jìn)一步包括將讀/寫請求所要讀/寫的數(shù)據(jù)順序保存到緩沖區(qū);則步驟204所述的將讀/寫請求所要讀/寫的數(shù)據(jù)保存到與該端口相對應(yīng)的日志文件,為確定讀/寫請求所要讀/寫的數(shù)據(jù)保存在緩沖區(qū)中的首地址和數(shù)據(jù)長度;根據(jù)讀/寫請求所要讀/寫的數(shù)據(jù)保存在緩沖區(qū)中的首地址和數(shù)據(jù)長度,將首地址為緩沖區(qū)中的首地址、長度為數(shù)據(jù)長度的數(shù)據(jù)從緩沖區(qū)中取出,保存到與該端口相對應(yīng)的日志文件。這里,由于在端口讀或?qū)憯?shù)據(jù)的速度與數(shù)據(jù)在端口以外的線路中傳輸?shù)乃俣仁遣煌模虼?,本發(fā)明將讀/寫請求所要讀/寫的數(shù)據(jù)保存到緩沖區(qū),可以使二者的速度達(dá)到匹配,同時(shí)也可以在步驟204將數(shù)據(jù)保存到日志文件中之后,無需重新從計(jì)算機(jī)取數(shù)據(jù)送出端口以實(shí)現(xiàn)對從端口讀出數(shù)據(jù)或重新取數(shù)據(jù)送至端口以實(shí)現(xiàn)向端口寫入數(shù)據(jù),節(jié)約數(shù)據(jù)讀/寫的時(shí)間。將要讀/寫的數(shù)據(jù)保存到緩沖區(qū)的方式為順序保存,這樣,可以在確定該數(shù)據(jù)保存在緩沖區(qū)中的首地址以及數(shù)據(jù)長度之后,方便地取出數(shù)據(jù),否則,如果數(shù)據(jù)是以非順序保存的方式保存到緩沖區(qū)的,則根據(jù)數(shù)據(jù)保存的首地址和數(shù)據(jù)長度,是無法全部取出數(shù)據(jù)的, 這樣就增加了取出數(shù)據(jù)的難度,因此,本發(fā)明將數(shù)據(jù)采取順序保存的方式保存到緩沖區(qū)中, 大大方便了從緩沖區(qū)中取出數(shù)據(jù)。在步驟203判斷操作請求為讀/寫請求之后,該方法進(jìn)一步包括將根據(jù)讀/寫請求進(jìn)行數(shù)據(jù)讀/寫的時(shí)間與讀/寫請求所要讀/寫的數(shù)據(jù)相對應(yīng), 保存到與該端口相對應(yīng)的日志文件;將讀/寫請求標(biāo)志與讀/寫請求所要讀/寫的數(shù)據(jù)相對應(yīng),保存到與該端口相對應(yīng)的日志文件。這里,讀/寫請求標(biāo)志可以為讀標(biāo)志,也可以為寫標(biāo)志,其中,讀標(biāo)志意味著與該讀標(biāo)志相對應(yīng)的數(shù)據(jù)為從端口讀出的數(shù)據(jù),寫標(biāo)志意味著與該寫標(biāo)志對應(yīng)的數(shù)據(jù)為向端口寫入的數(shù)據(jù)。將根據(jù)讀/寫請求進(jìn)行數(shù)據(jù)讀/寫的時(shí)間與讀/寫請求所要讀/寫的數(shù)據(jù)相對應(yīng),保存到與該端口相對應(yīng)的日志文件,能進(jìn)一步確定讀/寫這些數(shù)據(jù)的時(shí)間,從而使本發(fā)明對端口輸入輸出數(shù)據(jù)的監(jiān)控更加有效和方便。同樣,將讀/寫請求標(biāo)志與讀/寫請求所要讀/寫的數(shù)據(jù)相對應(yīng),保存到與該端口相對應(yīng)的日志文件,也可以進(jìn)一步確定所保存的數(shù)據(jù)是從端口讀出的數(shù)據(jù)還是向端口寫入的數(shù)據(jù),從而使本發(fā)明對端口輸入輸出數(shù)據(jù)的監(jiān)控更加有效和方便。本發(fā)明中,端口可以為一個以上的端口,則步驟201中創(chuàng)建與端口相對應(yīng)的日志文件的方法為創(chuàng)建與每個端口相對應(yīng)的日志文件;步驟202中截獲針對端口的每一操作請求的方法為截獲針對每個端口的每一操作請求。這里,利用本發(fā)明進(jìn)行監(jiān)控的端口的數(shù)量可以為一個,也可以為兩個以上。如果端口的數(shù)量為兩個以上,則本發(fā)明可以同時(shí)對這些端口進(jìn)行實(shí)時(shí)監(jiān)控,當(dāng)然,也可以不同時(shí)對這些端口進(jìn)行監(jiān)控。針對每個端口,本發(fā)明在步驟201中創(chuàng)建與每個端口分別對應(yīng)的日志文件,步驟 202中截獲針對每個端口的每一操作請求,這樣,本發(fā)明就可以實(shí)現(xiàn)對一個或兩個以上的端口同時(shí)或不同時(shí)地進(jìn)行數(shù)據(jù)截獲和實(shí)時(shí)監(jiān)控。本發(fā)明中所述的端口可以為串行接口,也可以為并行接口,當(dāng)然,還可以為其他端口,例如紅外接口、藍(lán)牙接口、USB接口等。只要該端口能在WinQx操作系統(tǒng)下實(shí)現(xiàn)數(shù)據(jù)的端口輸入或端口輸出,就在本發(fā)明的保護(hù)范圍之內(nèi)。由于端口可以為串行接口,也可以為并行接口,還可以為其他接口,這些接口的驅(qū)動程序不同,這意味著對這些端口進(jìn)行讀/寫,其讀/寫速度、讀/寫請求格式都有所不同, 而且各種端口的數(shù)量也可以多于一個,因此,在步驟201中創(chuàng)建與端口對應(yīng)的日志文件之前,可以首先記錄各端口的參數(shù),形成記錄各端口參數(shù)的配置文件,然后在步驟201中創(chuàng)建與端口相應(yīng)的日志文件時(shí),即可根據(jù)該配置文件,獲得相應(yīng)端口的參數(shù)信息,從而針對不同的端口創(chuàng)建不同的日志文件。當(dāng)虛擬過濾設(shè)備在應(yīng)用層建立之后,將在WinQx操作系統(tǒng)的驅(qū)動設(shè)備管理中出現(xiàn)該虛擬過濾設(shè)備的名稱,這樣,用戶模式下,應(yīng)用層的應(yīng)用程序就可以利用該虛擬過濾設(shè)備的名稱找到該虛擬過濾設(shè)備,從而通過直接操作該虛擬過濾設(shè)備來查看日志文件中的數(shù)據(jù)了。上述各方法是通過軟件方式實(shí)現(xiàn)的,該軟件可利用微軟公司發(fā)行的Windows 98DDK驅(qū)動開發(fā)工具和Compuware公司開發(fā)的QuickVxD驅(qū)動開發(fā)工具開發(fā)得到,即利用這兩種驅(qū)動開發(fā)工具,編制相應(yīng)的VxD驅(qū)動程序,例如,可將該VxD驅(qū)動程序命名為hook, vxd, 這樣,本發(fā)明提供的WinQx操作系統(tǒng)中截獲端口數(shù)據(jù)的方法為第一步,執(zhí)行hook, vxd程序中的HookAddPort ()函數(shù),對端口進(jìn)行注冊; 注冊成功后該函數(shù)返回TRUE,意味著該端口可用,也就可以對該端口的輸入和輸出數(shù)據(jù)進(jìn)行監(jiān)控,如果注冊不成功,則該函數(shù)返回FALSE,意味著該端口不可用,也就不需要對該端口的輸入輸出數(shù)據(jù)進(jìn)行監(jiān)控。第二步,在端口注冊成功后,讀取配置文件,獲取端口的參數(shù)信息;例如,如果該端口為串行接口,則讀取配置文件后,可以獲得包括如下信息在內(nèi)的該端口的參數(shù)信息該端口的端口編號Port = COMx,其中,COM意味著該端口為串行接口, χ可以為0-9中的一個確定的整數(shù)值,表示該端口為該計(jì)算機(jī)的χ號串行接口。如果該端口為并行接口,則讀取配置文件后,可以獲得包括如下信息在內(nèi)的該端口的參數(shù)信息該端口的端口編號Port = LPTx,其中,LPT表示該端口為并行接口,χ可以為0-9中的一個確定的整數(shù)值,表示該端口為該計(jì)算機(jī)的χ號并行接口。第三步,hook, vxd程序中的端口打開函數(shù)HookPortOpenO打開端口,并創(chuàng)建與該端口相應(yīng)的日志文件log. bin ;同時(shí),在應(yīng)用層創(chuàng)建與該hook, vxd程序相對應(yīng)的虛擬過濾設(shè)備,用于與內(nèi)核模式下的本發(fā)明所提供的方法相對應(yīng),并向其他應(yīng)用程序或硬件設(shè)備提供訪問日志文件log. bin的途徑;第四步,hook, vxd程序截獲針對該端口的每一操作請求,判斷該操作請求是否為讀/寫請求,如果是,則執(zhí)行hook, vxd程序中的讀端口函數(shù)HookPortRead ()或?qū)懚丝诤瘮?shù) HookPortfeite (),將該讀/寫請求所要讀/寫的數(shù)據(jù)保存到與該端口相對應(yīng)的日志文件 log. bin中,然后執(zhí)行第五步,否則,直接執(zhí)行第五步;第五步,執(zhí)行第四步所截獲的操作請求;具體來講,如果該操作請求為讀/寫操作請求,則執(zhí)行WinQx操作系統(tǒng)中的vcomm. vxd程序中的讀/寫端口函數(shù),對端口數(shù)據(jù)進(jìn)行讀/寫;如果該操作請求為讀/寫操作請求之外的其他操作請求,則執(zhí)行Wir^x操作系統(tǒng)中的vcomm. vxd程序中的相應(yīng)函數(shù),來響應(yīng)該操作請求。本本發(fā)明所提供的端口數(shù)據(jù)截獲方案已在Windows 95/98操作系統(tǒng)下得到了驗(yàn)證,從而證明了該軟件對于Wiri^c操作系統(tǒng)的可行性。圖3為本發(fā)明提供的WinQx操作系統(tǒng)中截獲端口數(shù)據(jù)的系統(tǒng)結(jié)構(gòu)圖。該系統(tǒng)中的端口具有端口編號,如圖3所示,該系統(tǒng)包括日志創(chuàng)建與保存模塊301、過濾模塊302、操作請求執(zhí)行模塊303,其中
1
日志創(chuàng)建與保存模塊301用于,在內(nèi)核模式下,創(chuàng)建與端口相對應(yīng)的日志文件;根據(jù)讀/寫請求所針對的端口的端口編號,確定讀/寫請求所針對的端口,將過濾模塊302送來的讀/寫請求所要讀/寫的數(shù)據(jù)保存到與讀/寫請求所針對的端口相對應(yīng)的日志文件, 將讀/寫請求發(fā)送到操作請求執(zhí)行模塊303 ;過濾模塊302用于,利用Wir^x操作系統(tǒng)中的VxD驅(qū)動程序,截獲針對端口的每一操作請求,判斷操作請求是否為讀/寫請求;將讀/寫請求所要讀/寫的數(shù)據(jù)和讀/寫請求所針對的端口的端口編號發(fā)送到日志創(chuàng)建與保存模塊301 ;將讀/寫請求之外的其他操作請求發(fā)送到操作請求執(zhí)行模塊303 ;操作請求執(zhí)行模塊303用于,利用WinQx操作系統(tǒng)中的VxD驅(qū)動程序,執(zhí)行日志創(chuàng)建與保存模塊301送來的讀/寫請求;利用WinQx操作系統(tǒng)中的VxD驅(qū)動程序,執(zhí)行過濾模塊302送來的讀/寫請求之外的其他操作請求。這里,每個端口都具有自身的端口編號,該端口編號可以用于識別該端口,從而方便日志創(chuàng)建與保存模塊301來創(chuàng)建與各端口相應(yīng)的日志文件、確定包括讀/寫請求在內(nèi)的各種操作請求所針對的端口,以及實(shí)現(xiàn)對端口的讀寫。該系統(tǒng)中,過濾模塊302是利用VxD驅(qū)動程序來截獲針對端口的每一操作請求的, 操作請求執(zhí)行模塊也是利用VxD驅(qū)動程序來執(zhí)行日志創(chuàng)建與保存模塊送來的讀/寫請求, 并利用VxD驅(qū)動程序來執(zhí)行過濾模塊送來的讀/寫請求之外的其他操作請求的。其中,VxD 驅(qū)動程序?yàn)閮?nèi)核模式下的驅(qū)動程序,該程序可直接訪問端口,而無需在訪問端口前申請?jiān)摱丝诘氖褂脵?quán),在訪問結(jié)束后釋放該端口的使用權(quán),因而本發(fā)明能夠提高端口訪問的速度。由于計(jì)算機(jī)的端口多種多樣,可以為串行接口,也可以為并行接口,還可以為紅外接口、藍(lán)牙接口以及USB接口等,不同端口的數(shù)據(jù)讀/寫格式、速度不同,因此,通過端口編號可以方便地針對不同種類的端口進(jìn)行相應(yīng)的操作。例如,如果端口編號Port = C0M1,表示該端口為串行接口,且其端口編號為1,則日志創(chuàng)建與保存模塊301就需要創(chuàng)建與該串行接口相應(yīng)的日志文件,并根據(jù)過濾模塊302發(fā)送的端口編號為COMl的讀請求,確定該讀請求針對的端口為該串行接口,然后將相應(yīng)的數(shù)據(jù)保存到該串行接口對應(yīng)的日志文件中,最后由操作請求執(zhí)行模塊303執(zhí)行該讀請求,將數(shù)據(jù)讀出。包括端口編號在內(nèi)的關(guān)于端口的各種參數(shù)可以記錄在預(yù)先設(shè)定的配置文件中,這樣,通過讀取該配置文件,就可以方便地了解各端口的編號以及其他各種參數(shù),從而進(jìn)行相應(yīng)的讀/寫端口、打開端口、關(guān)閉端口等操作。該系統(tǒng)中,由于日志創(chuàng)建與保存模塊301在內(nèi)核模式下創(chuàng)建了與端口相對應(yīng)的日志文件,過濾模塊302在利用WinQx操作系統(tǒng)中的VxD驅(qū)動程序,截獲針對端口的每一操作請求之后,可以判斷被截獲的操作請求是否為讀/寫請求,對于讀/寫請求,則由日志創(chuàng)建與保存模塊301將其要讀/寫的數(shù)據(jù)保存到與該端口相對應(yīng)的日志文件,然后再由操作請求執(zhí)行模塊303利用WinQx操作系統(tǒng)中的VxD驅(qū)動程序,執(zhí)行該讀/寫請求,而對于讀/寫請求之外的其他操作請求,則直接由操作請求執(zhí)行模塊303利用WinQx操作系統(tǒng)中的VxD 驅(qū)動程序執(zhí)行該操作請求即可,因此,本發(fā)明能夠?qū)崿F(xiàn)對從端口讀取的數(shù)據(jù)和寫入端口的數(shù)據(jù)的截獲,從而有效地監(jiān)控計(jì)算機(jī)的輸入輸出數(shù)據(jù),保證數(shù)據(jù)的安全,同時(shí),本發(fā)明提出的端口數(shù)據(jù)截獲系統(tǒng)中的各模塊均為軟件模塊,只需將該軟件加載到各待監(jiān)控計(jì)算機(jī)而無需采用任何專門的硬件截獲設(shè)備來實(shí)現(xiàn)數(shù)據(jù)截獲功能,因此,本發(fā)明大大降低了端口數(shù)據(jù)截獲的成本。另外,由于該系統(tǒng)中的各模塊均為內(nèi)核模式下的軟件模塊,該系統(tǒng)是在內(nèi)核模式下用軟件方式對端口進(jìn)行訪問的,因此,無需獨(dú)占端口的使用權(quán)。綜上所述,本發(fā)明能在無需申請和釋放端口使用權(quán)的前提下,降低端口數(shù)據(jù)截獲的成本。該系統(tǒng)中,日志創(chuàng)建與保存模塊301進(jìn)一步用于,確定端口是否可用;將端口不可用的消息發(fā)送到過濾模塊302 ;則過濾模塊302進(jìn)一步用于,根據(jù)端口不可用的消息,不截獲針對該端口的操作請求。這里,日志創(chuàng)建與保存模塊301可以進(jìn)一步確定端口是否可用,對于可用的端口, 過濾模塊302可以對其輸入輸出數(shù)據(jù)進(jìn)行監(jiān)控,對于不可用的端口,即使有針對該端口的操作請求,該端口也不能輸入或輸出數(shù)據(jù),因而過濾模塊無需對該端口進(jìn)行監(jiān)控,這樣,日志創(chuàng)建與保存模塊301向過濾模塊302發(fā)送端口不可用的消息,過濾模塊302根據(jù)該端口不可用的消息,不截獲針對該端口的操作請求。該系統(tǒng)中,過濾模塊302進(jìn)一步用于,將讀/寫請求所要讀/寫的數(shù)據(jù)順序保存到緩沖區(qū);則日志創(chuàng)建與保存模塊301用于,確定讀/寫請求所要讀/寫的數(shù)據(jù)保存在緩沖區(qū)中的首地址和數(shù)據(jù)長度;根據(jù)讀/寫請求所要讀/寫的數(shù)據(jù)保存在緩沖區(qū)中的首地址和數(shù)據(jù)長度,將首地址為緩沖區(qū)中的首地址、長度為數(shù)據(jù)長度的數(shù)據(jù)從緩沖區(qū)中取出,保存到與讀/寫請求所針對的端口相對應(yīng)的日志文件。這里,緩沖區(qū)可以起到對端口讀/寫速度和線路傳輸速度的匹配作用,同時(shí),也起到數(shù)據(jù)緩存作用,節(jié)約了數(shù)據(jù)讀寫的時(shí)間,提高了計(jì)算機(jī)數(shù)據(jù)監(jiān)控的速度。緩沖區(qū)可以為內(nèi)存中的緩沖區(qū),也可以為硬盤中的某一特定存儲空間,無需另外添加硬件存儲設(shè)備,利用該計(jì)算機(jī)中的原有存儲設(shè)備即可。過濾模塊302將數(shù)據(jù)順序保存到緩沖區(qū),這樣,日志創(chuàng)建與保存模塊301就可以根據(jù)該數(shù)據(jù)在緩沖區(qū)中的首地址和數(shù)據(jù)長度,從緩沖區(qū)中取出該數(shù)據(jù),否則,日志創(chuàng)建與保存模塊301將無法根據(jù)數(shù)據(jù)在緩沖區(qū)中的首地址和數(shù)據(jù)長度將數(shù)據(jù)從緩沖區(qū)中讀出,必須采用其他更復(fù)雜的方法。該系統(tǒng)中,日志創(chuàng)建與保存模塊301進(jìn)一步用于,將根據(jù)讀/寫請求進(jìn)行數(shù)據(jù)讀/ 寫的時(shí)間與讀/寫請求所要讀/寫的數(shù)據(jù)相對應(yīng),保存到與該端口相對應(yīng)的日志文件;和/ 或,將讀/寫請求標(biāo)志與讀/寫請求所要讀/寫的數(shù)據(jù)相對應(yīng),保存到與該端口相對應(yīng)的日志文件。這里,將數(shù)據(jù)讀/寫的時(shí)間和讀/寫標(biāo)志與數(shù)據(jù)相對應(yīng),保存在日志文件中,可以進(jìn)一步這些數(shù)據(jù)是被讀出端口還是寫入端口,以及確定所讀/寫的時(shí)間,這樣就可以使本發(fā)明對端口輸入輸出數(shù)據(jù)的監(jiān)控更加有效和方便。該系統(tǒng)中的端口可以為一個以上的端口,則日志創(chuàng)建與保存模塊301用于,創(chuàng)建與每個端口相對應(yīng)的日志文件;過濾模塊302用于,截獲針對每個端口的每一操作請求。另外,本發(fā)明中的端口可以為串行接口,也可以為并行接口,還可以為其他種類的可在WinQx操作系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)的輸入或輸出的端口。該系統(tǒng)中,過濾模塊302可以根據(jù)操作請求中是否含有待寫入或待讀出的數(shù)據(jù)項(xiàng)來判斷操作請求是否為讀/寫請求,也可以根據(jù)操作請求的數(shù)據(jù)結(jié)構(gòu)來進(jìn)行判斷。只要能夠?qū)⒆x/寫請求與其他操作請求區(qū)分開來,都在本發(fā)明的保護(hù)范圍之內(nèi)。過濾模塊302只需要對讀/寫請求所涉及的數(shù)據(jù)進(jìn)行截獲,對其他的操作請求只需采用I^ss-Through方式,按照其對應(yīng)的操作請求直接進(jìn)行處理即可。由此可見,本發(fā)明具有以下優(yōu)點(diǎn)(1)本發(fā)明中,由于在內(nèi)核模式下創(chuàng)建了與端口相對應(yīng)的日志文件,在利用Wiri^c 操作系統(tǒng)中的VxD驅(qū)動程序,截獲針對端口的每一操作請求之后,都判斷該操作請求是否為讀/寫請求,對于讀/寫請求,則將其要讀/寫的數(shù)據(jù)保存到與該端口相對應(yīng)的日志文件,然后再執(zhí)行該讀/寫請求,而對于讀/寫請求之外的其他操作請求,則不進(jìn)行處理,直接執(zhí)行該操作請求即可,因此,本發(fā)明能夠?qū)崿F(xiàn)對從端口讀取的數(shù)據(jù)和寫入端口的數(shù)據(jù)的截獲,從而有效地監(jiān)控計(jì)算機(jī)的輸入輸出數(shù)據(jù),保證數(shù)據(jù)的安全,同時(shí),本發(fā)明所采用的端口數(shù)據(jù)截獲方法完全是軟件方法,只需將該軟件加載到各待監(jiān)控計(jì)算機(jī)而無需采用任何專門的硬件截獲設(shè)備來實(shí)現(xiàn)數(shù)據(jù)截獲功能,因此,本發(fā)明大大降低了端口數(shù)據(jù)截獲的成本。另夕卜,由于本發(fā)明是在內(nèi)核模式下利用軟件方法在內(nèi)核模式下對端口進(jìn)行的訪問,因此,無需申請或釋放端口的使用權(quán)。綜上所述,本發(fā)明能在無需申請和釋放端口使用權(quán)的前提下,降低端口數(shù)據(jù)截獲的成本。(2)本發(fā)明中,由于無需申請和釋放端口的使用權(quán)即可實(shí)現(xiàn)端口數(shù)據(jù)的截獲,因此,在截獲數(shù)據(jù)前無需申請端口的使用權(quán),在截獲數(shù)據(jù)完成之后,也無需再釋放端口的使用權(quán),相對于現(xiàn)有技術(shù),本發(fā)明截獲端口數(shù)據(jù)的速度大大提高。(3)本發(fā)明中,將讀/寫請求所要讀/寫的數(shù)據(jù)采取順序保存的方式保存到緩沖區(qū)中,大大方便了從緩沖區(qū)中取出數(shù)據(jù)。(4)本發(fā)明中,將讀/寫數(shù)據(jù)的時(shí)間以及讀/寫請求標(biāo)志與讀/寫請求所要讀/寫的數(shù)據(jù)相對應(yīng),保存到與該端口相對應(yīng)的日志文件,能進(jìn)一步確定讀/寫這些數(shù)據(jù)的時(shí)間, 從而使本發(fā)明對端口輸入輸出數(shù)據(jù)的監(jiān)控更加有效和方便。(5)本發(fā)明只需要在WinQx操作系統(tǒng)下安裝相應(yīng)的監(jiān)控軟件,即可實(shí)現(xiàn)對端口數(shù)據(jù)的截獲,因此,相對于現(xiàn)有技術(shù),本發(fā)明使用簡單、安全、方便。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種WinQx操作系統(tǒng)中截獲端口數(shù)據(jù)的方法,其特征在于,該方法包括 在內(nèi)核模式下,創(chuàng)建與端口相對應(yīng)的日志文件;利用WinQx操作系統(tǒng)中的VxD驅(qū)動程序,截獲針對端口的每一操作請求,判斷所述操作請求是否為讀/寫請求,如果是,則將所述讀/寫請求所要讀/寫的數(shù)據(jù)保存到與該端口相對應(yīng)的日志文件,然后執(zhí)行所述讀/寫請求;否則,執(zhí)行所述操作請求。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在內(nèi)核模式下,創(chuàng)建與端口相對應(yīng)的日志文件之前,該方法進(jìn)一步包括確定所述端口是否可用,如果是,則在內(nèi)核模式下創(chuàng)建與該端口相對應(yīng)的日志文件,否則,不對該端口的數(shù)據(jù)進(jìn)行截獲。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,在判斷所述操作請求為讀/寫請求之后, 該方法進(jìn)一步包括將所述讀/寫請求所要讀/寫的數(shù)據(jù)順序保存到緩沖區(qū);則將所述讀/寫請求所要讀/寫的數(shù)據(jù)保存到與該端口相對應(yīng)的日志文件,為 確定所述讀/寫請求所要讀/寫的數(shù)據(jù)保存在所述緩沖區(qū)中的首地址和數(shù)據(jù)長度; 根據(jù)所述讀/寫請求所要讀/寫的數(shù)據(jù)保存在所述緩沖區(qū)中的首地址和數(shù)據(jù)長度,將首地址為所述緩沖區(qū)中的首地址、長度為所述數(shù)據(jù)長度的數(shù)據(jù)從所述緩沖區(qū)中取出,保存到與該端口相對應(yīng)的日志文件。
4.根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,在判斷所述操作請求為讀/寫請求之后,該方法進(jìn)一步包括將根據(jù)所述讀/寫請求進(jìn)行數(shù)據(jù)讀/寫的時(shí)間與所述讀/寫請求所要讀/寫的數(shù)據(jù)相對應(yīng),保存到與該端口相對應(yīng)的日志文件; 和/或,將讀/寫請求標(biāo)志與所述讀/寫請求所要讀/寫的數(shù)據(jù)相對應(yīng),保存到與該端口相對應(yīng)的日志文件。
5.根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,所述端口為一個以上的端口,則 所述創(chuàng)建與端口相對應(yīng)的日志文件為創(chuàng)建與每個端口相對應(yīng)的日志文件;所述截獲針對端口的每一操作請求為截獲針對每個端口的每一操作請求。
6.根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,所述端口為串行接口,和/或,所述端口為并行接口。
7.—種WinQx操作系統(tǒng)中截獲端口數(shù)據(jù)的系統(tǒng),所述端口具有端口編號,其特征在于, 該系統(tǒng)包括日志創(chuàng)建與保存模塊、過濾模塊、操作請求執(zhí)行模塊,其中所述日志創(chuàng)建與保存模塊用于,在內(nèi)核模式下,創(chuàng)建與端口相對應(yīng)的日志文件;根據(jù)所述讀/寫請求所針對的端口的端口編號,確定所述讀/寫請求所針對的端口,將所述過濾模塊送來的讀/寫請求所要讀/寫的數(shù)據(jù)保存到與所述讀/寫請求所針對的端口相對應(yīng)的日志文件,將所述讀/寫請求發(fā)送到所述操作請求執(zhí)行模塊;所述過濾模塊用于,利用Win9x操作系統(tǒng)中的VxD驅(qū)動程序,截獲針對端口的每一操作請求,判斷所述操作請求是否為讀/寫請求;將讀/寫請求所要讀/寫的數(shù)據(jù)和所述讀/寫請求所針對的端口的端口編號發(fā)送到所述日志創(chuàng)建與保存模塊;將讀/寫請求之外的其他操作請求發(fā)送到所述操作請求執(zhí)行模塊;所述操作請求執(zhí)行模塊用于,利用Win9x操作系統(tǒng)中的VxD驅(qū)動程序,執(zhí)行所述日志創(chuàng)建與保存模塊送來的所述讀/寫請求;利用Win9x操作系統(tǒng)中的VxD驅(qū)動程序,執(zhí)行所述過濾模塊送來的所述讀/寫請求之外的其他操作請求。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述日志創(chuàng)建與保存模塊進(jìn)一步用于,確定所述端口是否可用;將端口不可用的消息發(fā)送到所述過濾模塊;則所述過濾模塊進(jìn)一步用于,根據(jù)所述端口不可用的消息,不截獲針對該端口的操作請求。
9.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述過濾模塊進(jìn)一步用于,將所述讀/寫請求所要讀/寫的數(shù)據(jù)順序保存到緩沖區(qū); 則所述日志創(chuàng)建與保存模塊用于,確定所述讀/寫請求所要讀/寫的數(shù)據(jù)保存在所述緩沖區(qū)中的首地址和數(shù)據(jù)長度;根據(jù)所述讀/寫請求所要讀/寫的數(shù)據(jù)保存在所述緩沖區(qū)中的首地址和數(shù)據(jù)長度,將首地址為所述緩沖區(qū)中的首地址、長度為所述數(shù)據(jù)長度的數(shù)據(jù)從所述緩沖區(qū)中取出,保存到與所述讀/寫請求所針對的端口相對應(yīng)的日志文件。
10.根據(jù)權(quán)利要求7、8或9所述的系統(tǒng),其特征在于,所述日志創(chuàng)建與保存模塊進(jìn)一步用于,將根據(jù)所述讀/寫請求進(jìn)行數(shù)據(jù)讀/寫的時(shí)間與所述讀/寫請求所要讀/寫的數(shù)據(jù)相對應(yīng),保存到與該端口相對應(yīng)的日志文件;和/或,將讀/寫請求標(biāo)志與所述讀/寫請求所要讀/寫的數(shù)據(jù)相對應(yīng),保存到與該端口相對應(yīng)的日志文件。
11.根據(jù)權(quán)利要求7、8或9所述的系統(tǒng),其特征在于,所述端口為一個以上的端口,則 所述日志創(chuàng)建與保存模塊用于,創(chuàng)建與每個端口相對應(yīng)的日志文件;所述過濾模塊用于,截獲針對每個端口的每一操作請求。
12.根據(jù)權(quán)利要求7、8或9所述的系統(tǒng),其特征在于,所述端口為串行接口,和/或,所述端口為并行接口。
全文摘要
本發(fā)明涉及一種Win9x操作系統(tǒng)中截獲端口數(shù)據(jù)的方法和系統(tǒng)。該方法包括在內(nèi)核模式下,創(chuàng)建與端口相對應(yīng)的日志文件;利用Win9x操作系統(tǒng)中的VxD驅(qū)動程序,截獲針對端口的每一操作請求,判斷所述操作請求是否為讀/寫請求,如果是,則將所述讀/寫請求所要讀/寫的數(shù)據(jù)保存到與該端口相對應(yīng)的日志文件,然后執(zhí)行所述讀/寫請求;否則,執(zhí)行所述操作請求。利用本發(fā)明的技術(shù)方案,能在無需申請和釋放端口使用權(quán)的前提下,降低端口數(shù)據(jù)截獲的成本。
文檔編號G06F11/14GK102479117SQ201010569720
公開日2012年5月30日 申請日期2010年11月26日 優(yōu)先權(quán)日2010年11月26日
發(fā)明者廖峰, 張國喜, 王乾, 程雙全, 胡金輝, 陳懿, 陳磊, 雷萌, 高志剛 申請人:航天信息股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
资溪县| 湘潭县| 林甸县| 蕲春县| 定边县| 满洲里市| 巢湖市| 孝昌县| 和林格尔县| 陈巴尔虎旗| 永泰县| 阿合奇县| 星子县| 晋城| 荣成市| 大同市| 孟津县| 克山县| 盐源县| 鄯善县| 宣城市| 峡江县| 昆山市| 芒康县| 鱼台县| 钟祥市| 章丘市| 闽侯县| 松潘县| 如东县| 益阳市| 陇西县| 章丘市| 桓台县| 阿合奇县| 门源| 汽车| 甘孜县| 文安县| 常德市| 上栗县|