Python: Rar暴力破解工具

4 投票
5 回答
9668 浏览
提问于 2025-04-15 18:33

我正在尝试用暴力破解的方法来破解一个被密码保护的RAR压缩文件,密码是3个字符:

import os
Alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for a in range(0,26):
 for b in range(0,26):
  for c in range(0,26):
   Brute = Alphabets[a] + Alphabets[b] + Alphabets[c]
   os.popen4("Rar.exe x -p" + Brute + " Protected.rar")
#   raw_input()
raw_input("Done !")

这段代码运行得不错,但有一个问题:速度太慢了!!

我觉得慢的原因是因为使用了“popen4”这个方法来多次打开文件。因为我试着把生成的密码存到一个文本文件里,结果程序在5秒钟内就完成了。

有没有什么办法可以提高速度呢?

5 个回答

4

生成密码其实很简单,所以只需要5秒钟就能创建出26^3 = 17576个密码。最耗时间的部分是打开和尝试解密这个压缩文件,而这部分你是无法控制的。

要加快这个过程其实没什么办法——在前几次尝试后,rar程序和输入文件会被缓存到内存中。你可以选择让它在晚上或者周末运行,随便它去吧。

6

你可以考虑使用一些标准库的模块:

>>> import string
>>> import itertools
>>> from subprocess import Popen, PIPE
>>> for i in itertools.product(string.ascii_uppercase, repeat=3):
    pr = Popen(['rar.exe', 'x', '-p', ''.join(i), 'protected.rar'], stdin=PIPE, stdout=PIPE)
    pr.communicate()

这样做可能不一定会提高性能,但会让你的代码看起来更整洁。

9

你可以使用(或者学习一下)rarcrack。这个工具是用C语言写的,在Linux上可以顺利编译(在Windows上需要做很多修改)。

一般来说,每次测试一个密码都打开一个新进程是非常耗费资源的。你应该尝试自己打开压缩文件,然后再用所有的密码进行测试。无论如何,你需要检查rar.exe的返回值,以确定解压是否成功。

为了获得最佳性能,你应该用C语言(或类似的语言)来编写程序。有一个叫“libunrar”的Linux包,可能会对你打开RAR文件有帮助。

撰写回答