1

嗨,首先道歉,如果这措辞不好,会尽量解释清楚。

我有一个名为 testpassword 的二进制文件,用法可能很容易解释。如下

./testpassword hello

如果你好是正确的密码,那么输出将是

pass=correct

如果 hello密码不正确,输出将是

pass=incorrect

我是 Linux 和 shell 脚本的完整初学者,但制作了一个非常粗糙 + 简单的脚本,称为 bruteforce.sh。使用单词列表执行“蛮力”攻击。内容如下

./testpassword hello
./testpassword jelly
./testpassword watermelon
./testpassword anotherword  
etc..

经过相当多的观察后,我在一个新脚本中运行了以下内容,以一种非常粗略的方式在成功时通知我

./bruteforce.sh 2 2>&1 >/dev/null | grep -n pass=correct

输出将类似于12: pass=correct. 其中 12 是 bruteforce.sh 中的行号

当我在屏幕上看到这个时,我可以 ctrl-c 并运行

awk 'NR==12' bruteforce.sh

以获得对应于行号的正确通行证。我只是想知道是否有更简单或更清洁的方法来做这件事的任何部分

在此先感谢您的任何建议

4

1 回答 1

0

可能是这样的。

for i in {1..1000}; do
    (echo -n "$i: " && ./testpassword $i) | grep pass=correct
done

这只是在脚本输出之前回显当前密码。当然,{1..1000}可以替换为您打算使用的单词列表。

于 2012-09-27T05:05:31.913 回答