杜 江,賈昌海
(1.重慶郵電大學 計算機學院,重慶 400039;2.重慶郵電大學 通信學院,重慶 400039)
隨著科技高速發展,以電子數據為表現形式的犯罪行為日益增多。計算機證據作為一種新的證據形式,逐漸成為新的訴訟證據之一。因此計算機式的欺詐、侵犯、竊密、惡意篡改等種種高科技犯取證正逐漸引起人們研究與關注的焦點[1]。
在應用軟件層中,有許多應用程序為了緩存或者管理某些數據,通常會把這些數據寫到指定的特殊文件格式中,即使這些數據被用戶刪除了,這些特殊文件中仍保留有這些數據。應用軟件層的數據恢復,就是對這些特殊格式的文件做分析,提取文件中存儲的內容,重現已被用戶刪除的數據。
在Windows系統下,index.dat文件和Thumbs.db文件是兩個典型。Windows系統中會存在3個index.dat文件。它們分別用來保存IE上網的cookies、臨時文件和上網歷史的索引信息。Thumbs.db文件通常存在于存儲有圖片文件的路徑下。它記錄了當前路徑下所有圖片的縮略圖,以及每張圖片的文件名,最后修改時間等信息。即使當前路徑下所有圖片文件已刪除,Thumbs.db文件仍然保留這些信息。對Thumbs.db文件格式的分析以及對縮略圖等信息的提取將為公安機關獲取犯罪證據,有效打擊犯罪提供了技術支持[2-4]。
本文圍繞應用軟件層數據恢復技術,以Windows操作系統的Thumbs.db文件為例,對系統文件Thumbs.db的作用及文件結構做詳細分析,并將實現Thumbs.db文件分析軟件,能夠方便瀏覽、保存Thumbs.db文件中存儲的縮略圖等信息,借此驗證對Thumbs.db文件結構分析的正確性,也進一步展現應用軟件層的數據恢復技術對取證帶來的積極意義。
在存儲圖片的路徑下,只要以縮略圖的形式查看過圖片,都會有一個很特殊的文件Thumbs.db。它是被隱藏的受保護的操作系統文件,一般情況下是看不到的。
Thumbs.db文件是為了提高文件夾在縮略圖查看方式下的響應速度而對當前文件夾下的圖像文件建立的緩存,可緩存圖像文件的格式包括 jpeg、bmp、gif、tif、pdf和 htm。 Thumbs.db文件保存在每個包含圖片的目錄中,里面保存了這個目錄下所有圖像文件的縮略圖,縮略圖格式為jpeg,相當于一個縮略圖數據庫。當以縮略圖的形式瀏覽圖片時,就會在當前目錄下生成一個Thumbs.db文件。在一般情況下,當圖片從目錄中被刪除后,該圖片在Thumbs.db文件中保存的縮略圖仍然存在。
Thumbs.db文件采用的是結構化存儲(Structured Storage)。所謂結構化存儲,就是在文件系統基礎之上,又建立了一個存儲系統。
文件系統可以看成是一棵樹,樹根下面的每個節點,可以是目錄,也可以是文件。目錄還可以有子節點,而文件一定是葉子節點。結構化存儲和文件存儲極其類似,它實際就是把樹狀文件系統的原理應用到單個文件中,使得單個文件也能像文件系統一樣包含“子目錄”,“子目錄”還可以包含更深層次的“子目錄”,各個“目錄”可以含多個“文件”,把原來需要多個文件存儲的內容按樹狀結構和層次保存到一個文件中去[5]。在結構化存儲文件中,上述的“目錄”和“文件”分別稱作倉庫(Storage)和數據流(Stream),結構關系如圖1所示。

圖1 Storage和Stream的關系Fig.1 Storage and Stream’s relations
結構化存儲有很多優點。1)如同磁盤存儲機制一樣,這種存儲方法可以極大程度的提高磁盤空間使用效率;2)這種存儲機制便于在單個文件中就能明確內容的歸屬關系和分類關系;3)在軟件分發過程中不需要帶一大批的分發文件,就可以把數據文件歸結到一個文件中去[6]。
Thumbs.db文件的訪問 API(Application Programming Interface,應用程序編程接口)沒有被公開,但是可以通過微軟提供的結構化存儲文件讀寫API對Thumbs.db文件結構做進一步的分析。
Thumbs.db文件中有一個名稱為Catalog的數據流,它保存了整個Thumbs.db文件里面緩存的所有圖片的屬性信息。其余的流均以數字命名,分別對應一個縮略圖文件數據,姑且把這種以數字命名的數據流稱作縮略圖數據流。下面以一個具體的Thumbs.db文件為例,對它的兩種數據流的結構做詳細地分析。
Catalog數據流包含了兩部分內容,第一部分定義為Header,第二部分定義為 Items。用 DocFile Viewer打開Catalog數據流,如圖2所示。
漢語拼音與英文混用這種翻譯錯誤為數不少,即翻譯內容一些是漢語拼音,一些是英文,使人不知所云。例如,在楚雄的某公交車宣傳畫上,“曙光醫院”被譯為“Shu Light Hospital”,可以改為“Shuguang Hospital”;彝人古鎮中的“茶花溪”被譯為“Camellia Xi”,建議改為“Camellia Stream”;“環城西路”被譯為“Huan Cheng Xi Road”,應改為“West Ring Road”。
Catalog數據流的格式如表1所示。
Header偏移0H~3H通常是固定的4個字節 10H 00H 07H 00H(從低位到高位),該數據對提取圖片信息無意義;偏移4H~7H表示Thumbs.db文件緩存的圖片個數;偏移8H~BH和CH~FH分別表示緩存的縮略圖寬的最大值和高的最大值。Items是一個列表,列表的每個元素item指明了一個被緩存的圖片的相關屬性。item偏移0H~3H表示該item占用的字節數(假設為N);偏移4H~7H表示縮略圖的ID號;偏移8H~FH表示原圖片文件的最后修改時間;緊接著的數據表示的是原圖片文件的文件名的UNICODE碼,以雙字節0x0000結尾,占用N-18個字節;最后就是表示該item的結尾標志0x0000,占用兩個字節。

圖2 Catalog數據流Fig.2 Catalog stream

表1 Catalog數據流的結構Tab.1 Structure of Catalog Stream
縮略圖數據流,是以他們對應的縮略圖的ID號的十進制數反序命名的,這些數據流格式都是相同的,偏移0H~7H通常是固定的8個字節0CH 00H 00H 00H 01H 00H 00H 00H(從低位到高位),該數據對提取圖片信息無意義;偏移8H~BH表示該縮略圖文件數據占用的字節數;其余數據便是該縮略圖文件的數據內容。用DocFile Viewer打開縮略圖數據流,如圖3所示。

圖3 縮略圖數據流Fig.3 Thumbnails stream
根據上面的分析,可將縮略圖數據流的格式歸納如下,如表2所示。

表2 縮略圖數據流的結構Tab.2 Structure of thumbnail stream
由此可見,只要通過調用微軟提供的結構化存儲文件讀寫API,借助上面分析得出的兩種數據流的結構,就很容易提取出Thumbs.db文件緩存的所有圖片的縮略圖信息及其他屬性信息。
文件加載模塊,首先要判斷被打開的文件的合法性,比如文件是否存在,是否是結構化存儲文件等。合法性檢驗通過并成功打開之后,讀取Catalog數據流,根據Catalog數據流的格式,獲取該Thumbs.db文件緩存的圖片總數,并遍歷所有item結果,獲取每張縮略圖對應的ID號、對應的原圖片的文件名、對應的原圖片的最后修改時間。根據縮略圖ID號,可以很容易的找到對應的縮略圖數據流。將這些信息存儲在一個item數組中。數組的大小自然是緩存的圖片的總張數。
信息顯示模塊,即是通過文件加載模塊處理后的結果,把縮略圖以及縮略圖對應的原圖片的相關屬性顯示到界面上。
縮略圖保存模塊,也是通過文件加載模塊處理后的結果,并由用戶指定要保存的縮略圖,從相應的縮略圖數據流中讀取數據,寫入新的文件中,并以原文件名命名,并將新文件的最后修改時間設置為原文件的最后修改時間。
程序中涉及兩個重要結構體,即Catalog數據流的頭結構,和Catalog數據流的Item結構。


通過CatalogHeader的thumbCount成員可以獲取到縮略圖的個數,通過CatalogItem可以獲取到每個縮略圖的具體信息。做為文件加載模塊的產物,需要定義一個全局的CatalogItem數組,用來記錄Thumbs.db文件中每張縮略圖的信息,信息顯示模塊和縮略圖保存模塊就可以很方便地根據這個CatalogItem數組顯示信息和保存圖片。
隨著計算機取證技術的發展,數據恢復技術作為計算機取證技術中的核心技術,正在成為計算機取證領域重要的研究熱點。為了實現更徹底、更全面的恢復被刪除的數據,本文提出了基于應用軟件層的數據恢復技術,闡述了應用軟件層數據恢復技術的意義及研究內容。并開發出Thumbs.db文件分析軟件,實現了以下主要功能:1)解析指定的Thumbs.db文件,顯示文件中存儲的現存的或已刪除的圖片的縮略圖及文件名、最后修改時間等信息。2)可將縮略圖另存為.jpg格式的文件。文件名以原文件的文件名命名,并將最后修改時間設置為原文件的最后修改時間,并將文件設置為只讀。
[1]孫波.計算機取證方法關鍵問題研究[D].北京:中國科學院軟件研究所,2004.
[2]Dixon PD.An overview of computer forensics[J].IEEE Potentials,2005:7-10.
[3]周琳娜,王東明.數字圖像的取證技術[M].北京:北京郵電大學出版社,2008:10-15.
[4]蔣燁.計算機主機隱秘信息取證技術的研究[D].上海:上海交通大學,2008.
[5]劉乃琦,郭建東.系統與數據恢復技術[M].成都:電子科技大學出版社,2008:126-173.
[6]龔勇.Windows下數據恢復的研究 [D].成都:電子科技大學,2008:73-95.