專利名稱:硬盤數(shù)據(jù)加密備份及還原方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于保障數(shù)據(jù)安全性的硬盤數(shù)據(jù)加密備份及還原方法。
背景技術(shù):
目前,電腦病毒和網(wǎng)上黑客的危害性越來(lái)越大,往往直接威脅到計(jì)算機(jī)用戶的數(shù)據(jù)安全和正常的使用。所以電腦用戶對(duì)計(jì)算機(jī)及計(jì)算機(jī)數(shù)據(jù)、特別是硬盤數(shù)據(jù)的安全性要求也越來(lái)越高。于是出現(xiàn)了殺毒軟件和防火墻等計(jì)算機(jī)安全軟件。但是,到目前為止,尚未有理論模型表明殺毒軟件可以對(duì)清除所有的未知病毒或黑客程序,因此殺毒軟件雖然可以清除大部分病毒,但是它有一定的滯后性,用戶還需要經(jīng)常到網(wǎng)站上升級(jí)病毒代碼,升級(jí)不便,并且上網(wǎng)時(shí)還有可能感染新的病毒或成為黑客攻擊的對(duì)象;而且,不能保證清除所有病毒及黑客程序。
而防火墻對(duì)于網(wǎng)絡(luò)的安全有一定的作用,但也不是十分可靠(特別是對(duì)防范黑客)。而且殺毒軟件、防火墻軟件安裝后一般都有實(shí)時(shí)監(jiān)控程序在系統(tǒng)中運(yùn)行,會(huì)占用一部分的系統(tǒng)資源,降低計(jì)算機(jī)的性能。并且因?yàn)橥窍到y(tǒng)監(jiān)控程序,有時(shí)還會(huì)有兼容性的問(wèn)題,會(huì)與其它軟件發(fā)生沖突并造成系統(tǒng)癱瘓等更嚴(yán)重的后果(例如將KV3000、瑞星、KILL和NORTON等殺病毒軟件安裝在同一臺(tái)計(jì)算機(jī)上,就會(huì)使計(jì)算機(jī)經(jīng)常藍(lán)屏)。同時(shí)這兩類軟件對(duì)用戶的誤操作造成的損失或系統(tǒng)崩潰造成的文件丟失是沒(méi)有辦法來(lái)避免的。
所以,既提高計(jì)算機(jī)安全性、又不影響計(jì)算機(jī)性能的辦法之一就是把系統(tǒng)和重要數(shù)據(jù)進(jìn)行備份。現(xiàn)有的備份技術(shù)主要有以下幾種一種方法是,將數(shù)據(jù)備份到一個(gè)普通文件中(如Symentic公司的Ghost),該方法的缺點(diǎn)是普通文件不安全,用戶可能因?yàn)檎`操作而將備份文件刪除,或者備份文件被一些惡意的程序破壞。所以通常需要把備份文件轉(zhuǎn)移到其他備份介質(zhì)(CDRW或磁帶)以保證安全。另一種方法是,把備份數(shù)據(jù)寫到隱藏分區(qū)中(如PowerQuest公司的Drive image)。還有一種方法是,在硬盤上創(chuàng)建一個(gè)鏡向分區(qū),把要備份的分區(qū)的數(shù)據(jù)在鏡向分區(qū)中作一個(gè)備份。該方法的缺點(diǎn)是一次只能有一個(gè)鏡向備份,如果用戶希望備份多個(gè)分區(qū),那么通過(guò)這種方法是不能實(shí)現(xiàn)的。
上述幾種方法共同的缺點(diǎn)就是必須在Dos環(huán)境下實(shí)現(xiàn)。用戶備份數(shù)據(jù)首先需要多次重新啟動(dòng)計(jì)算機(jī),切換操作系統(tǒng)。這樣做會(huì)給用戶操作帶來(lái)很多不便,而且系統(tǒng)切換浪費(fèi)大量時(shí)間。特別是在從Windows系統(tǒng)到DOS系統(tǒng)切換時(shí),需要中止Windows系統(tǒng)中其他正常運(yùn)行的程序,如果用戶正在運(yùn)行非常重要的應(yīng)用程序、而該程序不能中止,則無(wú)法實(shí)現(xiàn)備份。同時(shí)這些軟件主要的功能是分區(qū)備份,但對(duì)于用戶來(lái)說(shuō)最常用的功能是將自己重要的數(shù)據(jù)備份,而不是整個(gè)分區(qū)甚至整個(gè)硬盤。所以以上方法都有一定的局限性。
發(fā)明內(nèi)容
本發(fā)明的目的在于一種安全性能高、使用方便的硬盤數(shù)據(jù)加密備份及還原方法,使備份在本機(jī)硬盤中的數(shù)據(jù)安全可靠,用戶可以非常方便地在Windows操作系統(tǒng)下進(jìn)行數(shù)據(jù)備份及還原。
本發(fā)明的技術(shù)方案如下根據(jù)本發(fā)明的一種硬盤數(shù)據(jù)隱藏加密備份及還原方法,包括以下步驟(1)分區(qū)設(shè)置步驟,在硬盤內(nèi)設(shè)置一個(gè)分區(qū);(2)分區(qū)隱藏步驟,隱藏該分區(qū),使得該分區(qū)及其數(shù)據(jù)不能被操作系統(tǒng)或其他基于文件系統(tǒng)的程序訪問(wèn);(3)數(shù)據(jù)備份步驟,將用戶指定的需備份的硬盤數(shù)據(jù)存儲(chǔ)在該分區(qū);(4)數(shù)據(jù)還原步驟,將隱藏分區(qū)中的數(shù)據(jù)還原到可被訪問(wèn)的硬盤分區(qū)中。
在本發(fā)明中所述的分區(qū)設(shè)置步驟,可由用戶根據(jù)需備份的數(shù)據(jù)量設(shè)置該隱藏分區(qū)的大小。這使得用于備份數(shù)據(jù)的分區(qū)之容量得以成分利用。
在本發(fā)明中,所述的分區(qū)隱藏步驟可以是在硬盤分區(qū)表中為該分區(qū)定義一個(gè)特定的類型值,該類型值不同于其它可被用戶訪問(wèn)的分區(qū)之類型值。
在本發(fā)明中,所述的數(shù)據(jù)備份步驟可以是將用戶指定的需備份數(shù)據(jù)以扇區(qū)的形式寫入該隱藏分區(qū)。
在本發(fā)明中,所述的數(shù)據(jù)備份步驟還可進(jìn)一步包括以下步驟(1)由用戶指定需備份的文件或文件目錄;(2)將備份節(jié)點(diǎn)信息寫入該備份數(shù)據(jù)區(qū)的第一區(qū)域,每一個(gè)備份節(jié)點(diǎn)含有若干個(gè)備份數(shù)據(jù)文件,該備份節(jié)點(diǎn)信息表示備份文件的基本信息,包括關(guān)于該備份節(jié)點(diǎn)的文件類型、名稱、偏移位置、長(zhǎng)度、創(chuàng)建時(shí)間、備份文件的數(shù)據(jù)和屬性在該備份節(jié)點(diǎn)中的長(zhǎng)度;(3)將備份數(shù)據(jù)文件以扇區(qū)的形式寫入該備份數(shù)據(jù)區(qū)的第二區(qū)域;(4)將備份文件的屬性信息寫入該備份文件的第三區(qū)域,其中包括備份文件的文件名、長(zhǎng)度、創(chuàng)建時(shí)間、訪問(wèn)時(shí)間及其在備份數(shù)據(jù)區(qū)中的相對(duì)位置和長(zhǎng)度。
在本發(fā)明中,在將備份數(shù)據(jù)文件寫入隱藏分區(qū)之前,可先將備份數(shù)據(jù)文件進(jìn)行壓縮。
在本發(fā)明所述的數(shù)據(jù)備份步驟和數(shù)據(jù)還原步驟中,對(duì)隱藏分區(qū)的扇區(qū)進(jìn)行讀寫訪問(wèn)可以是通過(guò)一套對(duì)硬盤物理扇區(qū)操作的接口函數(shù)實(shí)現(xiàn)的,該接口函數(shù)是根據(jù)Windows操作系統(tǒng)的硬盤訪問(wèn)接口而建立的。
在本發(fā)明中所述的數(shù)據(jù)還原步驟可以是將隱藏分區(qū)中的備份數(shù)據(jù)以扇區(qū)形式讀出,再將所讀取的數(shù)據(jù)還原為所備份的數(shù)據(jù)文件。
在本發(fā)明中,所述的數(shù)據(jù)備份步驟及數(shù)據(jù)還原步驟可以是利用Windows操作系統(tǒng)下的虛擬設(shè)備驅(qū)動(dòng)程序?qū)崿F(xiàn)的。
在本發(fā)明的一個(gè)實(shí)施例中,所述的Windows操作系統(tǒng)包括Windows 9x系統(tǒng)(例如Windows 95及Windows 98系統(tǒng)),所述的虛擬設(shè)備驅(qū)動(dòng)程序是由Windows 9x系統(tǒng)的虛擬設(shè)備驅(qū)動(dòng)程序的開(kāi)發(fā)工具實(shí)現(xiàn)的,包括以下步驟(1)保存當(dāng)前虛擬機(jī)的寄存器狀態(tài);(2)轉(zhuǎn)入虛擬86方式;(3)調(diào)用INT 13中斷;(4)退出虛擬86方式;(5)恢復(fù)當(dāng)前虛擬機(jī)的寄存器狀態(tài)。
在本發(fā)明中,所述的Windows操作系統(tǒng)可包括Windows 2000操作系統(tǒng)和Windows XP操作系統(tǒng),所述的虛擬設(shè)備驅(qū)動(dòng)程序可以是由Windows 2000操作系統(tǒng)或Windows XP操作系統(tǒng)提供的SYS格式的驅(qū)動(dòng)程序。
在本發(fā)明中,所述的方法可以是在Windows操作系統(tǒng)下實(shí)現(xiàn)的。在本發(fā)明的實(shí)施例中,本發(fā)明是通過(guò)Windows操作系統(tǒng)下的一個(gè)軟件實(shí)現(xiàn)的。
利用本發(fā)明,用戶可以在Windows操作系統(tǒng)(如Windows98,Windows 2000,Windows XP等操作系統(tǒng))下,以盡量短的時(shí)間、盡量少的空間占用和盡量簡(jiǎn)單的操作過(guò)程,直接將重要數(shù)據(jù)備份到很安全的隱藏分區(qū)中,同時(shí)保證系統(tǒng)中同時(shí)運(yùn)行的其他程序不受該備份過(guò)程的影響,用戶不需要中止其他正在運(yùn)行的程序。
利用本發(fā)明,可以在Windows下實(shí)現(xiàn)隱藏分區(qū)的創(chuàng)建、刪除等管理;在Windows操作系統(tǒng)中可以直接將用戶的數(shù)據(jù)備份存放在隱藏分區(qū),或?qū)㈦[藏分區(qū)中的備份數(shù)據(jù)還原。所有這些功能在Windows下的實(shí)現(xiàn)可以大大的方便用戶,使用戶可以在工作的間隙輕松地完成對(duì)重要數(shù)據(jù)的備份。
本發(fā)明是深入系統(tǒng)內(nèi)核、可基于Windows系統(tǒng)開(kāi)發(fā)的深層次專業(yè)數(shù)據(jù)安全保護(hù)工具,它可在硬盤上利用獨(dú)有的方式開(kāi)辟一個(gè)非常安全的隱藏分區(qū),用于備份數(shù)據(jù)。由于通常病毒和黑客程序都是基于文件系統(tǒng)的,因此在文件系統(tǒng)上計(jì)算機(jī)數(shù)據(jù)的安全是很難保證的。而本發(fā)明所設(shè)置的隱藏分區(qū)的操作低于文件系統(tǒng)這一層,使得Windows系統(tǒng)不能識(shí)別該隱藏分區(qū),一般的程序也不能訪問(wèn)到該隱藏分區(qū),所以,病毒和黑客程序也通常不能訪問(wèn)到該隱藏分區(qū),即使能夠訪問(wèn)到,它也不知道隱藏分區(qū)中的數(shù)據(jù)格式,這樣就可以保證隱藏分區(qū)中數(shù)據(jù)的安全。所備份的數(shù)據(jù)不會(huì)受到病毒、系統(tǒng)崩潰、程序沖突的影響,只要硬盤不是物理?yè)p壞,隱藏分區(qū)中的所有信息就可安全還原。用戶可任意選擇保護(hù)硬盤上的操作系統(tǒng)、重要目錄或文件,可對(duì)硬盤進(jìn)行任意設(shè)置、任意修改、任意格式化或重新分區(qū)而不會(huì)影響備份分區(qū)。
由于目前計(jì)算機(jī)的硬盤通常具有很大的容量,用戶可以根據(jù)自己要備份數(shù)據(jù)的多少創(chuàng)建一個(gè)大小合適的隱藏分區(qū),用隱藏分區(qū)來(lái)備份重要數(shù)據(jù),這樣就可以不用購(gòu)買其他存儲(chǔ)設(shè)備,從而為用戶節(jié)省有關(guān)的費(fèi)用。
利用本發(fā)明可以實(shí)現(xiàn)高速高效的數(shù)據(jù)備份軟件。例如DMA66雙硬盤間備份時(shí)可達(dá)每分鐘200兆字節(jié),數(shù)據(jù)還原時(shí)可以達(dá)到接近每分鐘400兆的速度。本發(fā)明之軟件運(yùn)行時(shí)間快、操作方便。用戶備份時(shí)不用重新啟動(dòng)計(jì)算機(jī)、切換到DOS下;也就節(jié)省的啟動(dòng)電腦的時(shí)間,從需要幾分鐘、甚至十幾分鐘的備份時(shí)間變?yōu)槎潭痰膸资敕N!同時(shí)這種備份是隨時(shí)可以進(jìn)行,隨時(shí)可以結(jié)束的,備份的同時(shí),用戶還可以用電腦進(jìn)行其他工作,備份不會(huì)干擾用戶運(yùn)行的其他重要程序,更不會(huì)中止這些程序的運(yùn)行。此外,用戶也不用在DOS下進(jìn)行任何操作,省去學(xué)習(xí)和熟悉DOS操作的的麻煩。因此十分方便。
以下結(jié)合附圖進(jìn)一步本發(fā)明的實(shí)施例。
圖1是本發(fā)明之方法的總流程圖;圖2是本發(fā)明之實(shí)施例的數(shù)據(jù)備份方法之流程圖;圖3是本發(fā)明之實(shí)施例的數(shù)據(jù)備份方法之程序界面圖;圖4是本發(fā)明之實(shí)施例的數(shù)據(jù)還原方法之流程圖;圖5是本發(fā)明之實(shí)施例的數(shù)據(jù)還原方法之程序界面圖。
如圖1所示,在Windows操作系統(tǒng)下,用戶可隨時(shí)調(diào)用實(shí)現(xiàn)本發(fā)明之方法的程序,進(jìn)入相應(yīng)的用戶界面。用戶可以根據(jù)需要對(duì)隱藏分區(qū)進(jìn)行管理,通過(guò)虛擬設(shè)備驅(qū)動(dòng)程序訪問(wèn)硬盤的參數(shù)和物理扇區(qū),結(jié)合分區(qū)表操作模塊,創(chuàng)建一個(gè)隱藏分區(qū),從而在硬盤上構(gòu)成一個(gè)數(shù)據(jù)安全區(qū)域用于備份數(shù)據(jù)。用戶也可以刪除該隱藏分區(qū),并可以調(diào)整該隱藏分區(qū)的大小而無(wú)損備份數(shù)據(jù)。
在本發(fā)明中,對(duì)硬盤分區(qū)表和隱藏分區(qū)的全部訪問(wèn)操作是在硬盤的物理扇區(qū)這一層。實(shí)現(xiàn)方法與操作系統(tǒng)密切相關(guān)。在本發(fā)明的實(shí)施例中,實(shí)現(xiàn)了在Windows系統(tǒng)下對(duì)硬盤物理扇區(qū)的訪問(wèn),具體說(shuō)明如下。
在Dos系統(tǒng)下PC機(jī)上存取硬盤的接口有三層,它們分別是操作系統(tǒng)層、基本輸入輸出系統(tǒng)(BIOS)層和輸入輸出端口(I/O Port)層。操作系統(tǒng)層提供各種高級(jí)的功能調(diào)用,其中關(guān)于硬盤存取的功能包括生成文件、刪除文件、更改文件名、寫入和讀取文件等。在這層中也可以對(duì)邏輯磁盤分區(qū)的讀寫。但是在該層中不能讀取硬盤分區(qū)表。操作系統(tǒng)層對(duì)磁盤的操作非常容易,但是功能有限。BIOS(Basic Input/Output System)中提供相當(dāng)完備的磁盤服務(wù),如讀寫扇區(qū)、格式化單一磁道等。在這一層中沒(méi)有文件的概念,磁盤的讀取是與扇區(qū)為單位的,所以速度比操作系統(tǒng)層快很多。I/O Port層是很低級(jí)的接口,它直接給控制卡下命令,所以功能非常強(qiáng)大,并且讀取速度最快。但是它與控制卡連接緊密,如果換用另一種類型的控制卡,那么它就沒(méi)有作用。Windows9x中,仍有DOS虛擬機(jī)環(huán)境,支持DOS程序運(yùn)行,這些程序可以使用BIOS/DOS中斷對(duì)硬盤訪問(wèn),但已不能使用ATAPI接口訪問(wèn)硬盤。據(jù)我們分析發(fā)現(xiàn),DOS虛擬機(jī)提供了DPMI(DOS保護(hù)模式接口),原DOS程序在使用BIOS中斷INT 13或DOS中斷INT 21時(shí),實(shí)際是通過(guò)DPMI接口對(duì)硬盤進(jìn)行訪問(wèn)的,但這些訪問(wèn)受Windows保護(hù)的限制,不能對(duì)所有的硬盤扇區(qū)的數(shù)據(jù)進(jìn)行讀寫;同時(shí)為了安全,ATAPI訪問(wèn)已被禁止使用了。而32位Windows程序只能在Windows 9x及Windows 2000/XP操作系統(tǒng)中運(yùn)行,更因安全原因,而被禁止使用上述硬盤訪問(wèn)接口對(duì)硬盤進(jìn)行訪問(wèn)。不能使用上述方式對(duì)硬盤進(jìn)行直接訪問(wèn),因此,很多備份軟件是DOS程序,或者主要程序是DOS程序,在DOS系統(tǒng)下運(yùn)行。在本發(fā)明的實(shí)施例中,通過(guò)采用設(shè)備驅(qū)動(dòng)程序可以實(shí)現(xiàn)直接對(duì)硬盤之物理扇區(qū)的訪問(wèn)。
Windows是一個(gè)運(yùn)行在最高級(jí)特權(quán),第0層級(jí)別的多線程操作系統(tǒng)。所有的應(yīng)用程序都運(yùn)行在最低級(jí)特權(quán),第3層級(jí)別上。這樣就限制了應(yīng)用程序?qū)ο到y(tǒng)的操作。它們不能使用CPU特權(quán)指令,不能直接訪問(wèn)I/O端口,硬盤的物理扇區(qū)等等。系統(tǒng)的控制實(shí)權(quán)掌握在設(shè)備驅(qū)動(dòng)程序手中。Windows9x是一個(gè)兼容性非常好的操作系統(tǒng),它可以運(yùn)行絕大多數(shù)Dos程序,但是因?yàn)镈os程序和Windows程序有本質(zhì)的不同,Dos程序認(rèn)為它們擁有系統(tǒng)的一切鍵盤,CPU,內(nèi)存,硬盤等等。Dos程序不知道怎樣和其他程序合作,而Windows程序是多任務(wù)合作系統(tǒng)。也就是每個(gè)Windows程序都必須通過(guò)GetMessage或PeekMessage來(lái)和其他程序進(jìn)行交流。為了解決這個(gè)問(wèn)題,Windows9x在一個(gè)8086虛擬機(jī)上運(yùn)行所有的Dos程序,而在另一個(gè)叫做系統(tǒng)虛擬機(jī)的虛擬機(jī)上運(yùn)行其他所有的Windows程序。Windows9x負(fù)責(zé)把CPU運(yùn)算時(shí)間輪流的分給每個(gè)虛擬機(jī)。虛擬機(jī)是被軟件創(chuàng)建的一個(gè)假象。一個(gè)虛擬機(jī)和在它上面運(yùn)行的程序交互,就像這個(gè)程序是在真正的機(jī)器上運(yùn)行一樣。這樣,一個(gè)程序不知道也不關(guān)心自己是否是在虛擬機(jī)上運(yùn)行。只要虛擬機(jī)準(zhǔn)確的像一個(gè)真的機(jī)器一樣響應(yīng)程序,它就可以被當(dāng)成是一個(gè)真正的機(jī)器。
Windows 9x下設(shè)備驅(qū)動(dòng)程序的格式為VxD(Virtual X Driver)。x代表各種設(shè)備的名字,如虛擬鍵盤驅(qū)動(dòng)程序(vkd),虛擬鼠標(biāo)驅(qū)動(dòng)程序(vmd)等等。VxD程序是硬件成功初始化的途徑。VxD程序通常虛擬一些硬件設(shè)備,所以,例如當(dāng)一個(gè)Dos程序認(rèn)為它在同鍵盤通訊時(shí),實(shí)際是虛擬鍵盤驅(qū)動(dòng)程序在和Dos程序通訊。一個(gè)VxD程序通??刂普嬲挠布O(shè)備并對(duì)該設(shè)備在各個(gè)虛擬機(jī)之間的共享進(jìn)行管理。盡管如此,并不是說(shuō)每個(gè)VxD程序必須和一個(gè)硬件設(shè)備相連。雖然VxD程序是用來(lái)虛擬硬件設(shè)備的,但是也可以把VxD程序看作是在第0級(jí)別的dll。例如,如果需要做一些只有在第0級(jí)別才能做的工作,就可以設(shè)計(jì)一個(gè)VxD程序來(lái)完成這個(gè)工作。這樣,由于此VxD程序并沒(méi)有虛擬任何設(shè)備,可以把它僅僅看作是用戶程序的擴(kuò)展。
VxD的開(kāi)發(fā)工具可以采用Windows 9x DDK或VToolsD。它的實(shí)現(xiàn)步驟大致如下1.保存當(dāng)前虛擬機(jī)的寄存器狀態(tài)2.使用Begin_Nest_V86_Exec轉(zhuǎn)入虛擬86(V86)方式
3.使用Exec_Int(0x13)來(lái)調(diào)用int 13中斷。
4.使用End_Nest_Exec()退出虛擬86方式5.恢復(fù)當(dāng)前虛擬機(jī)的寄存器狀態(tài)VxD程序是Windows 9x特有的驅(qū)動(dòng)程序,它在Windows NT、2000下不能運(yùn)行。它能夠獲得CPU的0級(jí)權(quán)限,并能夠直接訪問(wèn)計(jì)算機(jī)硬件。在WindowsNT/2000/XP平臺(tái)上的設(shè)備驅(qū)動(dòng)程序?yàn)镾YS格式,它的原理和目的與VxD類似,都是為了獲得CPU的最高級(jí)權(quán)限,并直接訪問(wèn)計(jì)算機(jī)硬件。
運(yùn)行實(shí)施本發(fā)明之方法的軟件,需要同時(shí)運(yùn)行在Windows9x和Windows2000/XP下,所以VxD和SYS格式的驅(qū)動(dòng)程序都需要。在windows9x下可以按上述方法開(kāi)發(fā)一個(gè)VxD驅(qū)動(dòng)程序,而Windows2000/XP操作系統(tǒng)已經(jīng)提供一個(gè)可以訪問(wèn)硬盤參數(shù)和物理扇區(qū)的驅(qū)動(dòng)程序。
本發(fā)明以在Windows的設(shè)備驅(qū)動(dòng)程序作為基礎(chǔ),建立了一組對(duì)隱藏分區(qū)操作的接口函數(shù),這些函數(shù)用于得到硬盤的參數(shù)(硬盤扇區(qū)的總大小、物理磁頭數(shù)、物理柱面數(shù)、物理扇區(qū)數(shù)、邏輯磁頭數(shù)、邏輯柱面數(shù)、邏輯扇區(qū)數(shù)等)以及提供訪問(wèn)(讀寫)硬盤物理扇區(qū)功能。通過(guò)這組函數(shù)我們可以實(shí)現(xiàn)對(duì)隱藏分區(qū)中的備份文件存取的功能,從而建立了一套完整的Windows開(kāi)發(fā)環(huán)境,直接對(duì)隱藏分區(qū)及其備份文件進(jìn)行操作。
在本發(fā)明中,實(shí)現(xiàn)備份數(shù)據(jù)區(qū)的隱藏是保證備份數(shù)據(jù)安全性的關(guān)鍵,這樣可以禁止任何基于文件系統(tǒng)的訪問(wèn)和基于操作系統(tǒng)的訪問(wèn),從而防止因用戶誤操作或病毒導(dǎo)致數(shù)據(jù)破壞。
隱藏分區(qū)實(shí)現(xiàn)的原理是在硬盤的0磁道0柱面1扇區(qū)位置是MBR(MAIN BOOT RECORD),即主引導(dǎo)記錄區(qū),它包括硬盤引導(dǎo)程序和分區(qū)表。引導(dǎo)程序完成的任務(wù)就是檢查分區(qū)表是否正確以及確定哪個(gè)分區(qū)可以被操作系統(tǒng)引導(dǎo)。分區(qū)表位于本扇區(qū)的最末端,在MBR的偏移位置0x1BE,以80H或00H為開(kāi)始標(biāo)志,共0x40字節(jié),每0x10字節(jié)記錄分區(qū)的信息,共可記錄四個(gè)分區(qū)的信息。后續(xù)的2個(gè)字節(jié)的內(nèi)容為55AAH,表示MBR的數(shù)據(jù)是合法可用的。值得一提的是,MBR是由分區(qū)程序(例如DOS的FDISK.EXE)產(chǎn)生的,它不依賴于任何操作系統(tǒng),而且硬盤引導(dǎo)程序也不是一成不變的,可以由用戶進(jìn)行改變,只要它能完成前述的任務(wù)。這也是為什么能實(shí)現(xiàn)多系統(tǒng)啟動(dòng)的原因。在MBR中最多可以記錄4個(gè)分區(qū),為了突破這個(gè)限制,擴(kuò)展分區(qū)的概念被引入。用戶可以在MBR中創(chuàng)建一個(gè)擴(kuò)展分區(qū)(被稱為主擴(kuò)展分區(qū)),在該主擴(kuò)展分區(qū)中又可以創(chuàng)建再擴(kuò)展分區(qū)和邏輯分區(qū),(它們的存儲(chǔ)格式于MBR中分區(qū)項(xiàng)相同),而再擴(kuò)展分區(qū)又可以繼續(xù)劃分下去。這樣就可以構(gòu)造多于4個(gè)分區(qū)的分區(qū)表。操作系統(tǒng)是通過(guò)分區(qū)表訪問(wèn)硬盤的。通過(guò)分析分區(qū)表結(jié)構(gòu),可以實(shí)現(xiàn)分區(qū)表的創(chuàng)建、刪除、修改、提取、還原等操作。在分區(qū)表的每一項(xiàng)中的0x10個(gè)字節(jié)中有一個(gè)字節(jié)表示分區(qū)的類型,如FAT32的類型值是0xb,NTFS類型值是0x7。
在本發(fā)明中定義一個(gè)與當(dāng)前所有分區(qū)類型值不同的數(shù)值為一個(gè)分區(qū)的類型值,因此,操作系統(tǒng)就不能識(shí)別該分區(qū),這樣就可以定義出一個(gè)特殊的分區(qū),作為一個(gè)對(duì)操作系統(tǒng)隱藏的分區(qū),并且可以對(duì)該隱藏分區(qū)進(jìn)行操作。
在實(shí)現(xiàn)隱藏分區(qū)創(chuàng)建、刪除等操作的同時(shí),本發(fā)明定義隱藏分區(qū)中數(shù)據(jù)的儲(chǔ)存方式,即它的文件系統(tǒng)結(jié)構(gòu),并且實(shí)現(xiàn)操作隱藏分區(qū)中數(shù)據(jù)的全部方法,這樣,本發(fā)明就實(shí)現(xiàn)了對(duì)隱藏分區(qū)進(jìn)行管理的技術(shù)。
隱藏分區(qū)中的數(shù)據(jù)的基本結(jié)構(gòu)如下1、在隱藏分區(qū)的第一區(qū)域內(nèi)記錄備份文件的基本信息。如備份文件的類型、名稱、偏移位置、長(zhǎng)度、創(chuàng)建時(shí)間、備份文件的數(shù)據(jù)和屬性在該備份中的長(zhǎng)度等等信息。這個(gè)區(qū)域稱為備份節(jié)點(diǎn)區(qū)。在一個(gè)實(shí)施例中,該區(qū)域?yàn)殡[藏分區(qū)的第一個(gè)扇區(qū)。
2、在隱藏分區(qū)的第二區(qū)域存儲(chǔ)備份文件的數(shù)據(jù)。這些數(shù)據(jù)壓縮(用戶選擇壓縮)或不壓縮(用戶選擇不壓縮)順序存放到該區(qū)域。該區(qū)域被稱為備份數(shù)據(jù)區(qū)。
3、隱藏分區(qū)的第三區(qū)域保存的是備份文件的屬性信息。如文件名、長(zhǎng)度、創(chuàng)建和訪問(wèn)時(shí)間以及它的數(shù)據(jù)在第二部分中的相對(duì)位置和長(zhǎng)度等等文件的屬性。該區(qū)域被稱為備份目錄區(qū)。
在本發(fā)明的一個(gè)實(shí)施例中,如圖2和圖3所示,硬盤數(shù)據(jù)備份的過(guò)程如下1、用戶選擇要備份的目錄(文件)和備份方法(是否壓縮、壓縮方法)后,本程序通過(guò)Windows提供的文件訪問(wèn)函數(shù)(MFC的CFile、CFileFinder類以及一些Windows API函數(shù))依次打開(kāi)這些文件。
2、把所有打開(kāi)的文件的內(nèi)容讀入內(nèi)存,并把它們壓縮(如果用戶選擇壓縮)到另一個(gè)內(nèi)存塊中,并且構(gòu)造一個(gè)文件屬性列表,把所有文件的所有屬性加入該列表中。然后以扇區(qū)的形式寫入隱藏分區(qū)中備份數(shù)據(jù)區(qū)。
3、把上面所有的文件的屬性(文件名、長(zhǎng)度等)(通過(guò)文件屬性列表)以及它們的數(shù)據(jù)在隱藏分區(qū)中的偏移位置、大小等寫入隱藏分區(qū)備份目錄區(qū)。
4、上面所以步驟完成之后,在隱藏分區(qū)的備份節(jié)點(diǎn)記錄備份節(jié)點(diǎn)信息。這樣就完成備份操作。
如圖3所示,在“備份”屬性頁(yè)的左邊的樹(shù)形窗口中選擇要備份的文件,圖中為C\My Documents目錄,單擊“開(kāi)始備份”按鈕就就開(kāi)始把C\MyDocuments目錄的文件備份到隱藏分區(qū)。
在本發(fā)明的一個(gè)實(shí)施例中,如圖4和圖5所示,硬盤數(shù)據(jù)還原的過(guò)程如下1、在用戶選擇要還原的備份后,本程序定位到備份節(jié)點(diǎn)區(qū),根據(jù)該區(qū)的信息初始化備份節(jié)點(diǎn)的基本信息,如備份數(shù)據(jù)區(qū)和目錄區(qū)的位置和大小。
2、定位到備份目錄區(qū),讀出目錄區(qū)的數(shù)據(jù),根據(jù)存儲(chǔ)的格式得到所有備份文件的所有屬性和它們?cè)跀?shù)據(jù)區(qū)中的位置,然后用Windows的文件訪問(wèn)函數(shù)創(chuàng)建這些文件,設(shè)置它們的屬性,并把它們?cè)跀?shù)據(jù)區(qū)中的數(shù)據(jù)解壓(如果壓縮)或直接寫入相對(duì)應(yīng)的文件。這樣就完成還原操作。
如圖5所示,在“還原”屬性頁(yè)的左邊的樹(shù)形窗口中選擇要還原的備份,圖中為“隱藏分區(qū)1\1\基本備份”,單擊“還原備份”或“還原到...”按鈕就開(kāi)始還原隱藏分區(qū)中的選中的備份。
權(quán)利要求
1.一種硬盤數(shù)據(jù)隱藏加密備份及還原方法,包括以下步驟(1)分區(qū)設(shè)置步驟,在硬盤內(nèi)設(shè)置一個(gè)分區(qū);(2)分區(qū)隱藏步驟,隱藏該分區(qū),使得該分區(qū)及其數(shù)據(jù)不能被操作系統(tǒng)或其他基于文件系統(tǒng)的程序訪問(wèn);(3)數(shù)據(jù)備份步驟,將用戶指定的需備份的硬盤數(shù)據(jù)存儲(chǔ)在該分區(qū);(4)數(shù)據(jù)還原步驟,將隱藏分區(qū)中的數(shù)據(jù)還原到可被訪問(wèn)的硬盤分區(qū)中。
2.根據(jù)權(quán)利要求1所述的方法,其中,在所述的分區(qū)設(shè)置步驟,由用戶根據(jù)需備份的數(shù)據(jù)量設(shè)置該隱藏分區(qū)的大小。
3.根據(jù)權(quán)利要求1所述的方法,其中,所述的分區(qū)隱藏步驟是在硬盤分區(qū)表中為該分區(qū)定義一個(gè)特定的類型值,該類型值不同于其它可被用戶訪問(wèn)的分區(qū)之類型值。
4.根據(jù)權(quán)利要求1所述的方法,其中,所述的數(shù)據(jù)備份步驟是將用戶指定的需備份數(shù)據(jù)以扇區(qū)的形式寫入該隱藏分區(qū)。
5.根據(jù)權(quán)利要求1所述的方法,其中,所述的數(shù)據(jù)備份步驟進(jìn)一步包括以下步驟(1)由用戶指定需備份的文件或文件目錄;(2)將備份節(jié)點(diǎn)信息寫入該備份數(shù)據(jù)區(qū)的第一區(qū)域,每一個(gè)備份節(jié)點(diǎn)含有若干個(gè)備份數(shù)據(jù)文件,該備份節(jié)點(diǎn)信息表示備份文件的基本信息,包括關(guān)于該備份節(jié)點(diǎn)的文件類型、名稱、偏移位置、長(zhǎng)度、創(chuàng)建時(shí)間、備份文件的數(shù)據(jù)和屬性在該備份節(jié)點(diǎn)中的長(zhǎng)度;(3)將備份數(shù)據(jù)文件以扇區(qū)的形式寫入該備份數(shù)據(jù)區(qū)的第二區(qū)域;(4)將備份文件的屬性信息寫入該備份文件的第三區(qū)域,其中包括備份文件的文件名、長(zhǎng)度、創(chuàng)建時(shí)間、訪問(wèn)時(shí)間及其在備份數(shù)據(jù)區(qū)中的相對(duì)位置和長(zhǎng)度。
6.根據(jù)權(quán)利要求1所述的方法,其中,在將備份數(shù)據(jù)文件寫入隱藏分區(qū)之前,先將備份數(shù)據(jù)文件進(jìn)行壓縮。
7.根據(jù)權(quán)利要求1所述的方法,其中,在所述的數(shù)據(jù)備份步驟和數(shù)據(jù)還原步驟中,對(duì)隱藏分區(qū)的扇區(qū)進(jìn)行讀寫訪問(wèn)是通過(guò)一套對(duì)硬盤物理扇區(qū)操作的接口函數(shù)實(shí)現(xiàn)的,該接口函數(shù)是根據(jù)Windows操作系統(tǒng)的硬盤訪問(wèn)接口而建立的。
8.根據(jù)權(quán)利要求1所述的方法,其中,所述的數(shù)據(jù)還原步驟是將隱藏分區(qū)中的備份數(shù)據(jù)以扇區(qū)形式讀出,再將所讀取的數(shù)據(jù)還原為所備份的數(shù)據(jù)文件。
9.根據(jù)權(quán)利要求1所述的方法,其中,所述的數(shù)據(jù)備份步驟及數(shù)據(jù)還原步驟是基于Windows操作系統(tǒng)下的虛擬設(shè)備驅(qū)動(dòng)程序?qū)崿F(xiàn)的。
10.根據(jù)權(quán)利要求9所述的方法,其中,所述的Windows操作系統(tǒng)包括Windows 9x系統(tǒng),所述的虛擬設(shè)備驅(qū)動(dòng)程序是由Windows 9x系統(tǒng)的虛擬設(shè)備驅(qū)動(dòng)程序的開(kāi)發(fā)工具實(shí)現(xiàn)的,包括以下步驟(1)保存當(dāng)前虛擬機(jī)的寄存器狀態(tài);(2)轉(zhuǎn)入虛擬86方式;(3)調(diào)用INT 13中斷;(4)退出虛擬86方式;(5)恢復(fù)當(dāng)前虛擬機(jī)的寄存器狀態(tài)。
11.根據(jù)權(quán)利要求9所述的方法,其中,所述的Windows操作系統(tǒng)包括Windows 2000操作系統(tǒng)和Windows XP操作系統(tǒng),所述的虛擬設(shè)備驅(qū)動(dòng)程序是由Windows 2000操作系統(tǒng)或Windows XP操作系統(tǒng)提供的SYS格式的驅(qū)動(dòng)程序。
12.根據(jù)權(quán)利要求1至11中任一項(xiàng)所述的方法,其中,所述的方法是在Windows操作系統(tǒng)下實(shí)現(xiàn)的。
全文摘要
一種硬盤數(shù)據(jù)隱藏加密備份及還原方法,包括以下步驟在硬盤內(nèi)設(shè)置一個(gè)分區(qū);隱藏該分區(qū),使得該分區(qū)不能被操作系統(tǒng)或其他基于文件系統(tǒng)的程序訪問(wèn);將用戶指定的備份數(shù)據(jù)存儲(chǔ)在該分區(qū);將隱藏分區(qū)中的數(shù)據(jù)還原到可被訪問(wèn)的硬盤分區(qū)中。利用本發(fā)明使得備份在硬盤中的數(shù)據(jù)安全可靠,備份數(shù)據(jù)不會(huì)因用戶誤操作、計(jì)算機(jī)病毒或黑客程序而被破壞,用戶可以非常方便地在Windows操作系統(tǒng)下進(jìn)行硬盤數(shù)據(jù)備份及還原。
文檔編號(hào)G06F12/14GK1417689SQ0113457
公開(kāi)日2003年5月14日 申請(qǐng)日期2001年11月8日 優(yōu)先權(quán)日2001年11月8日
發(fā)明者王衛(wèi), 杜賓, 楊文兵, 李鵬 申請(qǐng)人:聯(lián)想(北京)有限公司