3

我有一个要覆盖的硬盘驱动器,不是用空字节,而是用一条消息。

48 69 64 64 65 6e 20 =“隐藏”

到目前为止,这是我的命令:

echo "Hidden " > /myfile
dd if=/myfile of=/dev/sdb bs=1M

注意:我也尝试过各种参数,例如 count 和 conv 无济于事

现在,这很好。当我运行时:

dd if=/dev/sdb | hexdump -C | less

我可以看到前几个字节被覆盖,但是,其余的没有改变。我想递归地将“隐藏”写入驱动器。

4

3 回答 3

13

我没有备用磁盘来尝试这个,但你可以使用yes命令不断地将你的字符串推入管道

yes "Hidden" | dd of=/dev/sdb

我假设一旦 dd 写入了整个磁盘,那么它将关闭管道并且该命令将完成。

以上将换行分隔“隐藏”字符串。如果您希望它以空格分隔,如问题中您可以执行的操作:

yes "Hidden" | paste -d' ' -s - | dd of=/dev/sdb

或者,如果您希望它以 null 分隔:

yes "Hidden" | tr '\n' '\0' | dd of=/dev/sdb
于 2013-12-21T01:30:08.777 回答
2

如果不指定if参数,则从标准输入读取输入。这使您可以执行以下操作:

dd of=/dev/sdb < for((i=0;i<100000;i++)); do echo 'Hidden '; done;

的值100000显然需要至少为diskSizeInBytes / strlen('Hidden ')

鉴于后果我没有为你测试这个但它应该工作;)

于 2013-12-21T01:10:30.193 回答
2

dcfldd是 dd 的一个分支,具有一些您可能会觉得有用的附加功能。例如,您的问题将通过以下方式解决:

dcfldd textpattern="Hidden " of=/dev/sdb bs=1M
于 2013-12-21T01:56:59.827 回答