徐國天
(中國刑事警察學院,沈陽 110854)
Excel是Of fi ce辦公軟件集的一個重要成員,它有比較強大的數(shù)據(jù)存儲和處理能力,操作簡單、快捷。Excel文件中存儲的數(shù)據(jù)信息對公安機關的調查、取證工作有重要意義。犯罪分子為了逃避法律的制裁,會惡意刪除或修改涉案Excel文件中的關鍵數(shù)據(jù),如何恢復這些數(shù)據(jù)信息是值得研究的課題。
在實際工作中我們發(fā)現(xiàn)存在這樣一種現(xiàn)象:被刪除的涉案Excel文件仍有大量數(shù)據(jù)殘留在磁盤內,但是現(xiàn)有數(shù)據(jù)恢復工具(如Final Data、取證大師)的自動恢復功能卻無法成功恢復,導致重要線索的遺失。本文對這一現(xiàn)象展開研究,分析Excel文件碎片的形成原因、研究現(xiàn)有工具的自動恢復功能無法有效恢復Excel數(shù)據(jù)碎片的機理,提出Excel文件碎片的手工檢驗方法。本篇論文的研究對象為2003版Excel文件,2007版以上的Excel文件采用ZIP壓縮格式存儲,不適用本文介紹方法。對2007版以上Excel數(shù)據(jù)碎片的恢復方法另行研究。
現(xiàn)有數(shù)據(jù)恢復工具(如Final Data、取證大師)的自動恢復功能普遍采用基于文件首尾特征值的數(shù)據(jù)恢復方法[1]。圖1顯示的是一塊硬盤的存儲空間,陰影區(qū)域代表已被某些文件使用的存儲空間,空白區(qū)域代表空閑的、可以使用的存儲區(qū)域。假設這時用戶向硬盤拷貝了三個文件,分別放置在這三塊存儲空間內,隨后用戶刪除了這三個文件。刪除之后,文件數(shù)據(jù)并沒有從磁盤內消失,只是這三塊空間的存儲狀態(tài)由已占用狀態(tài)重新變換為空閑狀態(tài)。
由于每類文件都有固定的首部和尾部特征值[2],例如Excel文件的起始8個字節(jié)數(shù)據(jù)固定為:D0 CF 11 E0 A1 B1 1A E1?,F(xiàn)有數(shù)據(jù)恢復工具可以從這三塊存儲空間內識別出三組文件首部特征值和尾部特征值。利用這三組首、尾特征值可以確定每個文件的起始和結束位置,進而完成文件恢復。
圖1 現(xiàn)有數(shù)據(jù)恢復工具采用的首、尾特征值恢復方法Fig.1 The on-going recovery by utilization of the characteristic values of the head and tail
在實際應用當中我們發(fā)現(xiàn)現(xiàn)有數(shù)據(jù)恢復工具的自動恢復功能存在一個比較嚴重的應用缺陷,某些文件被刪除之后,雖然這些文件仍有大量數(shù)據(jù)殘留在硬盤內,但是現(xiàn)有軟件卻無法成功恢復[2]。
仍然用上文的例子來說明。這三個文件被刪除之后,隨著計算機的使用,文件2和文件3的首部存儲空間被其它文件重新使用,導致這兩個文件的首部特征值被覆蓋破壞,文件2和文件3殘留數(shù)據(jù)即為碎片。現(xiàn)有數(shù)據(jù)恢復工具只能提取到文件1的首部和尾部特征值,進而恢復文件1,而無法識別出文件2和3的首部特征值,導致這兩個文件雖然仍有大量數(shù)據(jù)殘留在磁盤內,但是使用現(xiàn)有工具的自動恢復功能卻無法成功恢復(見圖2)。
圖2 數(shù)據(jù)碎片無法有效恢復原因分析Fig.2 The reason why the data fragments cannot be effectively recovered
對于Of fi ce文檔、數(shù)據(jù)庫、圖片等結構化文件,其內部數(shù)據(jù)有固定的存儲特征值,可以根據(jù)這些特征值定位到數(shù)據(jù)碎片,再進一步識別出文件殘留數(shù)據(jù)的起始和結束位置,進而完成文件恢復,利用這種方式可以恢復現(xiàn)有工具所不能恢復的一些數(shù)據(jù)文件。
圖3說明了這種恢復方法。根據(jù)文件內部數(shù)據(jù)特征值定位到文件2和3的數(shù)據(jù)碎片,再確定兩個碎片的起始和結束位置,進而完成碎片提取。但是利用這種方式恢復出的數(shù)據(jù)文件通常首部結構已經缺失,導致這些文件無法正常使用。因此需要對這些殘缺文件進行修復,使其可以正常使用。
圖3 數(shù)據(jù)碎片的定位和提取Fig.3 Location and extraction of data fragments
對于輕度破損的文件,即只是文件首部和尾部數(shù)據(jù)遭到破壞,中間絕大部分數(shù)據(jù)并未遭到破壞,這時可以通過補充頭部和尾部數(shù)據(jù)結構的方式進行修復,使其還原為一個可以正常使用的完整文件。
對于重度破損的文件,即文件各段數(shù)據(jù)均遭到嚴重破壞,已無法通過增補頭、尾數(shù)據(jù)結構的方式來進行修復。此時提取出文件中殘留的文字、圖片和表格數(shù)據(jù),分類呈現(xiàn)給檢驗人員。
下面通過一起真實的案件說明Excel數(shù)據(jù)碎片的檢驗方法。案情簡介如下:某派出所于2016年4月11日接到轄區(qū)某市場報案稱其門口保安及收銀員使用打假票據(jù)的方式私自侵占公司貨車進車費,非法獲利80余萬元。經查,犯罪嫌疑人在收銀電腦中新建一個Excel表格,在表格內模仿公司收費軟件打出三聯(lián)票據(jù),私自侵占公司貨車進車費。送檢物證包括Intel硬盤一個,容量為60G。要求對送檢的硬盤中犯罪嫌疑人打印假票據(jù)使用的Excel表格內容進行恢復,查找其打印過的假票據(jù)數(shù)量。
辦案人員復制了涉案硬盤,所有檢驗均在復制硬盤中進行,以保證被檢驗數(shù)據(jù)的完整性和有效性。使用Final Data和取證大師的自動恢復功能對復制硬盤進行了全盤掃描,未提取到任何涉案Excel文件數(shù)據(jù)。
通過對案情進一步了解,初步找到了造成這一現(xiàn)象的原因。為了掩蓋犯罪痕跡,嫌疑人打印假票據(jù)之后,很少向硬盤保存數(shù)據(jù),即使保存了少量文件,也會盡快刪除。因此在硬盤內殘留的Excel痕跡非常少,且均破損嚴重,導致使用現(xiàn)有數(shù)據(jù)恢復工具的自動恢復功能提取不到任何涉案數(shù)據(jù)。
手工提取Excel數(shù)據(jù)碎片步驟如下:首先確定原始Excel文件中的一組數(shù)據(jù)作為搜索特征值,之后使用winhex在磁盤空間內定位這組特征值,再通過人工分析方式排除誤報,提取有效數(shù)據(jù)。手工分析的關鍵點是如何確定搜索特征值,如字節(jié)過少,會導致大量誤報現(xiàn)象。如字節(jié)過多,會導致漏報現(xiàn)象。因此在實際操作過程中也需要測試多組關鍵詞,以保證不漏掉任何一組痕跡。
雖然沒有原始Excel文件作為參考,但是由于嫌疑人模仿的是正規(guī)收費軟件打印出的三聯(lián)票據(jù),因此我們可以在三聯(lián)票據(jù)中尋找特征點,圖4為正規(guī)收費軟件打印出的三聯(lián)票據(jù)。在選取特征點時盡量選取重復多次出現(xiàn)的數(shù)據(jù),這樣的數(shù)據(jù)即使幾個特征點被覆蓋了,也仍可能有部分特征點遺留在磁盤內。相反,如果選擇出現(xiàn)次數(shù)較少的特征點,一旦該特征點被覆蓋,即使殘留了大量其它數(shù)據(jù),也無法有效提取。
按照這一原則,在圖4中“噸”和“元”均可以作為備選的特征點。但是如果直接在磁盤內搜索這兩個數(shù)值會導致大量誤報現(xiàn)象,因此還需要增加特征點的字節(jié)長度。觀察圖4中的數(shù)據(jù),“噸”和“元”與前面的數(shù)值數(shù)據(jù)之間存在一些距離。據(jù)此推測,在Excel文件中,這個區(qū)域應該存在若干個空格,具體設置為幾個空格需要實際測試確定。這些空格字符起到排除歧義的作用,文中簡稱為排歧空格。這里初步確定兩組特征點,第一組為“空格 空格 噸”,第二組為“空格 空格 元”。
圖 4 正規(guī)收費軟件打印出的三聯(lián)票據(jù)Fig.4 A printed bill to show the feature values
接下來,需要確定搜索特征點的十六進制編碼。由于Excel文件默認采用Unicode編碼保存數(shù)據(jù),因此可以新建一個文本文件,輸入特征值,再將文件另存為Unicode編碼格式。最后使用winhex打開文本文件,即可查看到特征值所對應的十六進制數(shù)據(jù)。通過這種方法可以確定,第一組特征點十六進制值為2000 2000 2854,第二組為2000 2000 4351。
使用winhex在磁盤空間內搜索這兩組特征值,很快定位到圖5所示第一組數(shù)據(jù)塊。這組數(shù)據(jù)的起始位置是0X38E8A4200,這個位置恰好為扇區(qū)邊界,前面的數(shù)據(jù)均為0X00,說明之前的Excel數(shù)據(jù)已經被覆蓋。在這組數(shù)據(jù)塊中共提取出四組信息,分別是“出場日期”、“前四后四”、“80 元”和“0 元”。
圖5 第一組數(shù)據(jù)塊Fig.5 The fi rst data set to locate the feature values
因為涉案Excel文件中文字數(shù)據(jù)量很少,只有十一行數(shù)據(jù)。因此在定位到一組特征點之后搜索范圍可以確定為向上4個扇區(qū)和向下4個扇區(qū),在此區(qū)間內可以提取到所有殘留數(shù)據(jù)。圖6為在臨近位置提取到的第二組數(shù)據(jù)塊,該數(shù)據(jù)塊攜帶的信息為“單號:”“0 1 0 0 0 0 0 1 3 4 7 6 7”“2015年3月26日21時24分→”和“2015年3月26日 21時24分”。
圖6 第二組數(shù)據(jù)塊Fig.6 Second data set to locate the feature values
圖7為在臨近位置提取到的第三組數(shù)據(jù)塊,該數(shù)據(jù)塊攜帶的信息為“遼CG***8”“小孔”“南菜”“37.32噸”“15.78噸”“21.54噸”和“1730元”。
圖7 第三組數(shù)據(jù)塊Fig.7 Third data set to locate the feature values
三聯(lián)票據(jù)上的每項數(shù)據(jù)信息均由兩部分組成,即字段名和字段值,例如“品名”為字段名,“南菜”為字段值。通過分析我們發(fā)現(xiàn),所有字段名數(shù)據(jù)集中存儲,所有字段值數(shù)據(jù)集中存儲。在本例中所有字段名信息已經被覆蓋,無法提取。但是由于每張票據(jù)的字段名信息均為相同值,因此這部分數(shù)據(jù)可以作為已知信息。圖5~7提取出的每項字段值均可以從內容上區(qū)分出對應的是哪個字段,因此可以得到圖8所示的計算結果。
圖8 提取出的Excel數(shù)據(jù)Fig.8 Excel fi le recovered by the extracted data
利用這種手工分析方式,在涉案硬盤中共提取到10組假票據(jù)信息。
為了防止出現(xiàn)漏檢情況,還需要更換不同的特征值進行多次檢測,以確保結果的準確性。作者選取了“入場日期”和“出場日期”中均攜帶的“日 空格 空格”作為特征值對磁盤進行了再次搜索。
除了定位到之前那10組Excel數(shù)據(jù)碎片之外,還提取到一些殘留極少量數(shù)據(jù)的碎片塊。圖9為其中一個碎片塊,從這個數(shù)據(jù)塊只提取到一個日期數(shù)據(jù)“2015年7月13日 21時24分”。由于缺少其它關聯(lián)信息的相互認證,因此無法憑借這一條信息認定它屬于涉案數(shù)據(jù)碎片。
圖9 殘留極少量數(shù)據(jù)的碎片塊Fig.9 One fragment that reveals only small amount of data
本文研究了一種手工定位、提取Excel數(shù)據(jù)碎片的方法,應用這種方法可以有效提取磁盤內殘留的Excel數(shù)據(jù)碎片,恢復某些現(xiàn)有工具的自動恢復功能所不能提取的Excel數(shù)據(jù)。但是如果涉案硬盤內殘留的Excel數(shù)據(jù)碎片較多,應用這種方法的操作效率就會降低,因此作者計劃在后續(xù)的研究工作中設計一款軟件系統(tǒng),實現(xiàn)自動化的數(shù)據(jù)碎片定位和提取任務。
需要特別說明一點,由于涉案數(shù)據(jù)為純文本內容,數(shù)據(jù)量很少,因此數(shù)據(jù)被截斷、處于不連續(xù)存儲狀態(tài)的可能性很小。如果出現(xiàn)這種情況,應用本文提出的手工恢復方法可以提取到兩個數(shù)據(jù)碎片,但無法認定這兩個碎片屬于同一個原始Excel文件。
[1] 戴士劍,涂彥暉. 數(shù)據(jù)恢復技術[M]. 2版. 北京:電子工業(yè)出版社,2005.
[2] 徐國天. 殘缺Excel文件數(shù)據(jù)信息恢復方法研究[J]. 刑事技術,2015, 40(6): 440-444.