爆破密钥

crunch介绍与使用

1、介绍

crunch是什么?

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

2、使用

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

1716614477509-552d4d9e-6a58-423b-b5f4-f395fe0e0b4d.png

命令格式:

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

1716617221789-837ade83-d7c9-48ea-96df-1d4712847746.png

1716617240055-ba818cf4-2cf8-424f-9eff-fe2892f3a0c2.png

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

read文件内容如下:

1716617261938-a8369232-d4a5-4511-8a79-861a289f3a44.png

生成的字典集结果如下:

1716617304995-4aa62323-a79f-4dad-a8bb-6623d6934746.png

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 位的小写字母组合,并在找到匹配密码时停止。

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

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

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

bkcrack命令(明文攻击)

4.2恢复内部密钥

攻击需要至少 12 个字节的已知明文。其中至少 8 个必须是连续的。连续的已知明文越大,攻击速度越快。

从 zip 档案中加载数据

拥有一个 zip 档案encrypted.zip,其中条目cipher为密文,plain.zip其中条目plain为已知明文,bkcrack 可以像这样运行:

bkcrack -C encrypted.zip -c cipher -P plain.zip -p plain

1

从文件加载数据

有了cipherfile包含密文(以加密头对应的 12 个字节开头)和plainfile已知明文的文件,bkcrack 可以像这样运行:

bkcrack -c cipherfile -p plainfile

1

抵消

如果明文对应的是密文开头以外的部分,可以指定偏移量,如果明文包含加密头的一部分,则可以为负数。

bkcrack -c cipherfile -p plainfile -o offset

1

稀疏明文

如果您知道少量连续的明文(8 到 11 个字节之间),但知道其他已知偏移量处的某些字节,则可以提供此信息以达到总共 12 个已知字节的要求。为此,请使用标志,-x后跟偏移量和十六进制字节。

bkcrack -c cipherfile -p plainfile -x 25 4b4f -x 30 21

1

解码

如果攻击成功,则可以保存与用于攻击的密文相关的解密数据:

bkcrack -c cipherfile -p plainfile -d decipheredfile

1

如果从以前的攻击中知道密钥,则可以使用 bkcrack 来解密数据:

bkcrack -c cipherfile -k 12345678 23456789 34567890 -d decipheredfile

1

解压缩

解密后的数据可能会被压缩,具体取决于创建 zip 文件时是否使用压缩。如果使用了 deflate 压缩,tools则可以使用文件夹中提供的 Python 3 脚本来解压数据。

python3 tools/inflate.py < decipheredfile > decompressedfile

1

删除密码

要通过一个步骤访问加密档案的所有条目,您可以生成一个具有相同内容但不加密的新档案。它假定每个条目最初都使用相同的密码加密。

bkcrack -C encrypted.zip -k 12345678 23456789 34567890 -D decrypted.zip

1

更改密码

您还可以使用您选择的密码生成一个新的加密档案:

bkcrack -C encrypted.zip -k 12345678 23456789 34567890 -U unlocked.zip new_password

1

您还可以通过其相应的内部表示来定义新密码。

bkcrack -C encrypted.zip -k 12345678 23456789 34567890 –change-keys unlocked.zip 581da44e 8e40167f 50c009a0

————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

                    

原文链接:https://blog.csdn.net/Aluxian_/article/details/143486274

例题

1、生日密码

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

1715053493021-aed86311-0af2-4eaf-8c25-430469dadb3d.png

1715053557954-7358c455-a98b-4fc0-8fd6-7fd63cfe0b69.png

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

2、银行卡密码 键盘密码

1722315081536-c888b8a1-0876-47be-96f5-8d796085285b.png

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

1722315252325-71248c79-a013-4a84-a67d-347611dba893.png

得到第一行为键盘密码

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,点击即可得到

1722316540944-3766bb25-5657-4eec-9f28-1e3128615dff.png

xisraseacsuuxzykxreverse

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

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

1722316590347-232b97e5-3ce1-499d-bcd9-b4c5483c744c.png

得到

xkyzxuuscaesarsix

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

1722316697736-40093dcc-c4b4-44d6-8cfb-db2ed4c082e8.png

得到restroom

最后还有一个reverse

1722316748891-3f830f80-4d5d-491a-84b9-221f62e1f456.png

NSSCTF{moortser}

更新: 2025-04-19 14:19:43
原文: https://www.yuque.com/chaye-apqbl/vsc85q/sl8yh85l5tqrxiyg


http://example.com/2026/01/19/MISC/zip解密/爆破密钥/
Author
chaye
Posted on
January 19, 2026
Licensed under