The script I posted on how to write random data to the hard drive was kinda buggy..
Here is a better version, that actually stop when it finishes. It also shows the progress and does some safety checking (It’s weird, but I actually don’t enjoy much of this. I like the feeling of having to be a lot careful at the console. Sorry, can’t explain)
I also removed a lot of quotes I found unnecessary (a thing that surely would chock the folks at #bash @ irc.freenode.org). So I bet there is some bug hidden that I couldn’t spot. Use at your own risk
#!/bin/bash
# The author of this script, Elias Amaral,
# claims no copyright over it.
# http://iamstealingideas.wordpress.com/2010/05/20/writing-random-data-to-a-hard-drive-again
msg() {
printf "\n - $1\n\n" $2
}
mbs=4 # 4mb
blocksize=$(($mbs * 1024 * 1024))
dev=$1
if [[ -z $dev ]]; then
msg "usage: $0 <device>"; exit
elif [[ ! -b $dev ]]; then
msg "$dev: not a block device"; exit
elif [[ ! -w $dev ]]; then
msg "$dev: no write permission"; exit
elif grep -q $dev /etc/mtab; then
msg "$dev: mounted filesystem on device, omgomg!"; exit
fi
cat <<end
This program writes random data to a hard disk.
It is intended to be used before storing encrypted data.
It may contain bugs (but seems to work for me).
It seems you have chosen to wipe data from the disk $dev.
Here is the partition table of this disk:
end
fdisk -l $dev
echo
echo 'Are you sure you want to proceed?'
msg 'WARNING: IT WILL DESTROY ALL DATA ON THE DISK'
read -p 'Type uppercase yes if you want to proceed: ' q
if [[ $q != YES ]]; then
exit
fi
while
echo $i > step.new
mv step.new step
msg 'Writing at offset %s' $(($mbs * $i))M
openssl rand \
-rand /dev/urandom \
$blocksize | \
dd of=$dev \
bs=$blocksize \
seek=$i
do
let i++
done
msg Finished.

Nice script. I still had some problems with the quotes. And I think you forget to initialise i with 0 before the while loop begins. And it wasn’t fast enough to produce data at full hard disk speed on my machine.
Another idea is to seed a fast symmetric stream cipher with some random data as mentioned on
and already mentioned in your first post.
dd if=/dev/zero bs=1M | openssl bf-cbc -pass pass:`cat /dev/urandom | tr -dc [:graph:] | head -c56` | sudo dd of=$dev bs=1MThis writes at about 90 MiByte/s to my disc (which is the maximum speed for the drive) and stops when the disk is full.