在运行该dd
命令之前,该命令lsblk
返回以下输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
命令dd if=/dev/urandom of=/dev/sda conv=fsync status=progress
运行。但是,设备会断电并关闭。恢复供电后,该命令lsblk
将返回以下输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
sda2 8:2 0 487.5G 0 disk
几种可能:
Linux 支持很多不同的分区表类型,其中一些使用很少的魔术字节,然后很容易误识别随机数据(*)[因此可以随机生成一个有点“有效”的分区表]。
某些分区表类型在磁盘的末尾也有备份(最显着的是 GPT),如果驱动器的开头被随机垃圾替换,则可以继续备份。
设备不能正常工作,在写完数据之前就断开了连接,或者一直返回旧数据,所以分区表仍然存在。有时这种情况发生在 USB 记忆棒上。
...
(*) 制作 1000 个包含随机数据的文件,看看结果如何:
随机切碎驱动器的目标是使旧数据永远消失。没有保证驱动器会在之后显示为空的、未使用的、处于原始状态。
跟进零擦除以实现这一目标是很常见的。如果您使用的是 LVM,LVM 会将您创建的任何 LV 的前几个扇区归零是正常的,这样旧数据就不会干扰。
还有一个专用实用程序 (
wipefs
) 可以摆脱旧的魔术字节签名,您可以使用它来摆脱文件系统和分区表元数据。如此处所示,MBR(主引导记录)相对简单;https://en.wikipedia.org/wiki/Master_boot_record。
当您使用时,
/dev/urandom
您总是可以创建一些看起来像分区表的东西。解决方案是用零填充分区表区域并dev/urandom
用于其余部分。Linux 还支持其他可能被触发的其他磁盘格式,在填充随机数据时会导致“无效”分区出现。
将 512 个字节的集合定义为主引导记录的东西是最后存在的值
0x55 0xAA
。产生这样一个值的几率是 65,536 分之一/dev/urandom
:不太可能,但同样不可能的事情总是会发生。(其他一些分区表,例如Apple Partition Map,也有类似的短签名。您可能已经生成了其中一个。)
这样的分区是否存在于该磁盘上的某个时间?如果磁盘使用 GPT,则辅助 GPT 标头可能已恢复并且仍然具有旧分区表。
https://en.wikipedia.org/wiki/GUID_Partition_Table