CN102053881A - 一种基于内容的Zip文件雕复方法 - Google Patents

一种基于内容的Zip文件雕复方法 Download PDF

Info

Publication number
CN102053881A
CN102053881A CN 201110002276 CN201110002276A CN102053881A CN 102053881 A CN102053881 A CN 102053881A CN 201110002276 CN201110002276 CN 201110002276 CN 201110002276 A CN201110002276 A CN 201110002276A CN 102053881 A CN102053881 A CN 102053881A
Authority
CN
China
Prior art keywords
chained list
zip file
zip
positional information
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 201110002276
Other languages
English (en)
Other versions
CN102053881B (zh
Inventor
徐�明
卫英杰
张海平
徐建
郑宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Dianzi University
Original Assignee
Hangzhou Dianzi University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Dianzi University filed Critical Hangzhou Dianzi University
Priority to CN 201110002276 priority Critical patent/CN102053881B/zh
Publication of CN102053881A publication Critical patent/CN102053881A/zh
Application granted granted Critical
Publication of CN102053881B publication Critical patent/CN102053881B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种基于内容的Zip文件雕复方法。目前的方法文件恢复效果不好。本发明方法首先获取需要恢复的磁盘分区数据,在磁盘分区上搜索Zip文件数据块并保存这些数据块的位置信息;其次排除非Zip数据块,对Zip数据块的关键信息进行存储并定位一个完整的Zip文件;然后对组成一个完整Zip文件的各个部分进行排序;最后输出一个Zip文件,结束雕复过程。本发明方法运行速度快,能在短时间内搜索出组成Zip文件的各个子部分。

Description

一种基于内容的Zip文件雕复方法
技术领域
本发明属于信息安全与计算机应用技术领域,涉及一种Zip文件恢复方法,特别是一种对磁盘中已经删除,相关文件系统元信息遭到破坏时的Zip文件恢复方法。
背景技术
随着计算机和网络技术的不断发展,计算机取证技术渐渐成为打击高科技犯罪的关键技术手段之一。打击计算机犯罪的关键是如何将犯罪者留在计算机中的“痕迹”作为有效的诉讼证据提供给法庭,以便将犯罪者绳之以法。此过程涉及的技术就是计算机取证技术。计算机取证学作为设计计算机、刑事侦查学和法学领域的交叉学科,受到了越来越多的关注。而数据恢复技术则是计算机取证中的核心技术之一。数据恢复技术主要依赖于文件系统元信息和特定的文件头(Header)、尾(Footer)结构技术。基于文件系统元信息和特定文件头尾结构的恢复技术往往只能恢复在磁盘上连续存放的文件。此外,当前数据恢复技术面临反计算机取证技术的考验越来越严峻。文件雕复就是针对这些情况而提出的一种数据恢复技术,它从表面上无结构的二进制数据流(即原始磁盘映像)中试图恢复、重构文件,而不依赖于源磁盘映像的文件系统;也即是说雕复是一个不依赖于文件系统分配信息的从磁盘映像中抽取出文件的过程。
目前,国内外在此领域的研究刚刚起步。国内还没有比较成熟的文件雕复软件,目前比较著名的文件雕复软件均为国外产品如Easy Recovery,Recover My Files等,这些商业软件虽然支持大量的不同种类文件,但是效果都不理想。具体表现为恢复的正确率低,产生大量的假肯定。Zip文件作为最常用的压缩文件之一,其优点主要在于:(1)普及率高,跨平台,不需要安装专门的解压工具就可以读取文件信息,大部分在Internet上共享的都是zip压缩文件。(2)压缩速度快,利于文件打包,不仅可以缩小原有文件体积便于携带,同时可以保证文件的安全性。
目前,zip文件雕复的基本技术依然是利用文件系统和文件类型的特有信息(File type-specific information)来恢复文件。文件类型最基本的特征的是Header和Footer,因此可以把这种基本技术称为Header-Footer Carving。Header指示文件的开始数据快,Footer表示文件的结束数据块,两者之间的数据即是该文件内容。基于Header-Footer的雕复技术,在处理Zip文件雕复问题时,仅能解决在磁盘上连续存放的情况,并且由于Zip文件的文件头和文件尾不容易精确定位,传统的Header-Footer Carving并不能得到很好的结果,目前用于学术研究的一些雕复工具如:Foremost,Scalpel,PhotoRec等在实际磁盘的测试中由于采用了类似的雕复技术,虽然在假肯定率上比商业软件有所降低,但由于只能恢复连续存放的文件,因此仍不能得到让人满意的效果。
发明内容
本发明的目的是在于克服现有技术中的不足,针对Zip文件结构的独特性,提供一种Zip文件雕复方法,特别是一种对磁盘中已经删除,相关文件系统元信息遭到破坏时的Zip文件恢复方法。能面向数据恢复和计算机勘查、侦破、取证工作的需要,对用户计算机中的Zip文件进行恢复,从而可以对Zip文件进行取证分析,寻找犯罪证据。
本发明的方法具体步骤如下:
步骤(1)根据用户输入信息定位到需进行文件雕复操作的磁盘分区,通过使用系统API函数获取磁盘分区的必要信息,所述的必要信息包括磁盘分区的大小、扇区数和簇数目;
步骤(2)利用Zip文件中对应于Zip File Header,Central Directory和End Central  Directory的三个魔数特征字符串,对整个磁盘分区进行扫描,查找Zip文件中Zip File Header,Central Directory和End Central  Directory在磁盘分区上的位置,并将这三类位置信息分别保存至数组A、数组B和数组C中;
步骤(3)对数组A和数组B中位置信息所对应的数据块进行预处理,具体是:通过每一数据块中文件名字段存放的文件名来排除非Zip数据块,并删除非Zip数据块在数组中的位置信息;
步骤(4)获取数组A中位置信息所对应的每一个数据块的位置信息及内容字段,将位置信息及内容字段作为一个节点插入至链表L A ;获取数组B中位置信息所对应的每一个数据块的位置信息及内容字段,将位置信息及内容字段作为一个节点插入至链表L B ;获取数组C中位置信息所对应的每一个数据块的位置信息及内容字段,将位置信息及内容字段作为一个节点插入至链表L C
步骤(5)定位一个完整的Zip文件,具体是:
5-1判断链表L C 是否为空,如果L C 非空,则获取链表L C 首节点信息后删除该节点,创建以该节点为首节点的待恢复Zip文件链表L Z ;如果L C 为空,则雕复过程结束;
5-2判断链表L B 是否为空,如果L B 非空,则在链表L B 中查找满足                                               的Central Directory,如果在链表L B 中没有找到满足条件的Central Directory,则清空链表L Z 并转入步骤5-1;如果在链表L B 中找到满足条件的Central Directory,则将Central Directory插入至链表L Z 尾部,删除该Central Directory在链表L B 中对应的节点;如果L B 为空,则雕复过程结束;其中为对应的数据块在文件中的偏移量,为对应的数据块在磁盘分区中的偏移量,
Figure 201110002276X100002DEST_PATH_IMAGE008
为磁盘分区簇大小;
5-3判断链表L A 是否为空,如果L A 非空,则设置Zip File Header的标记位M为假,根据Central Directory在链表L A 中查找满足
Figure 339043DEST_PATH_IMAGE002
的Zip File Header,如果L A 为空,则雕复过程结束;如果M为假且在链表L A 中没有找到满足条件的Zip File Header,则清空链表L Z 并转入步骤5-1;如果M为真且在链表L A 中没有找到满足条件的Zip File Header,则转入步骤(6);如果在链表L A 中找到满足条件的Zip File Header,则将Zip File Header插入至链表L Z 尾部,删除该Zip File Header在链表L A 中对应的节点,设置M标记位为真,并重复执行步骤5-3;
步骤(6)对Zip文件链表L Z 进行排序,具体是将链表L Z 中各节点所对应的数据块在Zip文件中的偏移量大小按从小到大次序进行排序;
步骤(7)遍历链表L Z ,输出一个完整的zip文件,转入步骤(5)。
本发明根据Zip文件结构和内容的特有信息,对用户计算机磁盘进行搜索,尽可能多的恢复Zip文件。本发明从总体上提供了一种新型的Zip文件雕复解决方案,能够快速、高效,精确的恢复Zip文件。具体来说,实现了以下几个目标:
能够将磁盘中已删除,相应的文件系统元信息遭到破坏的Zip文件恢复出来;
能够恢复到目前为止的任意版本的Zip文件,不受各版本文件格式变化限制;
能够恢复部分高度分片的Zip文件;
能够有效的减少假肯定,恢复正确率较高。
具体的实施效果:(1)运行速度快,能在短时间内搜索出组成Zip文件的各个子部分;(2)能够精确匹配出属于同一个Zip文件的所有子部分;(3)程序对硬件要求低,系统资源占用少,使用方便。
附图说明
图1本发明的Zip文件预处理流程图;
图2本发明的Zip文件雕复流程图。
具体实施方式
以下结合附图对本发明作进一步描述。
图1给出的是zip文件雕复预处理流程图。从图中可以看出对zip文件雕复整个过程进行预处理包括以下几个步骤:
步骤(1)根据用户输入信息定位到需进行文件雕复操作的磁盘分区,通过使用系统API函数获取磁盘分区的必要信息,所述的必要信息包括磁盘分区的大小、扇区数和簇数目;
步骤(2)利用Zip文件中对应于Zip File Header,Central Directory和End Central  Directory的三个魔数特征字符串,其中Zip File Header数据块的魔数特征字符串为“PK0x030x04”,Central Directory数据块的魔数特征字符串为“PK0x010x02”,End Central  Directory数据块的魔数特征字符串为“PK0x050x06”,对整个磁盘分区进行扫描,查找Zip文件中Zip File Header,Central Directory和End Central  Directory在磁盘分区上的位置,并将这三类位置信息分别保存至数组A、数组B和数组C中;
步骤(3)对数组A和数组B中位置信息所对应的数据块进行预处理,具体是:通过每一数据块中文件名字段存放的文件名来排除非Zip数据块,将文件名以.xml,.rels,/slides,drs/,theme,.class,.java,.jar结尾的数据块排除,并删除这些非Zip数据块在数组中的位置信息;
步骤(4)获取数组A中位置信息所对应的每一个数据块的位置信息及内容字段,将位置信息及内容字段作为一个节点插入至链表L A ,位置信息为Zip File Header在磁盘分区中的起始位置,内容信息包括文件名字段和Zip File Header和Data块的大小;获取数组B中位置信息所对应的每一个数据块的位置信息及内容字段,将位置信息及内容字段作为一个节点插入至链表L B ,位置信息为Central Directory在磁盘分区中的起始位置,内容信息包括文件名字段、对应Zip File Header的数据块大小、对应的Zip File Header的文件中的偏移量和Central Directory的大小;获取数组C中位置信息所对应的每一个数据块的位置信息及内容字段,将位置信息及内容字段作为一个节点插入至链表L C ,位置信息为End Central Directory在磁盘分区中的起始位置,内容信息包括Central Directory中CD File Header的数目、所对应的Central Directory的大小、对应的Central Directory在文件中的偏移量和End Central Directory的大小。
图2给出的是Zip文件雕复流程图。从图中可以看出对Zip文件雕复过程包括以下几个步骤: 
步骤(1)定位一个完整的Zip文件,具体是:
1-1判断链表L C 是否为空,如果L C 非空,则获取链表L C 首节点信息后删除该节点,创建以该节点为首节点的待恢复Zip文件链表L Z ;如果L C 为空,则雕复过程结束;
1-2判断链表L B 是否为空,如果L B 非空,则在链表L B 中查找满足
Figure 73780DEST_PATH_IMAGE002
的Central Directory,并验证Central Directory中的CD File Header数目及总大小是否和End Central Directory中存储的信息一致,如果在链表L B 中没有找到满足条件的Central Directory,则清空链表L Z 并转入步骤1-1;如果在链表L B 中找到满足条件的Central Directory,则将Central Directory插入至链表L Z 尾部,删除该Central Directory在链表L B 中对应的节点;如果L B 为空,则雕复过程结束;其中
Figure 869567DEST_PATH_IMAGE004
为对应的数据块在文件中的偏移量,即Central Directory在文件中的偏移量,为对应的数据块在磁盘分区中的偏移量,即Central Directory在磁盘分区中的起始位置,
Figure 679839DEST_PATH_IMAGE008
为磁盘分区簇大小;
1-3判断链表L A 是否为空,如果L A 非空,则设置Zip File Header的标记位M为假,根据Central Directory中的CD File Header在链表L A 中查找满足
Figure 647795DEST_PATH_IMAGE002
的Zip File Header,并验证Zip File Header中的文件名字段是否和CD File Header中的文件名字段相同,如果L A 为空,则雕复过程结束;如果M为假且在链表L A 中没有找到满足条件的Zip File Header,则清空链表L Z 并转入步骤1-1;如果M为真且在链表L A 中没有找到满足条件的Zip File Header,则转入步骤(2);如果在链表L A 中找到满足条件的Zip File Header,则将Zip File Header插入至链表L Z 尾部,删除该Zip File Header在链表L A 中对应的节点,设置M标记位为真,并重复执行步骤1-3;
步骤(2)对Zip文件链表L Z 进行排序,具体是将链表L Z 中各节点所对应的数据块在Zip文件中的偏移量大小按从小到大次序进行排序,具体是:将所有的Zip File Header移至链表前端,将Central Directory排在Zip File Header后,接着是End Central Directory,对Zip File Header,按其在文件中的偏移量大小从小到大排序;
步骤(3)遍历链表L Z ,根据链表中每一个节点存储的数据块的起始位置及大小信息,在磁盘上提取相应字节,在目标分区输出一个完整的Zip文件,转入步骤(1)。

Claims (1)

1. 一种基于内容的Zip文件雕复方法,其特征在于该方法包括以下步骤:
步骤(1)根据用户输入信息定位到需进行文件雕复操作的磁盘分区,通过使用系统API函数获取磁盘分区的必要信息,所述的必要信息包括磁盘分区的大小、扇区数和簇数目;
步骤(2)利用Zip文件中对应于Zip File Header,Central Directory和End Central Directory的三个魔数特征字符串,对整个磁盘分区进行扫描,查找Zip文件中Zip File Header,Central Directory和End Central  Directory在磁盘分区上的位置,并将这三类位置信息分别保存至数组A、数组B和数组C中;
步骤(3)对数组A和数组B中位置信息所对应的数据块进行预处理,具体是:通过每一数据块中文件名字段存放的文件名来排除非Zip数据块,并删除非Zip数据块在数组中的位置信息;
步骤(4)获取数组A中位置信息所对应的每一个数据块的位置信息及内容字段,将位置信息及内容字段作为一个节点插入至链表L A ;获取数组B中位置信息所对应的每一个数据块的位置信息及内容字段,将位置信息及内容字段作为一个节点插入至链表L B ;获取数组C中位置信息所对应的每一个数据块的位置信息及内容字段,将位置信息及内容字段作为一个节点插入至链表L C
步骤(5)定位一个完整的Zip文件,具体是:
5-1判断链表L C 是否为空,如果L C 非空,则获取链表L C 首节点信息后删除该节点,创建以该节点为首节点的待恢复Zip文件链表L Z ;如果L C 为空,则雕复过程结束;
5-2判断链表L B 是否为空,如果L B 非空,则在链表L B 中查找满足                                               
Figure 201110002276X100001DEST_PATH_IMAGE002
的Central Directory,如果在链表L B 中没有找到满足条件的Central Directory,则清空链表L Z 并转入步骤5-1;如果在链表L B 中找到满足条件的Central Directory,则将Central Directory插入至链表L Z 尾部,删除该Central Directory在链表L B 中对应的节点;如果L B 为空,则雕复过程结束;其中
Figure 201110002276X100001DEST_PATH_IMAGE004
为对应的数据块在文件中的偏移量,
Figure 201110002276X100001DEST_PATH_IMAGE006
为对应的数据块在磁盘分区中的偏移量,为磁盘分区簇大小;
5-3判断链表L A 是否为空,如果L A 非空,则设置Zip File Header的标记位M为假,根据Central Directory在链表L A 中查找满足的Zip File Header,如果L A 为空,则雕复过程结束;如果M为假且在链表L A 中没有找到满足条件的Zip File Header,则清空链表L Z 并转入步骤5-1;如果M为真且在链表L A 中没有找到满足条件的Zip File Header,则转入步骤(6);如果在链表L A 中找到满足条件的Zip File Header,则将Zip File Header插入至链表L Z 尾部,删除该Zip File Header在链表L A 中对应的节点,设置M标记位为真,并重复执行步骤5-3;
步骤(6)对Zip文件链表L Z 进行排序,具体是将链表L Z 中各节点所对应的数据块在Zip文件中的偏移量大小按从小到大次序进行排序;
步骤(7)遍历链表L Z ,输出一个完整的Zip文件,转入步骤(5)。
CN 201110002276 2011-01-07 2011-01-07 一种基于内容的Zip文件雕复方法 Active CN102053881B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110002276 CN102053881B (zh) 2011-01-07 2011-01-07 一种基于内容的Zip文件雕复方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110002276 CN102053881B (zh) 2011-01-07 2011-01-07 一种基于内容的Zip文件雕复方法

Publications (2)

Publication Number Publication Date
CN102053881A true CN102053881A (zh) 2011-05-11
CN102053881B CN102053881B (zh) 2013-01-23

Family

ID=43958232

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110002276 Active CN102053881B (zh) 2011-01-07 2011-01-07 一种基于内容的Zip文件雕复方法

Country Status (1)

Country Link
CN (1) CN102053881B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103984608B (zh) * 2014-05-27 2017-01-04 大连理工大学 一种基于内容的图像文件雕复方法
CN110147351A (zh) * 2019-05-20 2019-08-20 中国刑事警察学院 一种Office文件数据分片识别、排序、重组方法
CN110990198A (zh) * 2019-12-09 2020-04-10 深圳市斯博科技有限公司 存储文件删除后的恢复方法、装置及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1567239A (zh) * 2003-07-09 2005-01-19 成都市赛刻亿文高科技开发有限公司 计算机文件恢复方法
CN1692335A (zh) * 2002-11-01 2005-11-02 国际商业机器公司 容忍磁盘阵列中多个相关或任意双盘故障的方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1692335A (zh) * 2002-11-01 2005-11-02 国际商业机器公司 容忍磁盘阵列中多个相关或任意双盘故障的方法和装置
CN1567239A (zh) * 2003-07-09 2005-01-19 成都市赛刻亿文高科技开发有限公司 计算机文件恢复方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《电脑开发与应用》 20051231 周日升 等 Zip压缩文件数据修复技术研究 2-3,6 1 第18卷, 第10期 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103984608B (zh) * 2014-05-27 2017-01-04 大连理工大学 一种基于内容的图像文件雕复方法
CN110147351A (zh) * 2019-05-20 2019-08-20 中国刑事警察学院 一种Office文件数据分片识别、排序、重组方法
CN110990198A (zh) * 2019-12-09 2020-04-10 深圳市斯博科技有限公司 存储文件删除后的恢复方法、装置及存储介质

Also Published As

Publication number Publication date
CN102053881B (zh) 2013-01-23

Similar Documents

Publication Publication Date Title
KR102496954B1 (ko) 데이터를 내용 연관 시브에 존재하는 기본 데이터 엘리먼트로부터 파생시키는 것에 의한 무손실 데이터 축소
CN102053880B (zh) 一种基于内容的Rar文件雕复方法
CN107665191B (zh) 一种基于扩展前缀树的私有协议报文格式推断方法
CN102163226A (zh) 基于映射-化简和分词及邻接排序去重方法
CN102508880B (zh) 一种文件合并方法及分解方法
US9063947B2 (en) Detecting duplicative hierarchical sets of files
KR102647585B1 (ko) 기본 데이터 시브를 사용함에 의한 데이터의 무손실 축소 및 기본 데이터 시브를 사용하여 무손실 축소된 데이터에 대한 다차원 탐색 및 내용 연관 검색의 수행
CN103631909B (zh) 对大规模结构化和非结构化数据联合处理的系统及方法
Roussev et al. Multi-resolution similarity hashing
CN102831405B (zh) 基于分布式和暴力匹配的室外大规模物体识别方法和系统
CN109753502B (zh) 一种基于NiFi的数据采集方法
CN102314485A (zh) 哈希表添加、查找和删除方法及装置
CN103886011A (zh) 一种基于索引文件的社会关系网络创建与检索系统及方法
JP2008181260A (ja) ビット列検索装置、検索方法及びプログラム
Doan et al. Integration of iot streaming data with efficient indexing and storage optimization
CN102185889A (zh) 基于iSCSI的重复数据删除方法
CN101673266A (zh) 音频、视频内容的搜索方法
CN105068889B (zh) 恢复Ext3/Ext4中已彻底删除文件的方法
CN102682024A (zh) 未残缺jpeg文件碎片重组的方法
CN102053881B (zh) 一种基于内容的Zip文件雕复方法
CN108090186A (zh) 一种大数据平台上的电力数据去重方法
CN101673262B (zh) 音频内容的搜索方法
CN101499085A (zh) 快速提取关键帧的方法和装置
WO2020123710A1 (en) Efficient retrieval of data that has been losslessly reduced using a prime data sieve
CN106776772B (zh) 一种数据检索的方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant