我目前正在上一门网络安全课,我们需要破解哈希密码。为此,我们使用 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
选项用于运行哈希。该文件应该输入值并循环每个哈希类型。
以下更改应该会对您的脚本有所帮助。我替换hash
了file
。
#!/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/