Я пишу скрипт, который должен выполнять атаку по словарю на текстовый файл, передаваемый в качестве аргумента, зашифрованного с помощью openssl.Вот что я написал:
#!/bin/bash
# written by Cosimo Colaci
passwords=( $(cat italian.txt) ) # italian.txt is a list of words
for word in ${passwords[@]}
do
openssl enc -d -aes-128-cfb1 -in "$1" -k $word 2>/tmp/err
pid=$$
wait $pid
if [ -s /tmp/err ]
then
continue
else
openssl enc -d -aes-128-cfb1 -in "$1" -k $word;
break;
fi
done
Я также пытался
for word in ${passwords[@]}
do
openssl enc -d -aes-128-cfb1 -in "$1" -k $word &>/dev/null
exitstatus=$?
if [ $exitstatus -ne 0 ]
then
continue
else
openssl enc -d -aes-128-cfb1 -in "$1" -k $word;
break;
fi
done
Проблема в том, что на некоторых циклах состояние выхода равно 0, даже если расшифровка не удалась, как я вижу, запустив: bash -x ./crack_italian.sh filetodecript.txt
но та же команда в терминале ведет себя как положено и завершается неудачно.