用Delphi编写U盘整盘数据清除程序

本文探讨了U盘数据清除的重要性,分析了文件系统和U盘的特性,提出通过覆盖所有存储空间来确保数据安全清除。介绍了获取U盘真实容量的关键技术,并提供了Delphi编写的U盘数据清除程序的主要代码实现,强调了清除过程的可靠性和稳定性考虑。
摘要由CSDN通过智能技术生成

由于U小巧易携、使用方便、容量适度,使频度较其他移动存储介质要高,信息安全隐患也要大得多。黑客、病毒和木马都将目标瞄准了移动存储介质特有的“信息安全软肋”,目前移动存储介质的摆渡、木马、远程控制程序多达百种,很多还采用了隐藏技术,防护的难度越来越大。一般的删除不能使原文档彻底清除,有时甚至是“文件粉碎”这样的工具也不能保证万无一失,因为像很多Word这样的应用软件在打开文档时,会生成一个临时文件,所有操作都在临时文件上进行,只在关闭时才将临时文件拷回到原文件的名录上。这样,在一个存储介质上会存在多个“有实无名”的隐身文档副本,没有名录信息对操作系统而言是不可见的,一般方法访问不到,但是通过特殊的技术可以将“实体”的大部分内容恢复。因此,针对U盘流动性大、数据易泄漏的特点,在保护隐私、跨网使用和清除摆渡泄密的需求下,开发出对U盘数据安全可靠清除的程序很有必要。目前市场上的数据清除设备动辄上万元,基本上是使用嵌入式系统开发的专用产品,本文介绍的方法和程序在原理和实际效果上与其没有差别,在某些方面甚至有更好的拓展性、适应性和灵活性。当然,技术到产品的跃升还需做很多艰苦的工作,希望此文能抛砖引玉、与大家共享技术带来的便利。

 

文件系统的原理

无论是FAT还是NTFS文件系统,尽管安全机制和存取的效率差别很大,但是原理基本相同,都是由索引部分和文件数据实体部分组成,索引提供名录的有效存取、检索,数据实体放文件的真正内容。为了提高文件系统对文件处理的效率,在删除文件时并不是将上述的两部分全部消除,只是在索引部分标记为“已删除”,而文件的实体数据依然原封不动地存在介质上,从表面上已经查不到这些删除文件的存在,但是通过一定的方法,还是可以一定程度上进行恢复,这是多种文件恢复工具的工作原理。

即使采用高级格式化,也只是将文件系统的索引部分清除,而数据实体部分基本上没有涉及,仍可进行数据恢复和提取。

 

3 U盘的特点

U盘与磁介质移动盘不同,U盘是内部的FLASH(电可擦除芯片组)的电荷来维持电位高低,从而进行二进制数据存储的,一旦电荷发生变化,则二进制数据也会发生根本性的改变,或者说物理上不太可能恢复和还原。但是磁介质不同,由于每次的磁头位置不可能完全重合,可能会有微弱的磁化残留,也就是上一次写的数据虽然被覆盖,在磁力显微镜下仍可看出其残留的痕迹,至于是否能将被覆盖的上一次信息完整地恢复出来,学术界目前争论不休,鲜见实测检验的权威报告。光介质存储也存在类似的问题,只是使用频度远低于前两者,还未引起重视。

U盘因为电荷清除后信息就消失了,不会有类似弱磁残留的问题,可以保证清除效果。

 

关键技术

4.1 U盘容量的获取

获取U盘容量有两个API函数,第一个是:

GetDiskFreeSpaceEx(Directory:PChar;var FreeAvailable,TotalSpace:TLargeInteger;TotalFree: PLargeInteger): Bool;//此函数在SysUtils单元

这个函数返回的容量(int64类型变量TotalSpace所返回的值)就是U盘标写的容量,但是这个函数必须是在U盘已经格式化后才能正常工作,否则返回的容量是错误值。

另一个函数是:

DeviceIoControl(hDevice: THandle; dwIoControlCode: DWORD; lpInBuffer: Pointer;nInBufferSize: DWORD;lpOutBuffer: Pointer; nOutBufferSize: DWORD;var lpBytesReturned: DWORD; lpOverlapped: POverlapped): BOOL;//这个函数在Windows单元。

这个函数是向设备级发送请求,返回的是底层设备的原始值。在使用这个函数时,不要求U盘设备已经格式化,在“属性”里的“文件系统”一栏可以显示为“RAW”,即没有任何格式的移动盘。笔者在实验中发现,这个函数是在设备层进行请求,有时在资源管理器中不显示该盘符时,使用物理硬设备符(如用文件方式打开设备生成句柄hDevice时,用'\\.\PHYSICALDRIVE1'而不是'\\.\u:'),仍然可以得到U盘的容量,这对U盘数据恢复很有意义。但是这个函数与前一个函数相比,其返回的容量总是小于前函数的结果,并且没有规律。

4.2 真实容量分析

要对U盘进行完全彻底的数据清除,首先必须要知道它的容量。由于U盘本身的特性,一般在商标上标写的容量并不一定是真正的容量。原因有三:1、正规品牌的U盘标写的是正常使用的容量,在其内部还有一部分是作为坏区补偿的备用容量,当检测有坏片时,U盘内部的电路会将坏区与补偿部分进行互相置换,所以其真正容量会大于标写的容量;2、某些不良商家会将小容量的UMask成大容量的盘,这时所注的容量也不正确;3、目前很多黑客、木马会将大容量的U盘改写成小容量,使一部分存储区成为一般手段无法访问的隐蔽区,作为恶意信息的真正藏身地。表面上似乎如何检测U盘真正的容量是关键,实质上能否完全清除U盘上的所有存储信息才是安全保障的根本所在。

4.3 覆盖U盘所有存储空间

由上可知,无论哪个函数,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值