我目前正在使用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'用法。 –