Очень нужен шреддер (который перезаписывает файлы по номральным алгоритмам - типо Гутмана и т. п.) Вариант затереть нулями просьба не предлагать! Ps Срочно нужен.
http://www.jetico.com/linux/ BCWipe for UNIX versions Посматри эту, под Win её юзаю... http://www.jetico.com/linux/bcwipe-help/wu_intro.htm Алгоритмы такие
Утилита классная, сам ее часто юзаю! Не знал, что есть ее порты под linux. Спасибо, щас проверю. Вопрос решен. Утилита отличная. Всем советую!
Кгм... так ты не доверяешь Диги? Зря. Вот тебе от меня: Code: #!/bin/bash hell=( ' shred.sh: wiper by ShadOS [Hell Knights Crew]\n' '//-------------------------------------------\n' ' The Mainest Evil of Runet \n' ' _ _ _ _ _ __ _ _ _ \n' ' | || |___| | | |/ /_ _ (_)__ _| |_| |_ ___ \n' ' | __ / -_) | | . <| . \| / _. | . \ _(_-< \n' ' |_||_\___|_|_|_|\_\_||_|_\__. |_||_\__/__/ \n' ' hellknights.void.ru |___/ .0x48k. \n' ' shados.0x48k.cc .ShadOS. \n' '//-------------------------------------------\n' ) BLOCKSIZE=1 # операции ввода/вывода в/из /dev/urandom требуют указания размера блока, #+ иначе вы не получите желаемого результата. E_BADARGS=70 E_NOT_FOUND=71 E_CHANGED_MIND=72 val=( "\x55" "\xAA" "\x92" "\x49" "\x24" "\x00" "\x11" "\x22" "\x33" "\x44" "\x55" "\x66" "\x77" "\x88" "\x99" "\xAA" "\xBB" "\xCC" "\xDD" "\xEE" "\xFF" "\x55" "\xAA" "\x92" "\x00" "\x49" "\x24") RANDOM=$$ # Инициализация генератора случайных чисел числом PID процесса-сценария. PIPS=256 # Значения от 0 до 256 #echo "${#val}" #Длинна массива #echo "${#val[*]}" #Количество элементов массива #echo -e "${val[@]}" #Вывод массива hexcvt () { BASE=16 if [ -z "$1" ] then echo 0 return # "Return" 0, если функции не был передан аргумент. fi echo ""$1" "$BASE" o p" | dc # "o" устанавливает основание системы счисления для вывода. # "p" выводит число, находящееся на вершине стека. # См. 'man dc'. return } random_fill() { if [ $gen="rnd" ] # rnd, иначе /dev/urandom по-умолчанию then for ((j=$flength; j > 0 ; j--)) do let "die1 = RANDOM % $PIPS" die1=`hexcvt $die1` die1=`echo "\x""$die1"` echo -ne $die1 >> $file done else dd if=/dev/urandom of=$file bs=$BLOCKSIZE count=$flength fi } usage () { echo -e "Порядок использования: `basename $0` <filename> <visr|bs|pg> <rnd|dev>" echo -e "\tАлгоритмы:" echo -e "\t visr - VISR" echo -e "\t bs - Брюса Шнайера" echo -e "\t pg - Питера Гутмана" echo -e "\tГенераторы псевдослучайных последовательностей:" echo -e "\t rnd - \$RANDOM (быстро, предсказуемей, по-умолчанию)" echo -e "\t dev - /dev/urandom (медленней, надежней)" exit $E_BADARGS } clear echo -en '\E[34;40m'"\033[1m${hell[@]}\033[0m" if [ -z "$3" ] # Имя файла, генератор и алгоритм не указан. then usage fi file=$1 alg=$2 gen=$3 if [ ! -e "$file" ] then echo "Файл \"$file\" не найден." exit $E_NOT_FOUND fi echo; echo -ne "Вы уверены в том, что желаете \033[1mуничтожить\033[0m \"$file\" по алгоритму \"$2\" (y/n)? " read answer case "$answer" in [nN]) echo "Передумали? Операция отменена." exit $E_CHANGED_MIND ;; *) echo -e "\033[1mУничтожается\033[0m файл \"$file\".";; esac stime=$(date +%H%M%S%N) echo "Запущен в $(date +%H:%M:%S.%N)" flength=$(ls -l "$file" | awk '{print $5}') # Поле с номером 5 - это длина файла. cat /dev/null > $file # Переходим в начало файла echo case "$alg" in visr | VISR) #Затираем по алгоритму VISR pass_count=0 for i in 1 2 3 do let "pass_count += 1" echo "Проход $pass_count" dd if=/dev/zero of=$file bs=$BLOCKSIZE count=$flength sync cat /dev/null > $file # Переходим в начало файла let "pass_count += 1" echo "Проход $pass_count" for ((j=$flength; j > 0; j--)) do echo -ne "\xFF" >> $file done sync cat /dev/null > $file # Переходим в начало файла done let "pass_count += 1" echo "Проход $pass_count" for ((j=$flength; j > 0; j--)) do echo -ne "\xAA" >> $file done sync ;; bs | BS) #Затираем по алгоритму Брюса Шнайера pass_count=1 echo "Проход $pass_count" for ((i=$flength; i > 0; i--)) do echo -ne "\xFF" >> $file done sync cat /dev/null > $file # Переходим в начало файла let "pass_count += 1" echo "Проход $pass_count" dd if=/dev/zero of=$file bs=$BLOCKSIZE count=$flength sync cat /dev/null > $file # Переходим в начало файла for i in 3 4 5 6 7 do let "pass_count += 1" echo "Проход $pass_count" random_fill sync cat /dev/null > $file # Переходим в начало файла done;; pg | PG) #Затираем по алгоритму Питера Гутмана pass_count=0 for i in 1 2 3 4 do let "pass_count += 1" echo "Проход $pass_count" random_fill sync cat /dev/null > $file # Переходим в начало файла done for ((i=0; i < ${#val[*]} ; i++)) do let "pass_count += 1" echo "Проход $pass_count" for ((j=$flength; j > 0 ; j--)) do echo -ne "${val[i]}" >> $file done sync cat /dev/null > $file # Переходим в начало файла done for i in 32 33 34 35 do let "pass_count += 1" echo "Проход $pass_count" random_fill sync cat /dev/null > $file # Переходим в начало файла done;; *) #Для некорректного ввода echo "Алгоритм был задан некорректно!" usage esac rm -f $file # Наконец удалить изрядно "подпорченный" файл. sync # Вытолкнуть буферы в последний раз. let "stime=$(date +%H%M%S%N)-stime" echo $stime echo "Остановлен в $(date +%H:%M:%S.%N)" echo -e "Файл \"$file\" \033[1mуничтожен\033[0m."; echo echo -e "\a" exit 0