2024年2月26日发(作者:)
基于Thumbs.db文件的数据恢复技术研究与开发
杜江;贾昌海
【摘 要】应用软件层的数据恢复,是对某些特殊的文件做分析,解读文件内蕴合的重要信息,恢复出被犯罪嫌疑人删除的作案痕迹、证据等。针对应用软件层的数据恢复研究,以研究Thumbs.db文件格式为例,研究出了怎样在应用软件层,恢复已删除图片的缩略图。并开发出Thumbs.db文件分析软件,通过分析隐藏的系统文件Thumbs.db,可以浏览并保存该文件中记录的包括已删除图片在内的所有图片的缩略图信息。%The data recovery on the application software
level refers to the analysis and interpretation of special files so as to
recover the criminal deleted or destroyed traces and evidence. For the
study of data recovery on the application software level, taking the analysis
of file as an example, proposed a method of how to extract the
thumbnails of deleted picture files on the application software level. And
the analyzing tools, which could save the information of thumbnails, have
been developed.
【期刊名称】《电子设计工程》
【年(卷),期】2011(019)017
【总页数】3页(P10-12)
【关键词】计算机取证;数据恢复;数据分析;Thumbs.db
【作 者】杜江;贾昌海
【作者单位】重庆邮电大学计算机学院,重庆400039;重庆邮电大学通信学院,重庆400039
【正文语种】中 文
【中图分类】TP311.1
随着科技高速发展,以电子数据为表现形式的犯罪行为日益增多。计算机证据作为一种新的证据形式,逐渐成为新的诉讼证据之一。因此计算机式的欺诈、侵犯、窃密、恶意篡改等种种高科技犯取证正逐渐引起人们研究与关注的焦点[1]。
在应用软件层中,有许多应用程序为了缓存或者管理某些数据,通常会把这些数据写到指定的特殊文件格式中,即使这些数据被用户删除了,这些特殊文件中仍保留有这些数据。应用软件层的数据恢复,就是对这些特殊格式的文件做分析,提取文件中存储的内容,重现已被用户删除的数据。
在Windows系统下,文件和文件是两个典型。Windows系统中会存在3个文件。它们分别用来保存IE上网的cookies、临时文件和上网历史的索引信息。文件通常存在于存储有图片文件的路径下。它记录了当前路径下所有图片的缩略图,以及每张图片的文件名,最后修改时间等信息。即使当前路径下所有图片文件已删除,文件仍然保留这些信息。对文件格式的分析以及对缩略图等信息的提取将为公安机关获取犯罪证据,有效打击犯罪提供了技术支持[2-4]。
本文围绕应用软件层数据恢复技术,以Windows操作系统的文件为例,对系统文件的作用及文件结构做详细分析,并将实现文件分析软件,能够方便浏览、保存文件中存储的缩略图等信息,借此验证对文件结构分析的正确性,也进一步展现应用软
件层的数据恢复技术对取证带来的积极意义。
1 文件的作用
在存储图片的路径下,只要以缩略图的形式查看过图片,都会有一个很特殊的文件。它是被隐藏的受保护的操作系统文件,一般情况下是看不到的。
文件是为了提高文件夹在缩略图查看方式下的响应速度而对当前文件夹下的图像文件建立的缓存,可缓存图像文件的格式包括 jpeg、bmp、gif、tif、pdf和 htm。 文件保存在每个包含图片的目录中,里面保存了这个目录下所有图像文件的缩略图,缩略图格式为jpeg,相当于一个缩略图数据库。当以缩略图的形式浏览图片时,就会在当前目录下生成一个文件。在一般情况下,当图片从目录中被删除后,该图片在文件中保存的缩略图仍然存在。
1.1 结构化存储结构
文件采用的是结构化存储(Structured Storage)。所谓结构化存储,就是在文件系统基础之上,又建立了一个存储系统。
文件系统可以看成是一棵树,树根下面的每个节点,可以是目录,也可以是文件。目录还可以有子节点,而文件一定是叶子节点。结构化存储和文件存储极其类似,它实际就是把树状文件系统的原理应用到单个文件中,使得单个文件也能像文件系统一样包含“子目录”,“子目录”还可以包含更深层次的“子目录”,各个“目录”可以含多个“文件”,把原来需要多个文件存储的内容按树状结构和层次保存到一个文件中去[5]。在结构化存储文件中,上述的“目录”和“文件”分别称作仓库(Storage)和数据流(Stream),结构关系如图1所示。
图1 Storage和Stream的关系Fig.1 Storage and Stream’s relations
结构化存储有很多优点。1)如同磁盘存储机制一样,这种存储方法可以极大程度的提高磁盘空间使用效率;2)这种存储机制便于在单个文件中就能明确内容的归
属关系和分类关系;3)在软件分发过程中不需要带一大批的分发文件,就可以把数据文件归结到一个文件中去[6]。
文件的访问 API(Application Programming Interface,应用程序编程接口)没有被公开,但是可以通过微软提供的结构化存储文件读写API对文件结构做进一步的分析。
文件中有一个名称为Catalog的数据流,它保存了整个文件里面缓存的所有图片的属性信息。其余的流均以数字命名,分别对应一个缩略图文件数据,姑且把这种以数字命名的数据流称作缩略图数据流。下面以一个具体的文件为例,对它的两种数据流的结构做详细地分析。
1.2 Catalog数据流
Catalog数据流包含了两部分内容,第一部分定义为Header,第二部分定义为
Items。用 DocFile Viewer打开Catalog数据流,如图2所示。
Catalog数据流的格式如表1所示。
Header偏移0H~3H通常是固定的4个字节 10H 00H 07H 00H(从低位到高位),该数据对提取图片信息无意义;偏移4H~7H表示文件缓存的图片个数;偏移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字节偏移 字段长度(字节) 描述Catalog头部0x00 4 通常为0x70010 0x04 4 缓存的图片个
数(M)0x08 4 缩略图宽的最大像素数0x0C 4 缩略图高的最大像素数0x10 4 该item占用的字节数(N)0x14 4 缩略图的ID号0x18 8 原图片的最后修改时间0x20 N-18 原图片文件名的UNICODE编码0x20+N-18 2 item以两个字节的0结尾第二个item … … ……………第M个item … … …第一个item
1.3 缩略图数据流
缩略图数据流,是以他们对应的缩略图的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字节偏移 字段长度/字节 描述0x00 8 通常为0x10000000C 0x08 4 缩略图文件数据大小(N字节)0x0C N 缩略图文件数据
由此可见,只要通过调用微软提供的结构化存储文件读写API,借助上面分析得出的两种数据流的结构,就很容易提取出文件缓存的所有图片的缩略图信息及其他属性信息。
2 文件分析模块的设计与实现
软件可分解为3个子模块:文件加载模块、信息显示模块和缩略图保存模块。
文件加载模块,首先要判断被打开的文件的合法性,比如文件是否存在,是否是结构化存储文件等。合法性检验通过并成功打开之后,读取Catalog数据流,根据Catalog数据流的格式,获取该文件缓存的图片总数,并遍历所有item结果,获取每张缩略图对应的ID号、对应的原图片的文件名、对应的原图片
的最后修改时间。根据缩略图ID号,可以很容易的找到对应的缩略图数据流。将这些信息存储在一个item数组中。数组的大小自然是缓存的图片的总张数。
信息显示模块,即是通过文件加载模块处理后的结果,把缩略图以及缩略图对应的原图片的相关属性显示到界面上。
缩略图保存模块,也是通过文件加载模块处理后的结果,并由用户指定要保存的缩略图,从相应的缩略图数据流中读取数据,写入新的文件中,并以原文件名命名,并将新文件的最后修改时间设置为原文件的最后修改时间。
程序中涉及两个重要结构体,即Catalog数据流的头结构,和Catalog数据流的Item结构。
通过CatalogHeader的thumbCount成员可以获取到缩略图的个数,通过CatalogItem可以获取到每个缩略图的具体信息。做为文件加载模块的产物,需要定义一个全局的CatalogItem数组,用来记录文件中每张缩略图的信息,信息显示模块和缩略图保存模块就可以很方便地根据这个CatalogItem数组显示信息和保存图片。
3 结束语
随着计算机取证技术的发展,数据恢复技术作为计算机取证技术中的核心技术,正在成为计算机取证领域重要的研究热点。为了实现更彻底、更全面的恢复被删除的数据,本文提出了基于应用软件层的数据恢复技术,阐述了应用软件层数据恢复技术的意义及研究内容。并开发出文件分析软件,实现了以下主要功能:1)解析指定的文件,显示文件中存储的现存的或已删除的图片的缩略图及文件名、最后修改时间等信息。2)可将缩略图另存为.jpg格式的文件。文件名以原文件的文件名命名,并将最后修改时间设置为原文件的最后修改时间,并
将文件设置为只读。
【相关文献】
[1]孙波.计算机取证方法关键问题研究[D].北京:中国科学院软件研究所,2004.
[2]Dixon 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.


发布评论