我们知道,在电脑上删除文件时,并不会真的删除数据,而仅仅是在文件系统中将相应文件的索引删除。哪怕是格式化,在「快速格式化」的情况下,也不会删除磁盘上的数据。这种删除/格式化的操作,有歹心的人是有可能恢复数据的。

因此,在某些情况下——例如归还借用的电脑时——我们会希望能够真正地「粉碎」文件,避免被人恢复敏感数据。

市面上有不少「粉碎文件」的工具。但:

  • 为了信息安全这件事情,专门安装第三方工具,这件事情本身就很吊诡;
  • 如果要粉碎大量文件,同时保证全盘没有遗漏,这些第三方工具往往不可靠。

这篇介绍用 Windows 自带的工具解决这个问题。

CIPHER

Windows 自带有名为 CIPHER 的工具。这个工具本身是用来在 NTFS 格式的磁盘上加密磁盘或磁盘上的文件的。不过,我们这里要用到它的 /w 参数。以下是这个参数的作用:

Removes data from available unused disk space on the entire volume. If you use the /w parameter, all other parameters are ignored. The directory specified can be located anywhere in a local volume. If it is a mount point or points to a directory in another volume, the data on that volume is removed.

翻译:cipher /w:<directory> 移除卷上所有未使用的空间并忽略所有其他参数。这里,<directory> 可以是卷上的任意目录。如果该目录是其他卷的挂载点,则 cipher 将会移除被挂载的卷上的数据。

这个介绍有一点没介绍明白:具体怎样移除卷上的所有空间呢?作为一个用于加密的工具,「移除」的方法当然是很安全的啦。实际上,cipher /w:<directory> 会在磁盘上所有可用空间上,先全部写入 0x00,再全部写入 0xFF,再全部写入随机值。如此一来,磁盘上空闲空间里的内容,就变得难以恢复了。

批处理

今天写了一个 Windows 批处理脚本,利用 cipher /w 在所有磁盘的空闲空间上抹除数据。

@echo off

for %%i in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do (
  if exist %%i:\ (
    echo "will start to cipher %%i"
    cipher /w:%%i:\
  )
)

在桌面上新建一个文本文件 cipher_disks.txt,将这些内容粘贴上去,而后修改后缀名为 .bat,即改名为 cipher_disks.bat。如此一来,只需双击该批处理脚本,即可抹除所有磁盘上的空闲空间中的数据了。

于是,在归还电脑时,只需先将个人数据/敏感文件全部删除,然后执行该批处理脚本即可。