徐國天
(中國刑事警察學院 遼寧網(wǎng)絡安全執(zhí)法協(xié)同創(chuàng)新中心 沈陽 110854)
·專 題·
殘缺Excel文件數(shù)據(jù)信息恢復方法研究
徐國天
(中國刑事警察學院 遼寧網(wǎng)絡安全執(zhí)法協(xié)同創(chuàng)新中心 沈陽 110854)
目的 針對殘缺Excel文件研究有效的殘留文本數(shù)據(jù)的定位、提取、恢復方法。方法 針對NTFS文件系統(tǒng)上破損較輕的Office2003版本Excel文件設計了一種WorkBook流整體替換恢復方法:準備一個較大的Excel文件,將它的WorkBook流數(shù)據(jù)重置為0x00,使用Winhex從殘缺Excel文件中完整提取出WorkBook流數(shù)據(jù),并將其復制到目標Excel文件的WorkBook流位置。雙擊打開目標文件即可看到殘缺Excel文件中的文本信息。針對破損嚴重的Excel文件設計了一種基于關鍵數(shù)據(jù)結構重組的文本恢復方法:準備一個較大的Excel文件,將它的WorkBook流數(shù)據(jù)重置為0x00,使用Winhex從破損文件中依次提取出WorkBook header、BoundSheet、語言和地區(qū)設置、SST共享字符串、Extended SST和每個Sheet的數(shù)據(jù)內(nèi)容,并逐個復制到目標文件的WorkBook流位置,補充缺失的數(shù)據(jù)結構,調(diào)整BoundSheet和Extended SST的絕對地址引用,最后打開目標文件即可看到殘缺Excel文件中的文本信息。結果 使用WorkBook流整體替換恢復方法得到的目標文件可以正常使用,可以恢復文本、格式設置、公式。基于關鍵數(shù)據(jù)結構重組的恢復方法得到的目標文件在打開時會提示出錯信息,連續(xù)單擊確定按鈕之后,文本信息可以正常顯示,但格式設置丟失。結論 應用本文提出的殘缺Excel文件數(shù)據(jù)信息恢復方法可以有效提取殘缺Excel文件中的文本數(shù)據(jù)。
電子物證;殘缺Excel文件;文本數(shù)據(jù);WorkBook;恢復
Excel被廣泛應用于財務統(tǒng)計、人員管理等諸多領域各類電子表格的制作。Excel文件中保存了大量有價值的文字、圖像和表格數(shù)據(jù)。在計算機涉案調(diào)查取證中,發(fā)現(xiàn)犯罪分子為了逃避法律的制裁,常常將某些重要的涉案Excel文件刪除。對于這些被刪除的Excel文件,雖然使用數(shù)據(jù)恢復軟件(如FinalData)可從中恢復出大量Excel文件,但是其中很多文件無法正常使用,雙擊打開時,系統(tǒng)提示這些文件已經(jīng)損壞。進一步使用Winhex分析這些殘缺文件,發(fā)現(xiàn)在這些文件中通常殘留了大量文字、圖像和表格數(shù)據(jù)。由于目前現(xiàn)有電子數(shù)據(jù)取證軟件不能有效提取殘缺Excel文件中殘留的數(shù)據(jù)信息,進而導致大量重要線索的遺失,甚至影響到案件的辦理。本文對殘缺Excel文件殘留文本數(shù)據(jù)的提取方法進行研究,希望能對公安機關的電子數(shù)據(jù)檢驗工作有所幫助。
1.1 Excel文件在硬盤分區(qū)內(nèi)常處于離散存儲狀態(tài)
當用戶在硬盤內(nèi)創(chuàng)建一個新的Excel文件或者向目標分區(qū)復制一個Excel文件時,文件系統(tǒng)會將這個新產(chǎn)生的文件存放在一段連續(xù)的存儲空間內(nèi)。用戶對Excel文件的每次編輯操作都會產(chǎn)生一個臨時文件,臨時文件有自己的MFT記錄和存儲空間,在編輯結束時臨時文件的MFT記錄更改為原始Excel文件的名稱。通過大量實驗分析,發(fā)現(xiàn)Excel文件在編輯過程中其存儲位置會不斷變化,且呈現(xiàn)不連續(xù)存放的特征。為了測試Excel文件離散存儲特征,將一個3.8 GBU盤格式化為NTFS文件系統(tǒng),在磁盤根目錄下存放一個“11.xls”,大小為105,984 字節(jié),占用空間106,496 字節(jié)。使用Winhex查看“11.xls”文件的MFT記錄如圖1a所示??梢姵跏紶顟B(tài)“11.xls”從0x05E181簇開始存放,占26個簇塊。向“11.xls”文件復制大量數(shù)據(jù),復制之后大小變?yōu)?,299,648 字節(jié)。編輯之后“11.xls”文件的MFT記錄如圖1b所示。可見整個Excel文件被存儲在兩個不連續(xù)的數(shù)據(jù)分片中,第1個分片占8個簇塊,第2個分片占1530個簇塊。由此可見,伴隨著編輯操作,Excel文件的存儲空間會發(fā)生遷移,并呈現(xiàn)出離散存儲的特征。
1.2 MFT記錄恢復方式導致殘缺Excel文件
目前個人用戶使用的計算機普遍采用NTFS格式的硬盤[1],日常使用的U盤、移動硬盤也大多采用NTFS格式。NTFS文件系統(tǒng)的MFT元文件為硬盤分區(qū)內(nèi)的每個文件分配了一條1024字節(jié)大小的MFT記錄。在這條記錄中保存了文件的名稱、大小、建立、修改和訪問時間,最重要的是保存了文件數(shù)據(jù)在硬盤內(nèi)的存儲位置,根據(jù)這些信息可以準確定位到磁盤上的文件數(shù)據(jù)。當一個文件被刪除之后,其MFT記錄并沒有消失,只是其狀態(tài)變化為“空閑”狀態(tài),代表這條記錄可以被其它文件重新使用[2]。在這條MFT記錄被覆蓋之前,可以利用它來恢復被刪除的文件。知名數(shù)據(jù)恢復軟件FinalData的快速掃描恢復功能正是基于這種方法。圖2展示的是MFT記錄恢復方式導致殘缺Excel文件的整個過程。硬盤空間中帶陰影的存儲區(qū)域代表正在被其它文件使用的空間,白色區(qū)域代表空閑、可以重新使用的存儲空間。原始Excel文件被劃分為3個數(shù)據(jù)塊離散存儲在硬盤空間內(nèi)。當用戶刪除這個Excel文件之后,這三塊存儲空間內(nèi)的數(shù)據(jù)并沒有消失,只是其存儲狀態(tài)由“已占用”變化為“空閑”狀態(tài)。隨著計算機的使用,第2塊存儲空間被其它文件重新使用,即這塊空間內(nèi)原始Excel文件的數(shù)據(jù)被其它文件的數(shù)據(jù)覆蓋,導致這部分數(shù)據(jù)的丟失。但是由于被刪除Excel文件殘留MFT記錄并沒有消失,因此FinalData軟件利用這條記錄準確定位到原始Excel文件離散存儲的3個數(shù)據(jù)塊,并將它們提取、組合成一個Excel文件[3]。通過圖2可以看到,恢復出的Excel文件中夾雜了一塊其它文件的數(shù)據(jù),因而這是一個殘缺的文件,如果關鍵數(shù)據(jù)遭到破壞,將無法正常打開使用。

圖1 Excel文件離散存儲特征測試Fig.1 Discrete memory testing of Excel fi le
1.3 特征值恢復方式導致殘缺Excel文件
由于大多數(shù)文件的頭部或者尾部均有唯一的特征值[4],例如Excel文件的頭部特征值為0xD0CF11E0,PNG圖片的頭部特征值為0x89504E47。數(shù)據(jù)恢復軟件掃描磁盤空閑空間,根據(jù)文件頭、尾特征值定位到某個被刪除文件殘留在硬盤分區(qū)內(nèi)的頭部和尾部數(shù)據(jù)塊,進而將頭、尾數(shù)據(jù)塊之間的所有數(shù)據(jù)提取、合并成一個原始文件。FinaData軟件的完整掃描功能就是利用了這種恢復方法。但是這種方法比較適合連續(xù)存儲的小容量文件,而對離散存儲的大容量文件效果不好,極易導致殘缺文件的發(fā)生。圖3顯示的是基于文件頭、尾特征值的恢復方式導致的殘缺Excel文件的整個過程。原始Excel文件被刪除之后,其殘留的數(shù)據(jù)被離散存儲在三個數(shù)據(jù)塊內(nèi)。數(shù)據(jù)恢復軟件在第一塊數(shù)據(jù)的頭部識別出一個Excel文件的頭部特征,在第三塊數(shù)據(jù)的尾部識別出一個Excel文件的尾部特征,進而將頭尾特征值之間的數(shù)據(jù)提取、合并成一個Excel文件。從圖3可以看出,雖然原始Excel文件的三塊數(shù)據(jù)都被提取出來,但是其中夾雜了兩塊其它文件的數(shù)據(jù)塊,因而這個新文件也是一個殘缺文件,無法正常使用。

圖2 基于MFT記錄的恢復方式導致的殘缺Excel文件Fig.2 Incomplete Excel fi le based on MFT record

圖3 基于文件簽名的恢復方式導致的殘缺Excel文件Fig.3 Incomplete Excel fi le based on fi le signature
2.1 WorkBook流內(nèi)部絕對偏移地址
Excel文件由一系列512字節(jié)大小的數(shù)據(jù)塊組成,每個數(shù)據(jù)塊稱為1個block。若干個block又組成了Excel文件的5種內(nèi)部數(shù)據(jù)流。表1顯示了一個Excel文件的組成結構,可見只有WorkBook數(shù)據(jù)流長度可變,其它數(shù)據(jù)流的長度固定。
WorkBook數(shù)據(jù)流通常從Excel文件的第2個block(即偏移地址0x0200處)開始存放,其中存儲了Excel文件的所有文本信息,是數(shù)據(jù)恢復的重點研究對象。WorkBook數(shù)據(jù)流內(nèi)部由一系列相互關聯(lián)的數(shù)據(jù)結構依次連接組成。每個數(shù)據(jù)結構的構造為:“標識(2字節(jié))+ 長度(2字節(jié))+ 數(shù)據(jù)內(nèi)容(變長)”,如某條數(shù)據(jù)結構顯示為0x0908 0200 0602,那么0x0908代表這條記錄的標識,0x0200代表后面數(shù)據(jù)內(nèi)容的長度為2字節(jié),而0x0602為實際的數(shù)據(jù)內(nèi)容。數(shù)據(jù)結構之間使用絕對偏移地址進行相互引用。圖4顯示的是WorkBook流內(nèi)部數(shù)據(jù)結構絕對地址引用舉例。圖4a是Sheet指針區(qū)數(shù)據(jù)結構,標識為0x0085,N個Sheet就有N個0x0085,這個數(shù)據(jù)結構包含每個Sheet的名稱和Sheet數(shù)據(jù)內(nèi)容在xls文件中的偏移位置。由圖4a可知共3個Sheet,名稱分別為Sheet1、Sheet2、Sheet3。以Sheet1為例,其數(shù)據(jù)相對于WorkBook流的起始位置偏移為0x0763,因此其在Excel文件的絕對位置為0x0200 + 0x0763 = 0x0963。使用Winhex跳轉(zhuǎn)到該位置查看到結果如圖4b所示,發(fā)現(xiàn)跳轉(zhuǎn)到Sheet1的數(shù)據(jù)區(qū)域。用同樣方法可以確定Sheet2的絕對位置為0x0200 + 0x098E = 0x0B8E, Sheet3的絕對位置為0x0200 + 0AA2 = 0x0CA2。這兩個位置的查看結果如圖4c和圖4d所示。

表1 Excel文件的存儲結構Table 1 Storage structure of Excel fi le
2.2 WorkBook流整體替換恢復方法
使用FinalData的MFT記錄快速掃描功能可以定位被刪除Excel文件的數(shù)據(jù)簇塊,但是其中某些簇塊可能被覆蓋,例如Excel文件的第1個簇塊(4096字節(jié))中包含了文件的header和WorkBook流的前7個block,如該數(shù)據(jù)塊被破壞將導致文件無法打開。但是用這種方法恢復的Excel文件,其WorkBook流內(nèi)部殘留數(shù)據(jù)結構的偏移地址不需要進行調(diào)整。經(jīng)過大量實驗發(fā)現(xiàn),WorkBook流內(nèi)部由很多個數(shù)據(jù)結構依次連接組成,除第一個數(shù)據(jù)結構之外,中間某個或某些數(shù)據(jù)結構被破壞不會對顯示數(shù)據(jù)造成影響,只會彈出一些出錯對話框。
針對使用FinalData的快速掃描功能恢復出的殘缺Excel文件,設計了WorkBook流整體替換恢復方法:因為Excel文件中只有WorkBook流是長度可變的,這里的思路是準備一個較大的Excel文件(稱為目標文件),原則是要能夠存儲下提取出的WorkBook流數(shù)據(jù)。將它的WorkBook流內(nèi)容重置為0x00,而后從殘缺Excel文件中提取出WorkBook流數(shù)據(jù),并將其存放到目標文件的WorkBook流位置。這樣可以保證WorkBook流內(nèi)部數(shù)據(jù)結構偏移地址值仍然正確,不需要進行調(diào)整。如果個別關鍵數(shù)據(jù)結構丟失(如ROW表,Sheet的header等),需要手工補齊,并設置好偏移地址。注意這種方法不能應用于“根據(jù)文件頭、尾特征值恢復出的殘缺Excel文件”,因為這類文件不能保證各個數(shù)據(jù)結構的偏移地址仍然正確。

圖4 WorkBook流內(nèi)部數(shù)據(jù)結構絕對地址引用舉例Fig.4 Absolute address reference example of internal data structure of WorkBook stream
2.3 WorkBook流整體替換恢復方法應用
首先說明WorkBook流存儲區(qū)域的確定方法。Excel文件中所有數(shù)據(jù)流的存儲位置都保存在SAT表中。使用Winhex打開目標Excel文件,搜索關鍵詞0xFEFFFFFF可以定位到SAT表,SAT表的特征是臨近4字節(jié)整數(shù)遞增排列。圖5是利用關鍵字搜索定位到的數(shù)據(jù)塊,可以看到每四個字節(jié)為一個數(shù)值,所有數(shù)值呈現(xiàn)遞增的特征,并且以0xFEFFFFFF作為結束。因此斷定這是SAT表。從該表中提取出4條數(shù)據(jù)流的存儲鏈表。第1條流:[0,1,2,3,4,5,6,7,-2];第2條流:[8,9,10,11,12,13,14,15,-2];第3條流:[16,17,18,19,20,21,22,23,-2];第4條流:[25,-2]。因為WorkBook流默認從編號為0的block開始存放,因此推斷出第1條數(shù)據(jù)流為WorkBook流,其在Excel文件中的偏移地址范圍是0x0200~0x1000。實驗過程描述如下:殘缺Excel文件名為10.xls,大小為13,824字節(jié)。準備一個目標文件40.xls,內(nèi)容填充大量空格列,目的是使其WorkBook流空間大小遠大于10.xls。將40.xls的WorkBook流數(shù)據(jù)重置為0x00(防止產(chǎn)生混合影響),然后將10.xls的WorkBook流數(shù)據(jù)復制到40.xls文件的0x0200位置,即WorkBook流開始的地方。打開40.xls,可以查看到10.xls的數(shù)據(jù)內(nèi)容,并且公式信息也一并恢復。

圖5 搜索定位的SAT表Fig.5 The SAT table searched and positioned
利用文件頭、尾特征值恢復方法得到的Excel文件經(jīng)常會出現(xiàn)比較嚴重的破損,如果這些文件的WorkBook流中某些關鍵數(shù)據(jù)結構遭到破壞,將無法應用2.2節(jié)的方法提取文本數(shù)據(jù)。經(jīng)過大量測試,發(fā)現(xiàn)WorkBook流中以下數(shù)據(jù)結構對恢復至關重要:“0x0809 Workbook Header”、“0x0085 BOUNDSHEET”、“0x00FC SST內(nèi)容”、“0x00FF Extended SST內(nèi)容”和“0x0809 Sheet內(nèi)容”。以上5種數(shù)據(jù)結構是保證文本信息能夠顯示的最小集合。在其它數(shù)據(jù)結構遭到破壞,而這五種數(shù)據(jù)結構完整的情況下,打開文件時雖然會提示出錯信息,但連續(xù)單擊確定按鈕之后,文本信息仍然可以正常顯示。
3.1 基于關鍵數(shù)據(jù)結構重組的文本恢復方法
針對破損嚴重的Excel文件,本文提出一種“基于關鍵數(shù)據(jù)結構重組的文本恢復方法”。首先準備一個較大的Excel文件(稱為目標文件),將它的WorkBook流數(shù)據(jù)重置為0x00,而后使用Winhex從破損文件中依次提取出WorkBook header、BoundSheet、語言和地區(qū)設置、SST共享字符串、Extended SST和Sheet1的數(shù)據(jù)內(nèi)容,并逐個復制到目標文件的WorkBook流位置,補充缺失的數(shù)據(jù)結構(注SST共享字符串和Sheet1的數(shù)據(jù)內(nèi)容保存了Excel文件的所有文本信息,因此不能缺失),調(diào)整BoundSheet和Extended SST的絕對地址引用。由于提取出的BoundSheet和Extended SST數(shù)據(jù)結構中的絕對地址是相對于原始Excel文件的,移植到目標文件之后各類數(shù)據(jù)結構之間的相對位置發(fā)生了變化,因此這兩種數(shù)據(jù)結構中的絕對地址也必須要進行相應的調(diào)整。
3.2 關鍵數(shù)據(jù)結構重組的文本恢復方法應用
實驗過程如下:殘缺Excel文件名為60.xls,大小為14,336字節(jié)。準備一個目標文件40.xls,內(nèi)容填充大量空格列,目的是使其WorkBook流空間大小遠大于60.xls。將40.xls的WorkBook流數(shù)據(jù)重置為0x00(防止產(chǎn)生混合影響),然后使用Winhex從60.xls中依次提取出WorkBook header、BoundSheet、語言和地區(qū)設置、SST共享字符串、Extended SST和Sheet1的數(shù)據(jù)內(nèi)容,并逐個復制到40.xls的WorkBook流位置,如圖6所示。圖6b顯示的是BoundSheet數(shù)據(jù)結構,其中保存了指向Sheet1~Sheet3數(shù)據(jù)內(nèi)容的指針,由于本例僅測試恢復Sheet1的數(shù)據(jù)內(nèi)容,因此指向Sheet2 和Sheet3的指針不進行調(diào)整。指向Sheet1的指針原值為0x0000094A,復制到目標文件之后,Sheet1的起始位置是0x00000440,如圖6f所示,因此這個指針應調(diào)整為0x00000240。Excel文件中所有文本數(shù)據(jù)都保存在SST共享字符串表中,從殘缺Excel文件中提取出的SST共享字符串表如圖6d所示。圖6e顯示的是Extended SST表,每8個字符串被劃歸為1個區(qū)塊,每個區(qū)塊都有一個指針指向這個區(qū)塊的第一個字符串,由于Extended SST表和SST共享字符串表的相對位置發(fā)生了變化,因此每個區(qū)塊中的指針都需要進行調(diào)整。本例的調(diào)整結果如圖6e所示。
圖7顯示的是恢復出的文本信息和原始文本信息的比較結果??梢员容^清晰地看到,在恢復出的文本信息中原始文件設置的邊框效果,字體、字號、居中對齊方式等格式上的設置信息已經(jīng)丟失,但是最關鍵的文本信息得到了完好的保留。
本篇論文針對破損的Excel文件設計了兩種文本數(shù)據(jù)手工恢復方法,應用這些方法可以提取殘缺Excel文件中殘留的文本數(shù)據(jù)。但是當殘缺文件數(shù)量龐大時,手工恢復方法就會存在效率低下的問題,在今后的工作中,作者計劃研究殘缺Excel文件程序化自動分析方法。
Data Recovery from Incomplete Excel Files
XU Guotian (Liaoning Cyber Security and Investigation Innovation Center, National Police University of China, Shenyang 110854, China)
Objective In computer-related case investigations, Excel fi les from suspect's computers are often damaged and unable to be analyzed. These incomplete Excel fi les usually store a lot of valuable text data, which are signifi cant for the investigation. In this paper, we attempt to develop assays to recover these residues of text data. Methods A WorkBook stream exchange method towards slightly damaged Excel fi le is proposed. First, the target Excel fi le, a large one, is prepared,and its WorkBook stream data is set to 0x00. The WorkBook stream data of incomplete Excel fi le is then input to WorkBook stream of the target Excel file after being extracted with Winhex. The text information of incomplete Excel can be found when double-clicking the target Excel fi le. Another recovery method based on the reconstruction of the key data structure is also designed for severely damaged Excel fi les. A large target Excel fi le is fi rstly prepared with its WorkBook stream data set at 0x00. The WorkBook header, BoundSheet, Language and region, SST shared string, Extended SST and Sheet1 data of incomplete Excel file are extracted successively with Winhex, and then copied to WorkBook stream of the target file. When missing data structure is supplemented, absolute address
for BoundSheet and Extended SST are adjusted,text information of incomplete Excel will be found in the target Excel fi le. Results The target fi le dealt with the WorkBook stream exchange method can recover its texts, formatting and formulas. When open those managed with the key data structure reconstruction, an error message will pop out. But its text information can be displayed after continuously clicking OK button,though the formatting is unrecoverable. Conclusions The proposed methods in this paper can effectively extract the text data in the incomplete Excel fi le.
digital forensics; incomplete Excel fi le; text data; WorkBook; restoration

圖6 關鍵數(shù)據(jù)結構的提取和絕對地址調(diào)整Fig.6 Extraction and absolute address adjustment of key data structure

圖7 恢復出的文本信息和原始文本信息的比較Fig.7 The comparison between the restored information and the original message
DF793.2
A
1008-3650(2015)06-0440-05
10.16467/j.1008-3650.2015.06.003
2014-12-21
公安部技術研究計劃項目(2014JSYJB033);公安部應用創(chuàng)新計劃課題(2014YYCXXJXY055);遼寧省教育科學‘十二五’規(guī)劃課題(JG14db440);遼寧省自然科學基金計劃項目(2015020091)
徐國天,副教授,碩士,研究方向為電子物證和網(wǎng)絡安全。 E-mail: 459536384@qq.com
[1] 徐國天. NTFS系統(tǒng)下“小文件”取證軟件的設計與實現(xiàn).信息網(wǎng)絡安全,2011,52(3):36-42.
[2] 徐國天. NTFS格式存儲設備數(shù)據(jù)恢復方法研究,刑事技術,2015,40(1):55-58.
引用本文格式:徐國天. 殘缺Excel文件數(shù)據(jù)信息恢復方法研究. 刑事技術,2015,40(6):440-444.