FileWipe

最后更新:2013-02-15, Ver 2.2.4.0215

 

简介

filewipe - 商用级文件擦除工具
  • 默认行为满足商用级数据擦除的要求。
  • 以N次(默认为6次)随机值,一次全壹,一次全零填充擦除指定文件。
  • 支持文件通配符和子目录遍历。
  • 可选记录日志文件。
  • 随机值填充次数可选,默认为 6 次。
  • 直接填充物理扇区,跳过操作的系统文件缓冲/磁盘调度机制以及硬盘的物理缓存机制,保证可靠擦除。
  • 填充用随机数种子通过底层硬件杂讯和 CPU TSC 等高随机源获取(通过 Win32 Crypto API、/dev/random 等)。随机数据生成使用 SHA 算法,符合密码编码学级别的随机度。
  • 以磁盘簇为单位进行填充;每遍填充均使用不同的随机数据。
  • 清除文件的同时完成文件名混淆:使攻击者不仅无法恢复数据,甚至连被擦除的文件名也无法恢复。
  • 支持 Win32 和纯 DOS 环境(纯DOS环境中需要 HX DOS Extender 支持)。
  • 支持 POSIX 环境,提供 linux x86/x64、FreeBSD、Solaris 等版本下载。

 

更新历史

2013-02-15, Ver 2.2.4.0215

NEW: 补全 linux、FreeBSD 和 Solaris 平台支持。
UPD: 升级到新版底层支撑平台。

2010-04-07, Ver 2.2.1.0407

NEW: 清除文件的同时完成文件名混淆:使攻击者不仅无法恢复数据,甚至连被擦除的文件名也无法恢复。
UPD: 擦除后截断文件内容至 0 字节。

 

商用级数据擦除

从文件系统的角度来看,操作系统删除一个文件时,仅清除在文件表中的相关记录,并将文件占用的磁盘簇重新标记为可用。文件的实际内容仍然保留在磁盘中。从效率和存储设备寿命方面考虑,这样做十分正确。不过这也使文件反删除变得简单可行。

更好一点的办法是:先把文件的原始内容以垃圾数据(例如:全零或全壹)填充,然后再将它删除。这时即使使用反删除工具恢复,得到的也只是一个充满垃圾数据的文件。

然而,由于磁介质的物理特性,一次单一数据的覆盖只能大大减弱原始信号在介质上存留的印记,在覆盖后,仍然会有一些微弱的,关于原始数据的残留信号(磁残留)备保留。这就好像播放一盘被洗过的磁带时,人耳仍然能依稀听到原始录音的痕迹一样。在专业的数据恢复设备下,足以通过这些残留信号重生原始数据。

为此,商用级的数据擦除一般要求交替使用全零和全一清洗存储介质至少7次。按照上文中的例子,就是要把一盘路过音的磁带反复擦除(消磁)7次。

不过,单纯的清洗(消磁)并不是最佳方案。用足够脏的数据进行污染,效果远好于单纯清洗。对录音带来说,单纯消磁7次,效果远远不如把它放到嘈杂的闹市里重复录音7次来得彻底:新录入的声音与被洗掉的残留相互混淆,比安静的覆盖(简单清洗)更难以识别。

数据在存储介质中的情况也大体相同:每次新填充的随机数据都与原始的磁残留相互混淆,各位存储的磁强度水平都是高度随机的。这使得分析者难以找到再生原始数据的模板。而最后的一次全壹和一次全零填充主要是为了进一步净化噪声。

 

关于军用级数据擦除

咨询了一个在部队相关部门工作的弟兄。答曰:“哪有这么麻烦,我们都是直接物理粉碎……”。看来除非对冲压机床编程,不然用软件实现军用级擦除是不可能了,嘿嘿。

 

帮助屏幕

C:\Documents and Settings\Administrator>
#filewipe

===============================================================================
  File Wiper Version 2.2.4.0215 by BaiYang / 2003 - 2013, Freeware
===============================================================================
Use N pass random data + 1 pass full zero + 1 pass full one to overwirte and
delete specified files

USAGE: filewipe {FilePattern} [RandomPassNumber] []

===============================================================================
Options:
  FilePattern        - file and dir search pattern
  RandomPassNumber   - how many times to overwrite the specified files with
                     - random data, Default is 6
  -s                 - include subdirectory (!!DANGER!!)
  -logfile:          - using a logfile.
  -loglevel          - specify the lowest logging level, can be:
                         DebugOnly (Most Detail)
                         Info (DEFAULT)
                         Warning
                         Error
                         FatalError
                         Disabled (Close Logging Output)
  -priority:         - specify the process running priority, can be:
                         Idle
                         BelowNormal
                         Normal (DEFAULT)
                         AboveNormal

===============================================================================
Examples:
  filewipe *.doc
  filewipe MyDoc.txt 2
  filewipe * 15 /logfile:"C:\wipe.log"
  filewipe * /s /priority:BelowNormal

 

简单中文帮助

C:\Documents and Settings\Administrator>
#filewipe

===============================================================================
  文件擦除工具, 版本:2.2.4.0215 by BaiYang / 2003 - 2013, 免费软件
===============================================================================
使用 N 次随机数据+一次全零+一次全壹覆盖并删除指定文件

用法: filewipe {FilePattern} [RandomPassNumber] []

===============================================================================
选项:
  FilePattern        - 文件通配符
  RandomPassNumber   - 指定随机数据覆盖的次数,默认为 6
  -s                 - 包含子目录(危险!)
  -logfile:          - 指定一个日志记录文件
  -loglevel          - 指定日志的详细程度,可以是:
                         DebugOnly (最详细)
                         Info (默认)
                         Warning
                         Error
                         FatalError
                         Disabled (禁用日志功能)
  -priority:         - 指定进程的运行优先级,可以是:
                         Idle
                         BelowNormal
                         Normal (默认)
                         AboveNormal

===============================================================================
使用范例:
  filewipe *.doc
  filewipe MyDoc.txt 2
  filewipe * 15 /logfile:"C:\wipe.log"
  filewipe * /s /priority:BelowNormal

 

注意事项

文件擦除是 IO 密集型操作,并且为了保证可靠性而跳过了操作系统的文件缓冲/磁盘调度机制以及磁盘的物理缓存机制,这些都是以降低工作性能为代价的。典型用例下(例如:从公司离职前的数据清洗),用户经常希望擦除大量数据(OutLook 文件夹超过10G的人不在少数)。在开始之前,您应当认识到这是一个耗时操作,可能需要花费数小时才能完成。

如果希望在操作期间继续使用计算机,偶建议您使用 "-priority" 选项将 filewipe 的运行优先级设定为 "Idle" 或 "BelowNormal",这样它就能够安静地在后台运行,而您也可以在此期间继续使用计算机。

 

下载

filewipe.rar
filewipe_linux_x86.zip (在 Ubuntu 11.04 上测试通过)
filewipe_linux_x64.zip (在 Ubuntu 11.04 上测试通过)

filewipe_freebsd_x64.zip(在 FreeBSD 7.0  上测试通过。注意:在扫描 VMWare 虚拟磁盘文件以确认删除结果时发现虚拟磁盘上的物理扇区未被正确覆盖,我怀疑这是由于 VMWare 虚拟设备和 FreeBSD 的驱动之前存在问题而引起的。若有在物理机上部署 FreeBSD 的童鞋可测试一下)。

filewipe_solaris_x86.zip(在 OpenSolaris 2009.06 上测试通过。注意:在扫描 VMWare 虚拟磁盘文件以确认删除结果时发现虚拟磁盘上的物理扇区未被正确覆盖,我怀疑这是由于 VMWare 虚拟设备和 Solaris 的驱动之前存在问题而引起的。若有在物理机上部署 FreeBSD 的童鞋可测试一下)。