Reputation: 4681
I have a hard drive that I want to overwrite, not with null bytes, but with a message.
48 69 64 64 65 6e 20 = "Hidden "
Here's my command thus far:
echo "Hidden " > /myfile
dd if=/myfile of=/dev/sdb bs=1M
Note: I have also tried an assorment of parameters such as count and conv to no avail
Now, this is fine. When I run:
dd if=/dev/sdb | hexdump -C | less
I can see the first few bytes written over, however, the rest is unchanged. I'd like to recursively write "Hidden " to the drive.
Upvotes: 5
Views: 5409
Reputation: 16016
I don't have a spare disk to try this out on, but you can use the yes
command to continuously push your string into the pipe:
yes "Hidden" | dd of=/dev/sdb
I assume once dd has written the whole disk, then it will close the pipe and this command will finish.
The above will newline-delimit the "Hidden" string. If you want it space-delimited, as in the question you can do:
yes "Hidden" | paste -d' ' -s - | dd of=/dev/sdb
Or if you want it null-delimited:
yes "Hidden" | tr '\n' '\0' | dd of=/dev/sdb
Upvotes: 14
Reputation: 82026
dcfldd, a fork of dd, has some additional features that you may find useful. For example, your problem would be solved by:
dcfldd textpattern="Hidden " of=/dev/sdb bs=1M
Upvotes: 2
Reputation: 41968
If you don't specify if
parameter, input is read from stdin. This allows you to do something like this:
dd of=/dev/sdb < for((i=0;i<100000;i++)); do echo 'Hidden '; done;
The value of 100000
obviously needs to be at least diskSizeInBytes / strlen('Hidden ')
.
Given the consequences I didn't test this for you but it ought to work ;)
Upvotes: 3