Revision: 44899
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at April 20, 2011 15:26 by ksaver
Initial Code
#!/usr/bin/env bash
# karm.sh
# A tiny secure deletion tool
# Uses dd, fsync and /dev/urandom to overwrite
# a file twice with a random data stream and delete it.
# @_ksaver, Feb 2010.
# Licence: Public Domain Code.
# Use it with caution and under your own risk.
# Not warranty provided at all.
VERSION='0.4'
function karm(){
# Gets file name from $1
FILE="$1"
# Gets file size.
SIZE=$(/usr/bin/du -k "$FILE")
COUNT=${SIZE%"$FILE"*}
# check if urandom exists
if [ -e '/dev/urandom' ]
then
RANDD='/dev/urandom'
else
RANDD='/dev/random'
fi
# Send random stream to file...
/bin/dd if=$RANDD of="$FILE" bs=1k count=$COUNT &> /dev/null
# If data was successfuly written...
if [ $? = 0 ]
then
# forces writing of cached file to physical storage...
(/usr/bin/env fsync "$FILE" &> /dev/null && return 0) \
|| ( sync && return 0)
else
return 1
fi
}
function kdelete(){
# unlink the karmed file's inode...
/bin/rm "$1" > /dev/null || return 1
}
# _main_
# if not arguments were given...
if [ -z "$1" ]
then
echo -e "\tkarm $VERSION: Secure deleting tool."
echo -e "\tSyntaxis: $0 <File_to_delete>"
exit 1
else
FILE="$1"
# If file exists
if [ -f "$FILE" ]
then
echo -n "karming $FILE... "
karm "$FILE" && karm "$FILE" && kdelete "$FILE"
if [ $? = 0 ]
then
# this far, everything has gone ok...
echo " [OK]"
exit 0
else
# May be you are not the owner of file
echo -e "[ERR]:\n$FILE not karmed. Are you the owner?"
exit 1
fi
else
# File doesn't exist...
echo "[ERR] $0: Is $FILE a valid file?"
exit 1
fi
fi
# EOF
Initial URL
Initial Description
A tiny secure deletion tool... Example: $ karm.sh image1.jpg karming image1.jpg... [OK] $ karm.sh /etc/passwd karming /etc/passwd... [ERR]: /etc/passwd not karmed. Are you the owner?
Initial Title
karm.sh: A tiny secure deletion tool.
Initial Tags
Initial Language
Bash