127 lines
3.8 KiB
Bash
127 lines
3.8 KiB
Bash
#!/bin/sh
|
|
#
|
|
# THE CLEANER SCRIPT
|
|
# Part of the secure_data_deletion toolkit by van Hauser / THC
|
|
# Run at your own risk. Tested on Linux only.
|
|
#
|
|
# Run this to wipe your system as most as possible with automatic stuff.
|
|
# You should run this in the STOP runlevels 2 and 3.
|
|
#
|
|
# ------------------------------------------------------------------------
|
|
#
|
|
# Please configure the following variables:
|
|
#
|
|
#
|
|
# WIPE_MODE: 1-3
|
|
# 1: highly secure mode (38 wipes)
|
|
# 2: insecure mode (2 wipes)
|
|
# 3: highly insecure mode (1 wipe)
|
|
WIPE_MODE=3
|
|
#
|
|
#
|
|
# WIPE_FAST: yes/no
|
|
# yes: dont use a secure random number generator, less secure
|
|
# no: use a secure random number generator, secure
|
|
WIPE_FAST=yes
|
|
#
|
|
#
|
|
# WIPE_VERBOSE: yes/no
|
|
# yes: write verbose messages
|
|
# no: only write if error/warnings occur
|
|
WIPE_VERBOSE=yes
|
|
#
|
|
#
|
|
# WIPE_DIRECTORIES: directories you want to wipe completely all files and
|
|
# subdirectories from. Usually /tmp, /usr/tmp and /var/tmp.
|
|
WIPE_DIRECTORIES="/tmp /usr/tmp /var/tmp"
|
|
#
|
|
# WIPE_USER_FILES: files you want to wipe from user directories. Usually
|
|
# .*history*, .netscape/cache/*, .netscape/history*,
|
|
# .netscape/cookies, tmp/*, *~ and core
|
|
WIPE_USER_FILES=".*history* .netscape/cache/ .netscape/history* \
|
|
.netscape/cookies .lynx_cookies tmp/* *~ .gqview_thmb/ dead.letter core"
|
|
|
|
# ------------------------------------------------------------------------
|
|
#
|
|
# Preparation Phase
|
|
#
|
|
test "$WIPE_MODE" -gt 0 -a "$WIPE_MODE" -lt 4 || {
|
|
echo "WIPE_MODE must be a value between 1 and 3."
|
|
exit 1
|
|
}
|
|
test "$WIPE_FAST" = yes -o "$WIPE_FAST" = "no" || {
|
|
echo "WIPE_FAST must be either yes or no."
|
|
exit 1
|
|
}
|
|
test "$WIPE_VERBOSE" = yes -o "$WIPE_VERBOSE" = "no" || {
|
|
echo "WIPE_VERBOSE must be either yes or no."
|
|
exit 1
|
|
}
|
|
MODE=""
|
|
test "$WIPE_MODE" -eq 2 && MODE="-l"
|
|
test "$WIPE_MODE" -eq 3 && MODE="-ll"
|
|
FAST=""
|
|
test "$WIPE_FAST" = yes && FAST="-f"
|
|
VERBOSE=""
|
|
test "$WIPE_VERBOSE" = yes && VERBOSE="-v"
|
|
|
|
# ------------------------------------------------------------------------
|
|
#
|
|
# Starting the wiping process
|
|
#
|
|
|
|
# Wipe directories
|
|
test -z "$VERBOSE" || echo "STARTING THE CLEANER."
|
|
test -z "$VERBOSE" || echo "CLEANER: Wiping directory contents"
|
|
for i in $WIPE_DIRECTORIES; do
|
|
test -z "$i" -o "$i" = "." -o "$i" = ".." -o "$i" = "/" || {
|
|
test -z "$VERBOSE" || echo " $i"
|
|
cd "$i" && srm $MODE $FAST -d -r -- .* *
|
|
}
|
|
done
|
|
|
|
# Wipe files
|
|
test -z "$VERBOSE" || echo "CLEANER: Wiping user files"
|
|
awk -F: '{ print $1 " " $6 }' /etc/passwd |
|
|
while read user homedir; do
|
|
test "$homedir" = "" -o "$homedir" = "." -o "$homedir" = ".." || {
|
|
cd "$homedir" && {
|
|
test -z "$VERBOSE" || echo " $user"
|
|
for j in $WIPE_USER_FILES; do
|
|
test -z "$j" || {
|
|
test -L "$j" || {
|
|
test -e "$j" && srm $MODE $FAST -d -r -- $j
|
|
# test -e "$j" && "i would wipe: $j"
|
|
}
|
|
}
|
|
done
|
|
}
|
|
}
|
|
done
|
|
|
|
# Wipe free space and inodes
|
|
test -z "$VERBOSE" || echo "CLEANER: Wiping free space and inodes on filesystems"
|
|
for i in `mount|grep -E '^/dev/.* type ext'|awk '{print$3}'`; do
|
|
test -z "$VERBOSE" || echo " $i"
|
|
test -z "$i" || sfill $MODE $FAST "$i"
|
|
done
|
|
|
|
# Now the swap space:
|
|
test -z "$VERBOSE" || echo "CLEANER: Wiping swap space"
|
|
#ACTIVE=`swapoff -s|grep ^/dev/|awk '{print$1}'`
|
|
swapoff -a
|
|
for i in `(grep -w swap /etc/fstab|awk '{print$1}';echo "$ACTIVE";)|sort -u`; do
|
|
test -z "$VERBOSE" || echo " $i"
|
|
test -z "$i" || sswap $MODE $FAST "$i"
|
|
done
|
|
|
|
# Finally the memory:
|
|
test -z "$VERBOSE" || echo "CLEANER: Wiping the memory"
|
|
smem $MODE $FAST
|
|
#
|
|
|
|
swapon -a
|
|
|
|
# FINNISHED!
|
|
test -z "$VERBOSE" || echo "THE CLEANER FINNISHED."
|