我有一个名为./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程序,除了它是一个漫长的啰嗦做事方式。在我必须手动搜索与破解密码相对应的词汇表中的行号
之后答案 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