#!/bin/bash #random random keyfile generator ARGS=6 E_BADARGS=85 if [ $# -ne "$ARGS" ] then echo echo "Usage: `basename $0` [keyfile_name] [extension] [amount] {bytes} {min-count} {max-count}" # echo "Notice: [sudo apt-get install randomsound] before use" echo "uses dd with /dev/urandom" echo echo "Example: `basename $0` picture jpg 10 1024 512 4096" echo "--will make directory named picture_10" echo "--with 10 keyfiles named picture1.jpg to picture10.jpg" echo "--keyfile size will be random between .52MB & 4.19MB" echo exit $E_BADARGS fi filename=$1 extension=$2 amount=$3 bytes=$4 count_min=$5 count_max=$6 echo #echo "Restarting entropy with randomsound (doesn't always have the best entropy from startup)" #sudo /etc/init.d/randomsound restart mkdir "$filename"_"$amount" maxsize=`echo "$bytes*$count_max*.000001" | bc` minsize=`echo "$bytes*$count_min*.000001" | bc` echo echo "MIN: $minsize""MB"" MAX: $maxsize""MB" for a in `seq $amount` do echo entropy1=`cat /proc/sys/kernel/random/entropy_avail` echo -n "Making $filename$a.$extension with entropy of:$entropy1" number=0 FLOOR=$count_min RANGE=$count_max #initialize random number range while [ "$number" -le $FLOOR ] do SEED=$(head -1 /dev/urandom | od -N 1 | awk '{ print $2 }') RANDOM=$SEED number=$RANDOM let "number %= $RANGE" # Scales $number down within $RANGE. done currentfilesize=`echo "$bytes*$number*.000001" | bc` #helpful for large ones echo " will be $currentfilesize""MB" echo "dd if=/dev/urandom of=./"$filename"_"$amount"/"$filename""$a"."$extension" bs=$bytes count=$number" dd if=/dev/urandom of=./"$filename"_"$amount"/"$filename""$a"."$extension" bs=$bytes count=$number entropy2=`cat /proc/sys/kernel/random/entropy_avail` totale=`echo "$entropy1-$entropy2" | bc` # echo ".:: Pausing to generate more entropy ($totale used $entropy2 left) ::." # sleep 3 echo done echo "Made $a keyfile(s) in /""$filename""_""$amount" echo exit 0