bash - 如何在 bash 脚本中逐行获取 Crunch 输出?
问题描述
我找到了一个旧multibit.key
钱包,但它是加密的,我想尝试暴力破解它,因为我知道密码的前 6 或 7 个字符。我正在生成具有固定开头的单词,并且最终会有所不同以尝试找到此钱包的密码。但是,当我运行 crunch 程序时,bash 脚本正在等待它结束,然后开始读取输出的每一行,并且由于它生成千兆字节的数据,程序最终被杀死。我想这样做,它在单词列表生成器生成的每个单词处迭代循环crunch
,到目前为止我的代码如下。我必须改变什么才能这样做?
#!/bin/bash
echo Usage: apply-guesses.sh [key file]
echo Key file: $1
for password in $(crunch 12 12 abcdefghjiklmnopqrstuvwxyz -t PASSWORD_BEGIN@@@@@); do
echo ------
echo Attempting: $password...
openssl enc -d -p -aes-256-cbc -md md5 -a -in $1 -out recovered.key -pass pass:$password
if [ $? -eq 0 ];
then
echo "Success!";
break;
else
echo "Failed";
fi
echo ------
done
解决方案
我没有任何经验,crunch
但我假设它会立即开始生成输出。为了这个练习,我将使用以下函数模拟一些输出:
$ generate() { printf "1\n2\n3\n"; sleep 3; }
看起来像某种结构的缓冲直到结束for
,例如:
for s in $(generate)
do
echo $s
done
# 3 second pause ...
1
2
3
但是,如果我们切换到类似的while
构造,我们就看不到缓冲/延迟:
while read -r s
do
echo $s
done < <(generate) # output lines are generated right away ...
1
2
3
# 3 second pause ...
推荐阅读
- reactjs - 命名空间声明不能位于与其合并的类或函数之前
- jmeter - Jmeter-线程组-线程属性
- python-2.7 - Python:在reportlab的顶部添加徽标
- amazon-web-services - 如何在 cloudformation 内的安全组中使用 EC2 ip 地址
- python - read_csv 在某些列中跳过分隔符
- html - Angular 4 - 在 HTML 模板中添加日期到日期
- c# - 将新项目添加到列表中以替换列表中的旧项目
- excel - 共享工作簿的列宽不变
- java - 递归检索二叉搜索树的子集
- android - 在颤动中打开位置后如何更新我的位置