admin管理员组

文章数量:1530836

2024年6月17日发(作者:)

… -

C0MPUTERSECURITYANDMAINTENANCE ………… u…………- 一  … ……… -……一… 

VS2010+Qt开发文件粉碎软件 

李清 

摘 要:简单分析了文件粉碎的必要性,并介绍了目前文件粉碎技术的4种常用方法,详细说明 

了不同文件系统(FAT32,NTFS)下文件粉碎的原理及其程序实现。利用文件恢复软件测试了此 

软件的性能,并提出了改进方法。 

关键词:信息安全;信息消除;FAT格式;NTFS格式 

1 引言 

信息社会迫切要求各类存储介质,存储介质的应用充斥在 

日常生活的方方面面,存储介质上往往都存储着大量的信息. 

而信息的内容又可能涉及到个人隐私、商业机密甚至是国家安 

3.1 写覆盖技术原理分析 

下文主要采用写覆盖技术来消除硬盘信息,首先来介绍一 

下硬盘的编码格式。硬磁盘在将用户数据写入之前,需要进行 

系列的处理.比如将用户数据翻译成机器码,然后将其分 

组,进行纠错编码等操作,最后进行RLL(Run Length Limited) 

编码,将数据最终记录到硬盘中。由于硬盘上的数据信息以 

RLL编码格式的二进制码形式存在,如果将预先设定好的数据 

写入到硬盘中,经过RLL编码后将覆盖掉原先的二进制码, 

这样便无法分辨原先存储的数据是“0”还是“1”,达到了文 

件粉碎的目的。写覆盖技术正是利用了上述原理。 

通过大量查阅国内外的资料。总结出以下几种写覆盖方 

案.如表1所示。 

表1数据写覆盖的方案 

覆盖方案 简单描述 安全级别 

全机密。怎样确保安全的存储信息,已是我们不得不关注的热 

点问题。 

由于操作上的简单性,Windows操作系统被绝大多数人使 

用,当存储的信息不再使用的时候,一般都是使用delete命令 

来删除这些信息,又如果不再使用某一硬盘时大都选择将硬盘 

格式化。然而事实上这两种寻常使用的操作并不能彻底地删除 

存储的信息,它只不过在硬盘的特定位置重新写了一个可用标 

志表明这部分空间可用。这些年来数据恢复技术发展的如火如 

荼,各种恢复软件应运而生(比如说EasyRecovery, 

FinalData),经过delete删除操作或者格式化处理的数据有非 

常大的可能被恢复出来。因此如果要确保信息被彻底粉碎,那 

么就不能单纯依赖于Windows操作系统所提供的delete命令。 

写0覆盖 

写F覆盖 

在目标数据区所有区域写入0x00 

在目标数据区所有区域写人0xff 

低 

低 

要借助于特定的文件粉碎软件,如文件粉碎机等。下文就是在 

对Windows文件系统深刻理解之后用vs2010+Qt来开发文件 

粉碎软件以期对这一问题加深理解。 

写随机数覆盖 

oD 5220.22一M 

在目标数据区随机写入1—9 

先在目标数据区写入OxO0,然后写Oxff, 

接着写入随机数

最后校验数据区 

巾 

由 

国内外目前已有许多种技术来彻底删除硬盘上存储的信 

息,归纳起来基本上有4种,分别是:物理损坏技术、消磁技 

术、热消除技术、写覆盖技术。 

G首先在目标数据区写入3次(hoo和 次 

erman Standard,VSITR O

xff.最后覆盖Oxaa 

Peter Gutmann Secure 首先在目标数据区每个扇区内写入4次随 

D机数,然后写入27次固定数,最后写人4 

eletion 次随机数 

高 

很高 

2编程平台 

Ot是由Trolhech公司在1994年左右开发的跨平台开发框 

架,它是完全面向对象的,扩展起来容易,并且也允许组件编 

程。由于我们中的大多数更为熟悉VS的开发环境.决定采用 

VS2010来进行开发,不过由于单纯的VS不能编译Qt程序, 

通过深入地分析.可以看出不同方法之间的区别在于覆盖 

格式与覆盖次数。写覆盖操作之所以要多于3次主要是为了防止 

逻辑坏扇区写操作的失败。一般情况下3次连续失败应该是存储 

单位的物理损坏。类似的,为了防止可能含有残留信息的存储 

单位成功恢复出之前存储的数据信息,采用随机序列来写覆盖。 

因此必须先搭建vs2010+Qt的开发环境才能继续后面的操作。 

限于篇幅,关于如何搭建所需的开发环境省略不写。 

3.2硬盘的数据结构 

为深入了解文件的粉碎原理。需要知道以下知识。 

~ 脑臻 

器 79 

“ ’ ’H ’ J_ ’ ’Il ’ 

实用第一1 智慧密集 

, … … 

磁头:任一磁片的正反两面都有一个磁头,一个磁头对应 

着磁片的一面。即磁头数等于磁片面数。 

柱面:柱面由磁片中相同半径的同心磁道构成。简单理 

解,柱面数与磁道数相等。 

扇区:扇 就是磁道所被划分成的若干个小区段。每一个 

扇区的容量都是5l2个字节。 

复出来。 

3.3文件粉碎软件实现 

f 

FAT32

TFS

这两种文件系统格式 支持  

文件擦除 

理解以上各概念后.便很容易确定硬盘的容量计算公式: 

硬盘容量=磁头数X磁道数×扇区数×512字节 

实现清除

件名

等相关信息 

下面以FAT(File Allocation Table,文件分配表)文件系 

统为例来解读一下硬盘的数据结构,也顺便解释一下为什么操 

作系统的delete删除命令和格式化命令不能真正地消除硬盘上 

存储的信息。 

硬盘格式化后将南5部分组成:MBR区、DBR区、FAT 

区、DIR区和DATA IX.。如图1所示。 

剩余空间 

DATA(数据区) 

DIR(根目录) 

FAT1 f文件分配表1) 

FAT2(文件分配表2) 

DBR(操作系统日I导记录) 

62个保留扇区(系统扇区) 

MBR(主引导记录区)+DPT(硬盘分区表)+‘55AA’ 

图1 硬盘数据结构 

MBR fMain Boot Record1即主引导记录区。 

DBR fDOS Boot Record1即操作系统引导记录。 

FAT区紧接在DBR区之后。由于FAT区对文件管理非常 

重要,所以原FAT后面往往会再备份一个一样的FAT。 

DIR排列在第二个FAT表后面.存储着系统根目录下面的 

每个文件的文件属性、文件名、起始簇号、文件扩展名等。在 

定位文件的位置时,操作系统将会根据DIR中的起始簇号,结 

合FAT表来确定文件在磁盘上的具体位置以及其大小。 

DATA即数据区,它才是真正的数据存储区。 

明白了硬盘的数据结构以后,查阅资料得出以下结论: 

(1)格式化原理:操作系统只是对FAT表和DIR表做了 

重写操作,而DATA区的数据却是完好无损的,系统没有对它 

进行操作,所以这些数据依旧是存在的。如果对该分区做一个 

全面的簇扫描,就能得到格式化操作之前文件存储的数据。 

(2)删除操作原理:操作系统在DIR区中将要删除文件的 

目录项首位修改成“E5”。只要之后依据首位“E5”的模式来 

读取DIR区域,就能恢复出之前的文件。 

归纳总结以上分析,发现delete删除操作与系统格式化操 

作都不能保证安全性,删除后的数据借助于恢复软件可以被恢 

80电 盆鞋 

1 分区摞除 基于NTFS格式分医,支持清除空闲卒问功能 

名称 路疆 

件 1 

c "…… s・}tln i^hⅢ ¨ I蚰,■ 

皇 t 自ti ̄ l/ ~ n~ H ^h …t ,锺面 

幕件逝柏瓣 {£ 埠罐护 u 0 …El_._nd s t ^ =・j 黛搿 

忡 辞朦臻 “ 

c』D0~En… se_. 。^ … IfI1, 

{ 

臣三至三 [二垂叠][ ::::] 

图3文件粉碎软件截图 

该文件粉碎程序采用的擦除方式为OxO0.0xFF与随机 

数,擦除次数为3次。OxO0和0xFF的数据实现起来比较容 

易,相比之下,随机数产生部分相稍显复杂,这里采用如下方 

法实现:先获得系统的时间,并以此作为种子,紧接着利用 

Ot的qrand函数来生成随机数。代码实现如下: 

qsrand((unsigned)time(NULL)) 

for(int i=0:i<3:++i) 

{ 

cleanBuffer[i】=(PBYTE)VirtualAIIoc(NULL, 

CLEANBUFSIZE,MEM COMMl-r.PAGE READWRITE): 

.f(!m—cleanBuffer[i】) 

{ 

for(int j=0 j<i j++) 

( 

VirtualFree(m—cleanBuffer[j].0,MEM—RELEASE) 

) 

return; 

) 

switch(i) 

{ 

case 0: 

break: 

z… -

C0啊PUTER SECURITYAND MAINTENANCE …… …… ……… ,… …。… … …一 … …………… 

case I: 

memset(m—cleanBuffer[i],OxFF,CLEAN8UFSlZE): 

break; 

case 2: 

for(int j=0;j<CLEANBUFSIZE:j++) 

m cleanBuffer[il[j1=(BYTE)qrandO; 

break; 

) 

) 

当前Windows下主流的文件系统格式为FArr32结构和 

NTFS(New Technology File System)结构。同一文件在不同的 

文件系统下,其存储方式是不一样的。文件系统按簇来分配分 

配磁盘空间而不是按照字节.所以即便一个仅含有一个字节的 

文件,系统也得为其分配一个簇的存储空间,这也是通常文件 

实际大小要小于占用空间的原因。同一文件的数据并不一定要 

存放在一个连续的区域内,而往往采用链式存储,顾名思义, 

就是像链子那样存放。为实现链式存储文件,文件系统一定要 

准确地记录哪些簇已被文件所占用,以及其下一个簇的簇号, 

如果是文件的最后一个簇,则要标明该簇没有后继簇。 

图4所示流程图清晰地介绍了不同文件系统下文件粉碎的 

实现流程。 

开始 

获得目录下文件绝对路径 

判断文件属性 

C0MPRESSED 

SPARSE 

其他 

ENCRY ED 

打开磁盘卷,获得 

以覆盖的模式打开文 

逻辑磁盘情况 

计算簇在这个磁盘上位 定位到文件头 

置。并定位到这个位置 

对该簇写数据 

对该簇写数据 

0.0xFF随机数 

重命名26次 

删除 

结束 

图4文件清除方案 

删除没有特殊属性(不是Windows的压缩、加密、稀疏文 

件类型)的文件相对来说比较简单,只用获得文件句柄,然后 

对文件的存储空间覆写数据。然后对文件重命名N次,再安全 

删除文件即可。 

对Windows压缩、加密和稀疏文件由NTFS以簇方式管 

理。如果程序直接向这类文件覆写数据,那么NTFS只会分配 

磁盘上的新空间来存储这些新数据,并会在写入新数据后取消 

分配该文件之前占用的簇。NTFS之所以采取这种保守方法和 

数据完整性有密切关系,而且对于压缩和稀疏文件.这样可以 

在出现新分配大于现有分配(新的压缩数据大于旧的压缩数 

据)的情况下正确应对。因此,覆写此类文件不能成功地从磁 

盘中清除文件的内容。所以说直接对这类特殊文件写,其实是 

对新分配的空间在读写,而老的存储区域并没有被填充垃圾数 

据,导致数据有被恢复的可能。对于这类文件该如何处理?这 

种类型文件的处理需要依赖碎片整理API来直接定位每个簇在 

硬盘上的起始位置。 

由于空闲空间清理的原理部分较为复杂。限于篇幅不再赘述。 

实现对文件的写覆盖操作,大致需要分3步:首先得到要 

操作的文件名以及文件的大小;紧接着建立一数据缓冲区.将 

我们想要写覆盖的数据(OxO0,OxFF,随机数)存人其中;最 

后调用函数来打开指定的文件,并设置一个循环,来不断地向 

文件写入数据。如此便可擦除文件信息。如图5所示。 

开始 

获取文件 

建立缓冲区 

向缓冲区填充指定的 

数据格式 

获取文件大小.计算循 

环次数NeedErase 

用缓冲区的数据覆盖文 

件数据.NeedErase~ 

否 

ⅣeedErase=07^二 

\ 

结束 

图5文件写覆盖操作方案 

4信息擦除软件验证方案 

信息擦除算法的验证方案包括如下3方面: 

(1)信息擦除算法有没有被正确执行(包括是否按指定的 

擦除格式和擦除次数)。 

(2)信息擦除算法的完整性(有没有擦除文件所占空间)。 

(3)信息擦除算法的安全性(有没有被恢复的可能)。 

对于软件的测试需要借助于数据恢复软件的强大功能来检 

201 3_ 一 

煞 

嫡程技巧与最护 

“ ’l’  【’…‘ “ _ ’ Ⅲ’ ’  J“ 、 ’ 

实用第一 智慧密集 

…, …, 。. … 

测程序实现的清除质量。测试需要的软件为FinalData,它是一 

款基于Windows系统的功能及其强大的数据恢复工具。测试方 

案需要针对文件清除和空闲空间清除这两项基本功能。文件清 

除功能需要测试基于FAT32和NTFS格式的文件是否能被成功 

粉碎并无法被市场上的数据恢复软件恢复。对于空闲空间的清 

除,预先选定某一个区域(该区域原来存有数据,不过该数据 

已被删除,不妨假设是c盘),之后对该分区做空闲空间清除, 

最后对清除后的空间进行查看确定空闲空间文件内容是否被成 

6 结语 

写覆盖技术由于存在一些缺点或者说是不足,所以不能用 

来处理绝密级信息。不过写覆盖技术有它自身的优点:使用起 

来方便、实现的成本低、处理过的硬盘还可以重新使用。 

参考文献 

[1】Peter F B,Philip J L.Data Security issues relating to end of 

功清除。通过测试发现无论是.txt、.doc、.ppt、.exe格式还是 

音频与视频格式文件经软件彻底粉碎以后将无法从FinalData 

中恢复出来.软件无误。 

5分析与讨论 

这里研究的内容比较广泛,也难免存在不够细致的问题, 

不足之处列举如下: 

(1)本例无法对只读文件进行粉碎。这是南于只读文件无 

法进行写入操作.可行的解决方案是首先去掉文件的“只读” 

属性,然后再对其进行读写操作。后续研究将实现此方案并予 

以改进。 

(2)由于只对数据进行了3次写覆盖操作,所以利用其他 

先进技术(如磁力显微镜技术)仍然可以将已删除文件恢复, 

不过这是由于目前市场上的彻底删除大都采用此技术的缘故 

(写覆盖次数越多,恢复所需要的时间越久),另外,3次写覆 

盖技术之后,一般的恢复软件已无法恢复(如360恢复工具 

等)。不过,如果想要实现彻底绝对的清除,可以采用 

Gutmann方法(35次写覆盖),这留待后续研究。 

(3)本例没有实现对文件系统痕迹的清除。以下地方往往 

会存储已经删除的文件的文件名等信息:①大多数软件的下拉 

菜单中往往会存在不久前打开过的文件的文件名,如Word等 

等。( 注册表中可能会残留最多的信息。( 我最近的文档中有 

可能保存有已删除信息的残留痕迹,它保存在C\Documents and 

SettinsskAdministrator ̄Recent路径下。除此之外.尚不不排除还 

有其他的地方未被发现 

除此之外,写覆盖技术本身也有一些缺点与不足。 

(1) “坏扇区”可能存在信息,写覆盖技术无法清除。 

对硬盘进行数据的写覆盖操作时.硬盘将会对磁介质表面进 

行测试,如果发现存在错误就标记为坏扇区,正常情况下写 

覆盖技术对此是无能为力的,如果坏扇区之前存储有信息, 

那么原信息依然存在,这只能使用其他的技术来消除硬盘信 

息。 (2)隐蔽区域有存有信息的可能.写覆盖技术无法清除。 

般的硬盘都有为自身保留一块存储区域的能力.这些特殊区 

域只能通过一些特殊的命令才能进行访问。如果这些区域含 

有涉密内容。那么正常情况下数据的写覆盖技术也是无能为 

力的 

82 电 盆与雏 

life equipment[C].IEEE International Symposium on Elec-一 

tronics and the environment 2004:3.17~320. 

[2】American Department of Defense,DoD 5220.22一M,2006-2— 

28. 

【3】韩宝善.硬磁盘磁记录信息磁场消除的测试方法和技术要 

求.中国科学院物理研究所磁学国家重点实验室.2006。1. 

『4]何全秀,郑友益,杨鉴淞.硬盘结构全面剖析.平原人学 

学报,2001. 

[5】王兰英,居锦武.NTFS文件系统结构分析.计算机工程与 

设计。2006。2. 

(收稿日期:2013—09—17) 

+÷飞天诚信牵手建行 

缔造网银安全新传奇 

+ 

j- 近日,全球领先的数字安全专家飞天诚信公司成功 

入围中国建设银行海外令牌项目。正式牵手建行。至此, 

飞天诚信自主创新的产品和完善的金融安全解决方案成 

功签约四大国有银行,成为行业内率先全面覆盖四大银 

行网银安全项目的信息安全厂商 

作为国内率先推出网络身份认证产品的厂家.飞天 

诚信自1998年成立以来,一直专注于智能网络身份认证 

行业的创新和发展,高品质的产品和优质的服务赢得了 

客户的长期信赖。截至目前.已为包括工农中建交在内 

的国内外150多家银行提供智能信息安全认证服务。同 

行业银行客户覆盖率位居前列。是全球率先的智能身份 

认证产品供货商之一。 

“此次与中国建设银行的合作具有里程碑的意义.是 

中国银行业对飞天诚信技术、营销、服务、市场及商务 

{团队的集体认可。同时,飞天诚信也承担了更多的社会 

t责任。”飞天诚信总经理李伟说。 “飞天诚信将不断的进 

i行技术创新,进一步提升和优化用户体验,构建起体验 

+舒适、服务民生、营销高效的“智慧”型个人网络金融 

T生活中心!” 

k +

 

.+.+.+ + +.+ + +.+.+..+ +..+ + +..+ +..+。+..+ 

本文标签: 文件数据信息覆盖技术