Нужен шреддер файлов под *nix'сы

Discussion in 'Безопасность и Анонимность' started by 1ten0.0net1, 5 Jan 2008.

  1. 1ten0.0net1

    1ten0.0net1 Time out

    Joined:
    28 Nov 2005
    Messages:
    473
    Likes Received:
    330
    Reputations:
    389
    Очень нужен шреддер (который перезаписывает файлы по номральным алгоритмам - типо Гутмана и т. п.) Вариант затереть нулями просьба не предлагать!
    Ps Срочно нужен.
     
  2. aka PSIH

    aka PSIH Elder - Старейшина

    Joined:
    7 Feb 2006
    Messages:
    543
    Likes Received:
    274
    Reputations:
    51
    http://www.jetico.com/linux/
    BCWipe for UNIX versions
    Посматри эту, под Win её юзаю...

    http://www.jetico.com/linux/bcwipe-help/wu_intro.htm
    Алгоритмы такие
     
    #2 aka PSIH, 5 Jan 2008
    Last edited: 5 Jan 2008
  3. 1ten0.0net1

    1ten0.0net1 Time out

    Joined:
    28 Nov 2005
    Messages:
    473
    Likes Received:
    330
    Reputations:
    389
    Утилита классная, сам ее часто юзаю!
    Не знал, что есть ее порты под linux. Спасибо, щас проверю.

    Вопрос решен. Утилита отличная. Всем советую!
     
    #3 1ten0.0net1, 5 Jan 2008
    Last edited: 5 Jan 2008
  4. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    не BCWipe, конечно +)..

    http://digimortal.freeweb7.com/toolz/diwiper.pl.txt
     
    1 person likes this.
  5. 1ten0.0net1

    1ten0.0net1 Time out

    Joined:
    28 Nov 2005
    Messages:
    473
    Likes Received:
    330
    Reputations:
    389
    Скачал, но в этот раз, если ты не против, все же заюзаю BCWipe - 2 года серваку ;-).
     
  6. ShadOS

    ShadOS ы

    Joined:
    11 Feb 2007
    Messages:
    667
    Likes Received:
    351
    Reputations:
    413
    Кгм... так ты не доверяешь Диги? Зря.
    Вот тебе от меня:
    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
    
     
    #6 ShadOS, 5 Jan 2008
    Last edited: 5 Jan 2008
    2 people like this.
  7. nikto

    nikto Elder - Старейшина

    Joined:
    2 Mar 2008
    Messages:
    39
    Likes Received:
    11
    Reputations:
    4
    а 'shred' чем плох?
     
  8. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    man shred
    Во многих дистрах он уже есть