脚本循环遍历文件中哈希列表,并从第一次迭代开始使用变量

脚本循环遍历文件中哈希列表,并从第一次迭代开始使用变量

我目前正在上一门网络安全课,我们需要破解哈希密码。为此,我们使用 hashcat。由于哈希值很多,我试图编写一个脚本,用列表中包含的所有哈希值来测试哈希密码。我的脚本如下:

 1 #! /bin/bash
  2 listhsh="hashlist.txt"
  3 
  4 
  5 while read file; do
  6         echo $file
  7         hashcat -a 0 -m $file -O ~/devoir_PIII_Alice.txt /usr/lib/rockyou.txt
  8 done < $listhsh

该文件包含以下值。这些是定义要测试的哈希类型的代码。

900
0
5100
100
1300
1400
10800
1700
5000
600

我遇到的问题是,脚本打开文件,获取包含要测试的哈希类型代码的第一行,并使用中的值运行 hashcat $file=900。但是,一旦测试以第一个值结束,脚本就会使用相同的值执行 hashcat $file=900。因此,最终结果是 hashcat 使用$file=900列表中的值执行相同的测试。

答案1

一个选项可以是for循环。该-m选项用于运行哈希。该文件应该输入值并循环每个哈希类型。

以下更改应该会对您的脚本有所帮助。我替换hashfile

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

for hash in $(cat $listhsh); do
echo $hash
    hashcat -a 0 -m $hash -O ~/devoir_PIII_Alice.txt /usr/lib/rockyou.txt
done

作为测试,我将该行作为回显行运行,看看它是否可以工作:

~$ ./hashcat_test 
900
hashcat -a 0 -m 900 -O ~/devoir_PIII_Alice.txt /usr/lib/rockyou.txt
0
hashcat -a 0 -m 0 -O ~/devoir_PIII_Alice.txt /usr/lib/rockyou.txt
5100
hashcat -a 0 -m 5100 -O ~/devoir_PIII_Alice.txt /usr/lib/rockyou.txt
100
hashcat -a 0 -m 100 -O ~/devoir_PIII_Alice.txt /usr/lib/rockyou.txt
1300
hashcat -a 0 -m 1300 -O ~/devoir_PIII_Alice.txt /usr/lib/rockyou.txt
1400
hashcat -a 0 -m 1400 -O ~/devoir_PIII_Alice.txt /usr/lib/rockyou.txt
10800
hashcat -a 0 -m 10800 -O ~/devoir_PIII_Alice.txt /usr/lib/rockyou.txt
1700
hashcat -a 0 -m 1700 -O ~/devoir_PIII_Alice.txt /usr/lib/rockyou.txt
5000
hashcat -a 0 -m 5000 -O ~/devoir_PIII_Alice.txt /usr/lib/rockyou.txt
600
hashcat -a 0 -m 600 -O ~/devoir_PIII_Alice.txt /usr/lib/rockyou.txt

希望这可以帮助!

答案2

您没有引用扩展,因此 shell 会对其进行评估,这可能会带来问题。尝试以下操作:

#! /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
done < $listhsh

这些可能会有用:
https://unix.stackexchange.com/questions/68694/when-is-double-quoting-necessary
https://www.cyberciti.biz/faq/unix-howto-read-line-by-line-from-file/

相关内容