Shell脚本密码审核

时间:2012-09-27 06:28:36

标签: shell passwords

我有一个名为./testpassword的二进制文件,语法如下

./testpassword pass PASSWORD_GOES_HERE

如果密码正确,则输出

pass=correct

如果输出不正确

pass=incorrect

我是linux和脚本的新手,但在这里的成员的帮助下,制作了一个示例shell脚本,如下所示

    cat passwords.txt | while read x ; do echo -n "$x: " && ./testpassword pass $x ;
done

其中password是txt格式的wordlist。

这很好用,如果我留意终端,我可以看到如下输出(继续为单词列表中的每一行)

jordyt: pass=incorrect
dawder: pass=incorrect
LOL12345: pass=incorrect
warcraft: pass=incorrect
solidussnake: pass=incorrect
0005: pass=correct

所以在这种情况下,我知道0005是我的密码,我的问题是,是否可以在找到密码时停止程序,或者在某处自动显示密码?如果我要离开屏幕,我会忘记密码是什么,因为屏幕将继续尝试密码并向下滚动

我之前的做法就是这样Shell script password bruteforcing。它起作用,因为我可以走开,稍后回来看看密码已被破解,然后ctrl + c程序,除了它是一个漫长的啰嗦做事方式。在我必须手动搜索与破解密码相对应的词汇表中的行号

之后

2 个答案:

答案 0 :(得分:0)

您可以将./testpassword pass $x的执行保存在变量中:

cat passwords.txt | while read x ; do result=`./testpassword pass $x` ; echo -n "$x: $result" ; done

然后,您可以将$ result与字符串“pass = correct”进行比较,如果以这种方式找到字符串,则会中断循环:

if [[ "$result" == *pass=correct ]]; then break; fi

全部放在一起:

cat passwords.txt | while read x ; do result=`./testpassword pass $x` ; echo -n "$x: $result" ; if [[ "$result" == *pass=correct ]]; then break; fi ; done

答案 1 :(得分:0)

修改您的testpassword脚本,以便在成功时返回0,在失败时返回其他值。之后,您可以按如下方式重写循环:

cat passwords.txt | while read x; do
    echo -n "$x: " && ./testpassword pass $x && break
done