gpt4 book ai didi

linux - 无法在 while 读取循环内运行交互式 hashcat

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:06:56 26 4
gpt4 key购买 nike

我试图在循环中多次在 bash 脚本中运行 hashcat。我遇到的问题是,因为 hashcat 是交互式的,脚本会多次执行它。我想运行第一个 hashcat 命令,只有当它完成时,第二个命令才会运行。

脚本示例:

while read dict
do
hashcat -m 0 -a 0 hashfile.hash $dict
done < dictionary_paths

还有,嵌套的 while 循环呢?

例如:

while read rule_right
do
while read rule_left
do
hashcat -m 0 -a 1 hashfile.hash dict.lst dict.lst --rule-right=$rule_right --rule-left=$rule_left
done < $rule_left_file
done < $rule_right_file

最佳答案

这里的直接答案是使用标准输入以外的文件描述符:

while IFS= read -r dict <&3; do
hashcat -m 0 -a 0 hashfile.hash "$dict" # assuming dict is just one argument
done 3< dictionary_paths

3<意味着我们打开dictionary_paths在 FD 3 上,然后是 read ... <&3在读取操作本身期间将 FD 3 重定向到标准输入。因此,FD 0 -- stdin -- 在脚本运行期间仍指向其原始源(例如终端)。


对于嵌套循环,在每一层使用不同的 FD:

while IFS= read -r rule_right <&3; do
while IFS= read -r rule_left <&4; do
hashcat -m 0 -a 1 hashfile.hash dict.lst dict.lst \
--rule-right="$rule_right" --rule-left="$rule_left"
done 4<"$rule_left_file"
done 3<"$rule_right_file"

关于linux - 无法在 while 读取循环内运行交互式 hashcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38356968/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com