我目前正在使用bash腳本測試一個簡單的字典攻擊。我已經簡單地鍵入以下命令編碼我的密碼「蛇」與sha256sum:Bash腳本IF語句不起作用
echo -n Snake | sha256sum
這產生如下:
aaa73ac7721342eac5212f15feb2d5f7631e28222d8b79ffa835def1b81ff620 *-
我然後複製粘貼的散列串入程序,但腳本沒有做到打算做的事情。這個腳本(請注意,我創建了一個測試字典文本文件,該文件只包含6行):
echo "Enter:"
read value
cat dict.txt | while read line1
do
atax=$(echo -n "$line1" | sha256sum)
if [[ "$atax" == "$value" ]];
then
echo "Cracked: $line1"
exit 1
fi
echo "Trying: $line1"
done
結果:
Trying: Dog
Trying: Cat
Trying: Rabbit
Trying: Hamster
Trying: Goldfish
Trying: Snake
代碼應顯示「破解:蛇」並終止時,它將散列字符串與單詞「Snake」進行比較。我哪裏錯了?
編輯:該錯誤確實是我的文本文件中的DOS行。我做了一個unix文件和校驗和匹配。感謝大家。
後也順便說一句,運行'bash的-x yourscript'會給你什麼是這裏發生了一個更好的想法。 –
......另一方面,'echo -n'實際上並不是很好的形式。'echo'的POSIX規範將'-n'描述爲「未指定」,這意味着實現可以在給出該參數時做任何事情 - 它可以在其輸出上抑制換行,但也可以在輸出上打印「-n」並且符合要求 - 並且在啓用「xpg_echo」和「posix」選項的情況下運行時,bash的行爲就是如此。 –
...參見http://pubs.opengroup.org/onlinepubs/009604599/utilities/echo.html中的上述規範,特別是APPLICATION USAGE部分,該部分使用'printf'提供替代建議來模擬常見的'echo'用法。 –