多线程(bash)时将函数与函数分开

时间:2014-02-02 18:06:55

标签: multithreading bash function

我正在尝试编写.zip密码破解程序(解密我忘记密码的旧.zip文件),我想让它更快。

我认为速度限制是通过解压缩(使用unzip -t -P)来测试密码。我以为我 如果我复制原始文件并使用密码生成器进行测试(现在我只使用seq来测试数字并生成用于测试单词的词),可以使它更快。我的问题是,我不能单独输出数字和“单词”。

我试过这样:

generate (){

seq 0 999999 & generatewords 5 1 a A

}

check (){

generate | while read password; do

unzip -tqqq -P $password $file &>/dev/null

if [ $? = 0 ]; then

echo -e "Password found:\n\n\"$password\"" && exit

fi

done

}

但从逻辑上讲,我只是将数字和单词混合为输出。有没有办法分离它们并将它们作为下一个函数的参数,所以它可以处理更多的文件?如果其中一个获得匹配,脚本应该退出。你能用bash做到这一点吗?其他改进是受欢迎的。

抱歉我的英文不好和格式错误:/

1 个答案:

答案 0 :(得分:0)

是的,您可以使用$1并从其他功能

运行检查功能
check (){
read password
unzip -tqqq -P $password $file &>/dev/null
if [ $? = 0 ]; then
echo "Password is a $1"
echo -e "Password found:\n\n\"$password\"" && exit
fi;}

generate (){
while true; do
seq 0 999999 | check number
generatewords 5 1 a A | check word
done;}

您可以以任何方式使用$1我想要的方式只是消化