You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

循环处理哈希类型列表的Bash脚本卡在首次迭代问题求助

解决hashcat脚本只执行第一个哈希类型的问题

我之前也碰到过一模一样的情况!问题的根源在于hashcat默认会读取标准输入(stdin),而你的while read循环正好是从stdin读取hashlist.txt的内容。当第一个哈希类型的hashcat任务启动后,它会把hashlist.txt里剩下的所有行都当作自己的输入吃掉,导致循环直接终止,不会继续处理后面的哈希类型。

两种可行的解决方案

方案1:使用hashcat的--stdin-disable参数(推荐)

hashcat提供了专门的参数来禁用从stdin读取数据,这样就不会干扰循环的read操作了。修改后的脚本如下:

#!/bin/bash
listhsh="hashlist.txt"

while read file; do
    echo "正在测试哈希类型:$file"
    hashcat -a 0 -m "$file" -O --stdin-disable ~/devoir_PIII_Alice.txt /usr/lib/rockyou.txt
done < "$listhsh"

方案2:重定向hashcat的输入到/dev/null

如果你的hashcat版本比较旧,没有--stdin-disable这个参数,可以把hashcat的输入重定向到/dev/null,让它不会读取循环的stdin:

#!/bin/bash
listhsh="hashlist.txt"

while read file; do
    echo "正在测试哈希类型:$file"
    hashcat -a 0 -m "$file" -O ~/devoir_PIII_Alice.txt /usr/lib/rockyou.txt < /dev/null
done < "$listhsh"

额外小提示

  • 给变量加上双引号(比如"$file"、"$listhsh"),可以避免如果文件名/路径包含空格时出现错误;
  • 增加echo的提示信息,能清楚看到当前正在测试哪个哈希类型,方便排查问题。

内容的提问来源于stack exchange,提问作者frepie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:14:49