陳一璋王丹陳渝
摘要:當計算機系統(tǒng)遇到到用戶錯誤操作、硬件故障、被黑客或病毒攻擊,造成數(shù)據(jù)丟失或系統(tǒng)損壞時,通過數(shù)據(jù)恢復(fù)技術(shù)可將用戶數(shù)據(jù)恢復(fù)正?;蛘呤瓜到y(tǒng)正常運行,從而減小用戶損失。提出基于Android-x86的Windows恢復(fù)系統(tǒng)設(shè)計,通過雙系統(tǒng)啟動的方式實現(xiàn)系統(tǒng)恢復(fù)功能,從而有效與問題源進行隔離,且在恢復(fù)過程中不需借助其它媒介。測試表明,該方法能夠有效恢復(fù)Windows系統(tǒng)。
關(guān)鍵詞:Andorid-x86;Windows;數(shù)據(jù)恢復(fù);恢復(fù)系統(tǒng);Wimlib
DOIDOI:10.11907/rjdk.161639
中圖分類號:TP319
文獻標識碼:A文章編號文章編號:16727800(2016)009006504
作者簡介作者簡介:陳一璋(1991-),男,北京人,北京工業(yè)大學計算機學院碩士研究生,研究方向為操作系統(tǒng)、計算機信息安全;王丹(1969-),女,遼寧沈陽人,博士,北京工業(yè)大學計算機學院教授、博士生導(dǎo)師,研究方向為操作系統(tǒng)、可信計算;陳渝(1972-),男,廣東湛江人,博士,清華大學計算機科學與技術(shù)系副教授,研究方向為操作系統(tǒng)、計算機信息安全。
0引言
隨著信息技術(shù)的快速發(fā)展,信息安全問題越來越受到廣泛關(guān)注。據(jù)IDC統(tǒng)計,當前數(shù)據(jù)存儲量正以每年超過50%的速度增長[12]。當遇錯誤操作、硬件故障、被黑客或病毒攻擊等情況時,面臨數(shù)據(jù)丟失的風險。
數(shù)據(jù)恢復(fù)在國外已經(jīng)30余年的實踐,僅北美地區(qū)擁有的數(shù)據(jù)修復(fù)公司便超過400家,其中包括Ontrack、CBL等知名公司。目前,中國數(shù)據(jù)恢復(fù)產(chǎn)業(yè)還處于發(fā)展階段。據(jù)相關(guān)數(shù)據(jù)統(tǒng)計,中國電腦用戶已經(jīng)超過2億,數(shù)據(jù)恢復(fù)市場潛力巨大。
針對Windows系統(tǒng),目前已有一些數(shù)據(jù)恢復(fù)工具,如EasyRecover、Recover、Disk Recover、Wimlib等,其不足之處在于無法通過系統(tǒng)本身進行數(shù)據(jù)恢復(fù),需要借助光盤、USB等相關(guān)存儲工具。本文開發(fā)基于Android-x86平臺的Windows恢復(fù)系統(tǒng),可恢復(fù)用戶備份的磁盤數(shù)據(jù),將不能啟動的操作系統(tǒng)恢復(fù)到正常狀態(tài)。相關(guān)恢復(fù)鏡像可以保存在andorid-x86系統(tǒng)中或者通過網(wǎng)絡(luò)進行下載,Android-x86系統(tǒng)作為一個輔助系統(tǒng),方便用戶使用。
1國內(nèi)外相關(guān)工作
數(shù)據(jù)恢復(fù)可分為硬件恢復(fù)和軟件恢復(fù)兩大類[3],如圖1所示。
硬件恢復(fù)分為以下3種方式:固件修復(fù)、盤片讀取以及硬件替代[4]。軟件恢復(fù)包括系統(tǒng)級恢復(fù)和文件級恢復(fù)。系統(tǒng)級恢復(fù)指系統(tǒng)無法正常啟動時,通過軟件對系統(tǒng)進行修復(fù),從而使系統(tǒng)恢復(fù)正常,恢復(fù)數(shù)據(jù)。文件級恢復(fù)只是恢復(fù)某個損壞的文件。本文恢復(fù)系統(tǒng)是一個系統(tǒng)級恢復(fù)軟件。
常見的數(shù)據(jù)或系統(tǒng)恢復(fù)軟件主要有:
(1)EasyRecovery[5]。EasyRecovery是由Ontrack公司研發(fā)的一款數(shù)據(jù)恢復(fù)工具,它通過模式識別的方式找回硬盤上不同位置的文件碎片,并進行整合。在內(nèi)存中建立虛擬文件系統(tǒng),列出所有文件目錄。即使硬盤分區(qū)以及相關(guān)維護信息非常少,也可以高效恢復(fù)。
(2)FinalData[6]。FinalData可以運行在不同系統(tǒng)平臺上,如Windows、Linux。其可以對數(shù)據(jù)、MBR、引導(dǎo)扇區(qū)等進行恢復(fù),恢復(fù)完全刪除的數(shù)據(jù)文件以及目錄,還能對引導(dǎo)扇區(qū)中的內(nèi)容以及通過快速格式化刪除的數(shù)據(jù)內(nèi)容進行恢復(fù)。
(3)WinHex[7]。WinHex是一款針對數(shù)據(jù)恢復(fù)的磁盤編輯器工具,可以修改Hex和ASCII碼,還能對磁盤磁區(qū)進行編輯,對文件進行分析對比,可以作為一個手工修復(fù)數(shù)據(jù)的工具,在ZDNet Software Library上獲得了五星的最高評價。
(4)DISM。DISM的全稱是Deployment Image Service and Management Tool,是一款在Windows7和Windows Server 2008R2引入的工具,能夠完成系統(tǒng)安裝。它的特點在于可對鏡像進行加載和卸載,在鏡像中搜索已安裝的設(shè)備驅(qū)動。
(5)ImageX。ImageX是一個命令行工具,通過它可以創(chuàng)建、修改以及使用Windows磁盤鏡像(WIM格式)[8],它是一個免費的Windows自動安裝集合。從Windows Vista開始,可以用來完成Windows安裝,對磁盤分區(qū)進行映像捕獲,并修改和使用磁盤映像,以快速部署Windows系統(tǒng)。它還支持一些新功能,如分離鏡像文件以及通過最新的LZX壓縮算法[9]完成WIM文件捕獲。
總體來講,上述這些工具都可以對數(shù)據(jù)或者系統(tǒng)進行恢復(fù),但不足之處在于當系統(tǒng)無法正常啟動時不能使用,需借助光盤、USB等存儲工具。
雙系統(tǒng)目前逐漸被人們所接受,即在一臺計算機上安裝不同的操作系統(tǒng),當一個系統(tǒng)不能正常運行時,可以啟動另一個系統(tǒng)。本文開發(fā)一個基于Android-x86的Windows恢復(fù)系統(tǒng)。Android是一個開放源代碼的操作系統(tǒng),而Android-x86是一個開源項目,在x86平臺上可以使用Android操作系統(tǒng)。該操作系統(tǒng)基于安卓開源項目[10](Android Open Source Project ),并且修改一些組件來允許Android運行在x86的架構(gòu)上,比如kernel和HALs層。目前,Andorid-x86已成為一個較為穩(wěn)定的桌面操作系統(tǒng)。相關(guān)工具和技術(shù)如下:
(1)rEFInd。隨著基于EFI或UEFI的電腦用戶的增多,配置EFI boot loader的需求也越來越大,特別是在有多個操作系統(tǒng)的設(shè)備上,如何啟動操作系統(tǒng)成為關(guān)鍵。EFI電腦的啟動方式不同于傳統(tǒng)的BIOS啟動,啟動方式更加靈活,并且從理論上要比BIOS啟動容易配置。不足之處在于目前針對EFI的文檔并不多,大多數(shù)文檔還是以BIOS為主,使得啟動基于EFI的系統(tǒng)相對較復(fù)雜。
rEFInd[11]是一個針對EFI或者UEFI啟動平臺的啟動管理工具。當計算機第一次啟動時,為用戶呈現(xiàn)菜單選項選擇操作系統(tǒng)。然而,rEFInd不是一個boot loader,也不作為程序加載操作系統(tǒng)內(nèi)核,不影響它們的控制過程。目前,許多啟動管理器同樣是boot loader,使用戶容易混淆。所有兼容EFI模式的操作系統(tǒng)都擁有自身的boot loader,所以rEFInd對用戶沒有太多限制。與傳統(tǒng)的Grub不同,rEFInd將自動搜索磁盤上所有可啟動的操作系統(tǒng),而EFI的Grub程序只包含F(xiàn)edora和Ubuntu,所以rEFInd比Grub更加靈活。此外,rEFInd本身更加美觀,用戶可以通過修改配置文件以及添加文件來定制化啟動界面,通過圖形化的方式選擇需要啟動的操作系統(tǒng),如Windows、ubuntu、Android-x86等。
(2)wimlib。Windows Imaging Format(WIM)是微軟開發(fā)的一種基于文件的磁盤鏡像格式,被用于Windows Vista及后續(xù)版本W(wǎng)indows操作系統(tǒng)。和其它磁盤鏡像文件格式一樣,WIM文件中包含一組文件和附屬的文件系統(tǒng)元數(shù)據(jù)。然而,與基于扇區(qū)格式不同(比如ISO或者VHD),在一個WIM文件中可以存儲多個映像,并且通過壓縮和單一實例的方法大大壓縮了映像文件大小,被廣泛使用在Windows系統(tǒng)上。
本文恢復(fù)系統(tǒng)使用wim文件作為恢復(fù)鏡像,并且采用wimlib[12]恢復(fù)工具完成恢復(fù)。wimlib是一個開源并且跨平臺的庫,通過它可以對WIM文件進行創(chuàng)建、提取和修改。Wimlib采用XPRESS、LZX和LZMS壓縮算法來創(chuàng)建WIM文件。Wimlib還能用來處理ESD文件,ESD文件使用solid模式LZMS壓縮的WIM文件,通常比常規(guī)WIM文件更小。
wimlib為用戶提供以下幫助:①在Windows或者UNIX-like系統(tǒng)上操作wim文件,從而實現(xiàn)諸如備份及使用wim文件;②允許用戶在非Windows系統(tǒng)上對WIM文件進行讀寫操作;③開發(fā)人員可在非Windows操作系統(tǒng),比如Linux上完成Windows操作系統(tǒng)開發(fā);④備份、安裝或者保存Windows操作系統(tǒng)。
恢復(fù)系統(tǒng)主要通過wimlib來實現(xiàn)對目標磁盤分區(qū)的恢復(fù),采用wimapply命令來實現(xiàn)。由于Andorid-x86的庫文件并不支持wimlib,本文采用靜態(tài)編譯方式,將所有庫的內(nèi)容以靜態(tài)庫的方式編譯到wimlib-imagex中。
本文基于Android-x86系統(tǒng)的Windows恢復(fù)系統(tǒng)可以恢復(fù)用戶備份的硬盤數(shù)據(jù),恢復(fù)操作系統(tǒng)正常啟動。相關(guān)恢復(fù)鏡像可以保存在Andorid-x86系統(tǒng)中或者通過網(wǎng)絡(luò)進行下載,Android-x86系統(tǒng)也可作為一個輔助系統(tǒng),方便用戶使用。本系統(tǒng)創(chuàng)新之處如下:
(1)將Android-x86與Windows在UEFI下進行雙系統(tǒng)啟動。使Android-x86系統(tǒng)與Windows系統(tǒng)分離,相關(guān)錯誤不會影響恢復(fù)系統(tǒng)的正常運行。
(2)針對Windows系統(tǒng)的恢復(fù)功能,可以在默認恢復(fù)系統(tǒng)盤或者其它數(shù)據(jù)硬盤準確恢復(fù)內(nèi)容,有多個恢復(fù)鏡像,供用戶選擇。
(3)提出了基于URL可配置的下載方案,實現(xiàn)相關(guān)功能??梢詫崿F(xiàn)從OEM網(wǎng)站上獲得指定鏡像文件,實現(xiàn)鏡像的網(wǎng)絡(luò)獲取,方便用戶使用。
(4)提供基于鏡像文件的驗證方案。通過驗證SHA1碼對恢復(fù)文件的完整性和正確性進行驗證。
2Windows恢復(fù)系統(tǒng)設(shè)計
結(jié)合對Windows恢復(fù)系統(tǒng)的需求分析,本文系統(tǒng)主要考慮以下幾個要求:多系統(tǒng)啟動模式、易操作性、安全性、完整性和可靠性。
2.1系統(tǒng)架構(gòu)
本文系統(tǒng)總體框架如圖2所示。通過啟動管理器選擇Android-x86進行啟動,將該Android應(yīng)用運行在Android-x86上。目的在于使恢復(fù)系統(tǒng)與Windows系統(tǒng)隔離,互不影響。在恢復(fù)系統(tǒng)中可以讀出掛載的Windows硬盤信息,用戶可明確選擇內(nèi)容。當沒有可用的恢復(fù)鏡像時,可以通過網(wǎng)絡(luò)下載。當系統(tǒng)擁有鏡像后進行SHA1碼比對,從而保證鏡像正確與安全。最后由恢復(fù)系統(tǒng)進行Windows系統(tǒng)硬盤恢復(fù),提醒用戶重啟,完成系統(tǒng)恢復(fù)。
2.2恢復(fù)系統(tǒng)模塊設(shè)計
2.2.1驗證模塊
驗證模塊主要驗證wim文件完整性、正確性。通過一個配置文件完成比對,配置文件由url下載地址、目標wim恢復(fù)文件的位置、名稱以及SHA1驗證碼組成。應(yīng)用初始啟動后,檢查配置文件,若存在則繼續(xù)后續(xù)操作,若不存在則自動生成指定內(nèi)容。SHA1碼校驗亦稱安全哈希算法,主要用于校驗數(shù)據(jù)的完整性。在SHA1算法中,通過補位、補長度、常量、函數(shù)計算驗證碼。主要步驟如下:
(1)開啟校驗線程。
(2)從配置文件中獲取信息,將wim恢復(fù)文件名以及SHA1碼傳到驗證線程中。
(3)計算SHA1碼并與配置文件中的SHA1進行比較,將結(jié)果送至主線程,由handler進行處理。
(4)校驗正確,則繼續(xù)進入恢復(fù)模塊。
(5)若檢驗錯誤,則重新下載。
(6)校驗?zāi)K結(jié)束。
由于SHA1計算工作量大,可開啟新線程來完成驗證功能,主要由SHA1函數(shù)完成恢復(fù)文件計算,驗證完成后由handler處理結(jié)果,如成功則繼續(xù)用戶選擇,若失敗則重新下載。
2.2.2下載模塊
本模塊主要負責在沒有恢復(fù)鏡像的情況下,從配置的url中下載恢復(fù)鏡像,并顯示下載進度。下載url保存在配置文件中,下載由兩個線程來完成,其中一個負責進度條處理,另一個負責下載過程處理,下載步驟如下:
(1)主線程檢查是否成功連接網(wǎng)絡(luò),若順利則繼續(xù),否則提示網(wǎng)絡(luò)異常。
(2)啟動更新UI線程。
(3)獲取配置文件中的url以及目標文件名等信息。
(4)啟動下載線程,完成目標url連接。
(5)循環(huán)將緩存區(qū)所有內(nèi)容以每次1024字節(jié)寫到文件中,并更新UI線程中的進度條。
(6)下載成功則繼續(xù),若失敗則顯示下載超時并取消下載,刪除下載文件。
(7)下載結(jié)束,用戶選擇后續(xù)操作。
用戶點擊下載后,首先檢查網(wǎng)絡(luò)是否連接成功。本模塊分為兩個線程啟動,首先啟動更新UI線程,獲取配置文件信息,并且啟動一個新的下載線程完成下載。更新UI線程主要負責UI進度條更新以及將下載線程結(jié)果返回至UI線程。
2.2.3恢復(fù)模塊
本模塊主要通過恢復(fù)文件(WIM文件)對指定的磁盤分區(qū)進行恢復(fù),執(zhí)行磁盤分區(qū)、恢復(fù)鏡像。恢復(fù)模塊主要由以下3個部分組成:
(1)選擇恢復(fù)鏡像。驗證完恢復(fù)文件的完整性后選擇恢復(fù)鏡像,本文通過wimlib中的info命令來完成相關(guān)操作,可以獲取恢復(fù)文件的全部鏡像信息,通過執(zhí)行命令行語句,得到輸出信息供用戶選擇。wimlib-imagex info命令主要用于顯示W(wǎng)IM文件的鏡像內(nèi)容,系統(tǒng)提取其中鏡像的個數(shù)、大小以及描述符等供用戶選擇。
(2)選擇恢復(fù)分區(qū)。由于不需要對恢復(fù)分區(qū)進行掛載,只需要了解分區(qū)名、分區(qū)類型以及分區(qū)大小等信息,本文通過fidisk的Android-x86中現(xiàn)有命令來獲取信息。
Android-x86自帶fdisk命令,通過fdisk命令可以得到磁盤大小、設(shè)備號和盤符信息。在應(yīng)用中調(diào)用shell命令完成操作,返回信息供用戶進行磁盤分區(qū)選擇。
用戶只可選Windows系統(tǒng)分區(qū),防止用戶將重要分區(qū)進行誤操作。
(3)完成恢復(fù)功能。選擇恢復(fù)分區(qū)及恢復(fù)鏡像后,提醒用戶格式化磁盤,使用mkntfs命令將需要恢復(fù)的分區(qū)快速格式化。
利用wimlib中的apply實現(xiàn)恢復(fù)功能,首先給程序root權(quán)限,使用靜態(tài)編譯的wimlib,根據(jù)用戶提供的設(shè)備號以及選擇的恢復(fù)鏡像實現(xiàn)系統(tǒng)恢復(fù)功能。
由于恢復(fù)時間較長,且任務(wù)比較復(fù)雜,本文使用異步類實現(xiàn)恢復(fù)。AsyncTask是Android提供的輕量級異步類,對線程間通訊作包裝,后臺線程與UI線程可以進行簡易通訊。創(chuàng)建一個繼承AsyncTask的MyTask類完成恢復(fù),可以實現(xiàn)異步操作,執(zhí)行過程不影響UI線程,通過接口及時獲取進度,并將執(zhí)行結(jié)果返給UI主線程。與一般handler相比較,其簡單快捷,過程可控,更加輕量,不阻塞主線程(UI線程)。AsnycTask作為封裝后的后臺任務(wù)方便Android開發(fā)。在AsnycTask使用過程中,通過表1方法進行重寫和使用。
恢復(fù)模塊主要步驟如下:
step1:將WIM文件中的鏡像信息提供給用戶,包括鏡像描述文件、鏡像號等信息,供用戶選擇。
step2:用戶選擇指定鏡像恢復(fù)。
step3:得到磁盤設(shè)備分區(qū)信息,并提供給用戶,包括分區(qū)大小、描述符等信息。
step4:用戶選擇恢復(fù)分區(qū),如選擇符合要求則繼續(xù),如果出現(xiàn)異常則提示用戶。
step5:提示用戶格式化恢復(fù)磁盤分區(qū),用戶確認后將磁盤分區(qū)格式化。
step6:開始執(zhí)行恢復(fù)功能。
step7:恢復(fù)功能完成,提示用戶是否重啟。
使用wimlib-imagex apply實現(xiàn)恢復(fù)功能,通過繼承異步類完成核心恢復(fù)任務(wù)。
3系統(tǒng)測試
3.1測試環(huán)境
測試環(huán)境如表2所示。
3.2測試結(jié)果
通過在win7、win8、win10三個系統(tǒng)中進行測試,恢復(fù)測試結(jié)果如表3所示。
針對上述3個Windows系統(tǒng),在目標測試機上使用Windows恢復(fù)系統(tǒng)進行恢復(fù)。結(jié)果表明,Windows恢復(fù)系統(tǒng)能夠在此三個系統(tǒng)Windows系統(tǒng)上正常使用,并啟動正常。運行系統(tǒng)如圖3所示。
4結(jié)語
本文設(shè)計并實現(xiàn)的Windows恢復(fù)系統(tǒng)與傳統(tǒng)恢復(fù)工
具的不同之處在于它是基于andorid-x86的Android應(yīng)用來實現(xiàn)恢復(fù)功能,通過雙系統(tǒng)啟動的方式完成系統(tǒng)恢復(fù)。其可與Windows系統(tǒng)隔離,因而Windows系統(tǒng)上的故障不影響恢復(fù)系統(tǒng)。同時,Android-x86系統(tǒng)可作為一個輔助操作系統(tǒng),在占用較少資源的情況下完成恢復(fù),不需要其它媒介便可以直接恢復(fù),用戶使用較為方便。此外,恢復(fù)鏡像制作簡單,可以在網(wǎng)上下載恢復(fù)鏡像,通過SHA1碼進行分析,保證其完整性與可靠性。在Windows恢復(fù)系統(tǒng)中,目前主要針對整個磁盤分區(qū)進行恢復(fù),后續(xù)研究可以指定目錄文件進行恢復(fù),使得恢復(fù)系統(tǒng)的功能更加強大。
圖3開始恢復(fù)示意圖
參考文獻參考文獻:
[1]王強.Windows平臺下磁盤數(shù)據(jù)恢復(fù)技術(shù)的研究與實現(xiàn)[D].成都:四川師范大學,2008.
[2]周渝, 唯奕.大數(shù)據(jù)——企業(yè)運營中的新資本[J].信息與電腦, 2012(11):1921.
[3]文光斌.數(shù)據(jù)恢復(fù)技術(shù)的發(fā)展前景、技術(shù)層次及常用方法[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用, 2005(5):7476.
[4]LIANG Z H, LUO J Z, LIANG Z Q.System Recovery Testing of Hardware Firewall[J].Procedia Engineering,2011,15:45744578.
[5]李軍.計算機數(shù)據(jù)恢復(fù)技術(shù)應(yīng)用探究[J].電子測試, 2014(16):7071.
[6]趙明.巧用FinalData恢復(fù)磁盤數(shù)據(jù)[J].Computer Knowledge and Technology,2010,6(17):48504851.
[7]SEY E.Tool review-WinHex[J].Digital Investigation, 2004, 1(2):114128.
[8]MILLER W.Inside the Windows Imaging Format[J].Technet Magazine, 2006(15):96102.
[9]RATHORE Y,AHIRWAR M K,PANDEY R.A Brief Study of Data Compression Algorithms[J].International Journal of Computer Science and Information Security,2013,11(10):86.
[10]THONGTANUNAM P,ANA E C C,YOSHIDA N, et al.Reviewer recommendation for peer review based on file path similarity:a case study of the android open source project[J].Technical Report of Ieice Kbse, 2013, 113:2529.
[11]HUEBNER E, BEM D, WEE C K.Data hiding in the NTFS file system[J].Digital Investigation, 2006, 3(4):211226.
責任編輯(責任編輯:陳福時)