crunch、fcrackzip

crunch介绍与使用

1、介绍

crunch是什么?

Crunch是一种创建密码字典工具,按照指定的规则生成密码字典,可以灵活的制定自己的字典文件。使用Crunch工具生成的密码可以输出到屏幕,保存到文件、或另一个程序。

2、使用

Kali中已自带crunch工具,可直接在kali中使用。

命令格式:

crunch [] [options]

参数:

min-len 最小长度字符串,即使不使用参数的值,也需要此选项

max-len 最大长度字符串,即使不使用参数的值,也需要此选项

charset string 字符集设置,默认是小写字符集

options :

-b 指定文件输出的大小,避免字典文件过大

-c 指定文件输出的行数,即包含密码的个数

-d 限制相同元素出现的次数

-e 定义停止字符,即到该字符串就停止生成

-f 调用库文件(/etc/share/crunch/charset.lst)

-i 改变输出格式,即aaa,aab -> aaa,baa

-I 通常与-t联合使用,表明该字符为实义字符

-m 通常与-p搭配

-o 将密码保存到指定文件

-p 指定元素以组合的方式进行

-q 读取密码文件,即读取pass.txt

-r 定义重某一字符串重新开始

-s 指定一个开始的字符,即从自己定义的密码xxxx开始

-t 指定密码输出的格式

-u 禁止打印百分比(必须为最后一个选项)

-z 压缩生成的字典文件,支持gzip,bzip2,lzma,7z

特殊字符,通常与-t配合使用

% 代表数字

^ 代表特殊符号

@ 代表小写字符

, 代表大写字符

3、实例

crunch 6 6 123 -o number.txt //生成六位以123元素为组合的字典集,并输出到number.txt

crunch 1 1 -q read //读取read文件中每行内容作为基本字符生成字典

read文件内容如下:

生成的字典集结果如下:

fcrackzip的使用(爆破)

1. 暴力破解

暴力破解适用于不知道密码任何信息的情况。指定字符集和密码长度范围即可:

1
fcrackzip -b -c <字符集> -l <最小长度>-<最大长度> -u <zip文件>
  • -b:使用暴力破解模式。
  • -c <字符集>:指定字符集,例如 a 代表小写字母,A 代表大写字母,1 代表数字。
  • -l <最小长度>-<最大长度>:密码长度范围。
  • -u:测试解压文件的有效性。

示例:
尝试破解长度为 4 到 5 位的数字密码:

1
fcrackzip -b -c 1 -l 4-5 -u file.zip

2. 字典攻击

字典攻击适用于有密码列表(字典文件)的情况。可以指定字典文件来尝试其中的每个密码:

1
fcrackzip -D -p <字典文件> -u <zip文件>
  • -D:使用字典攻击模式。
  • -p <字典文件>:指定密码字典文件的路径。

示例:
使用字典文件 passwords.txt 尝试破解:

1
fcrackzip -D -p passwords.txt -u file.zip

3. 常用字符集参数

  • a:小写字母(abcdefghijklmnopqrstuvwxyz
  • A:大写字母(ABCDEFGHIJKLMNOPQRSTUVWXYZ
  • 1:数字(0123456789
  • !:符号(例如 !@#$%^&*()

示例:
尝试小写字母和数字组合,密码长度为 3 到 4 位:

1
fcrackzip -b -c a1 -l 3-4 -u file.zip

其他有用的选项

  • -v:启用详细模式,可以显示破解过程中的进度。
  • -m:指定压缩方法(0 到 3),通常可以忽略。

完整示例

假设我们知道密码是 5 位的小写字母,可以使用如下命令:

1
fcrackzip -b -c a -l 5-5 -u -v file.zip

这会尝试所有 5 位的小写字母组合,并在找到匹配密码时停止。

例题

1、生日密码

文件的主人喜欢用生日做密码,而且还是个90后。

得出密钥(并不是flag哦),要输入密钥打开加密文件得到flag

2、银行卡密码 键盘密码

猜测只有数字密码(需要猜吗)得到密码

得到第一行为键盘密码

1
2
3
4
5
6
7
8
9
10
11
12
13
93 53 63 71 51 63 41 51 83 63 23 23 93 62 61 94 93 71 41 92 41 71 63 41 51 31 83 43 41 21 81 22 21 74 42

The encryption scheme of next stage is decided by the last letters.

T1:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ **@@@@**

T2:@@@@@@@@@@@@@@@@@@@@@@@@ **@@@@@@@**

T3:@@@@@@@@@@@@@@@@@ **@@@@@@@**

T4:@@@@@@@@ **@@@@@@ @@@**

NSSCTF{REVERSE(**@@@@@@@@**)}

exp

1
2
3
4
5
str = '93 53 63 71 51 63 41 51 83 63 23 23 93 62 61 94 93 71 41 92 41 71 63 41 51 31 83 43 41 21 81 22 21 74 42'
table = ['abc','def','ghi','jkl','mno','pqrs','tuv','wxyz']
str = str.split(' ')
for i in range(len(str)):
print(table[int(str[i][0])-2][int(str[i][1])-1],end='')

得到

ylopjogjvoccynmzypgxgpogjdvigatbash

然后用atbash解密一下,得到(要去掉atbash)

bolkqltqelxxbmnabktctkltqwert

这一个密码就是 qwert
这个是解密的 VBS 脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Function FromQwerty(str)
Dim d, s, t, i, c, r
s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
t = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To 52
d(Mid(t, i, 1)) = Mid(s, i, 1)
Next
For i = 1 To Len(str)
c = Mid(str, i, 1)
If d.Exists(c) Then
r = r & d(c)
Else
r = r & c
End If
Next
FromQwerty = r
End Function

WScript.Echo FromQwerty("bolkqltqelxxbmnabktctklt")

可以先用 txt 粘贴进去,再改名为 1.vbs,点击即可得到

xisraseacsuuxzykxreverse

这一个就是 reverse,即把这句话反过来

print(‘xisraseacsuuxzykx’[::-1])

得到

xkyzxuuscaesarsix

看 T4,它是有空格的,所以这个加密是caesar six,即偏移量为6的凯撒密码

得到restroom

最后还有一个reverse

NSSCTF{moortser}


crunch、fcrackzip
http://example.com/2024/10/19/爆破密钥1/
Author
chaye
Posted on
October 19, 2024
Licensed under