Mar*_*cin 4 hard-drive secure-delete
我有一个硬盘坏了,在我将它送去 RMA 之前,我想尽可能多地擦除它。我尝试使用 Windows 实用程序,并且还做了 /dev/random 的 dd。问题是我等不及这些解决方案中的任何一个完成,因为 RMA 的原因是它以 1 MB/秒的最大速度写入。仅通过一次 500GB 硬盘驱动器就需要 140 多个小时。
我一直在寻找一个实用程序(甚至 linux 上的 bash 脚本),它可以随机选择扇区并将随机数据(甚至零)写入这些扇区。我希望如果我运行它 24 小时,将擦除大约 80 GB 的数据。由于它将是随机选择的,因此所有较大的文件将无法恢复,较小的文件将被擦除、丢失块或可能可以恢复。不幸的是,这对我来说是此时的最佳解决方案。
解决方案
多亏了“evildead”,我才能够从 /dev/urandom 随机填充驱动器上的大量数据。bash 脚本,以防有人需要它,如下:
#!/bin/bash
while (true); do
randnum=${RANDOM}${RANDOM}
number=$((10#$randnum%976773168))
echo -e $number >> progress.txt
dd if=/dev/urandom of=/dev/sdx1 skip=$number count=1
done
Run Code Online (Sandbox Code Playgroud)
您需要将 976773168 替换为驱动器上的块数。我最初在 bash 中尝试了 $RANDOM,但它只是一个 16 位的 int,因此只有 32k。因为我需要一个超过 9 亿的数字,所以我组合了两个 $RANDOM 值,例如,如果我的随机数是 22,861 和 11,111,我会得到 2,286,111,111 然后将其拟合到我的块大小,我会在我的范围内得到一个非常随机的值。它没有完美的熵,但话说回来,计算机上真正随机的是什么?;) 如果第一个随机数是 0,则存在 10#,它会强制 bash 使用基数 10,而不是基数 8,如果它认为数字是八进制(前导零),则使用它。我还将随机数写入文件以供稍后分析以查看价差是多少。如果你不需要这个,你可以拿出来
echo -e $number >> progress.txt
Run Code Online (Sandbox Code Playgroud)
它会运行良好。另外不要忘记将sdx1替换为您要处理的实际驱动器或分区。我希望这对某人有帮助,我知道这对我真的很有帮助。
您可以将 shellscript 与 dd 结合使用。
例如
while (true); do
number=$((($RANDOM * 32768 + $RANDOM)))
dd if=/dev/urandom of=/dev/sdx1 seek=$number count=1
done
Run Code Online (Sandbox Code Playgroud)
您只需要修改从 $RANDOM 生成的数字以适合您的块。
编辑 2016:请注意,旧的解决方案不正确。因为我们想在输出流中的随机位置覆盖一个字节,所以我们必须使用seek而不是skip,如注释中所述。
归档时间: |
|
查看次数: |
8708 次 |
最近记录: |