在 Windows 中抹除磁盘上所有已删除文件的痕迹
我们知道,在电脑上删除文件时,并不会真的删除数据,而仅仅是在文件系统中将相应文件的索引删除。哪怕是格式化,在「快速格式化」的情况下,也不会删除磁盘上的数据。这种删除/格式化的操作,有歹心的人是有可能恢复数据的。
因此,在某些情况下——例如归还借用的电脑时——我们会希望能够真正地「粉碎」文件,避免被人恢复敏感数据。
市面上有不少「粉碎文件」的工具。但:
- 为了信息安全这件事情,专门安装第三方工具,这件事情本身就很吊诡;
- 如果要粉碎大量文件,同时保证全盘没有遗漏,这些第三方工具往往不可靠。
这篇介绍用 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
。如此一来,只需双击该批处理脚本,即可抹除所有磁盘上的空闲空间中的数据了。
于是,在归还电脑时,只需先将个人数据/敏感文件全部删除,然后执行该批处理脚本即可。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。