利用 Python 破解 ZIP 或 RAR 文件密码

caocao2年前教程314

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi

各位好 又见面了 我是曹操 今天给大家带来一篇新的教程

希望各位细心学习 低调用网

Python 破解压缩包密码

我们经常从网络上下载带有密码的压缩包,如果想要获取其中的内容,通常需要支付费用给提供商。然而,有一种常见的方法是使用百度搜索压缩包密码破解软件,但是使用这种方法的后果是不堪设想的。本文将介绍如何使用 Python 来破解 ZIP/RAR 压缩包的密码。

破解原理

其实破解密码的原理非常简单,可以用一句话概括为「大力出奇迹」。Python 提供了两个压缩文件库:zipfilerarfile,这两个库提供了解压缩方法 extractall(),可以指定密码进行解压缩。因此,我们首先需要生成一个密码字典(可以手动创建或使用程序生成),然后逐个尝试其中的密码,如果能够成功解压缩,就表示密码正确。

实验环境

本文使用 Pipenv 创建虚拟环境,关于 Pipenv 的详细介绍可以参考我的文章《Python 管理哪家强?》。需要安装的库有:

  • zipfile:Python 标准库,无需额外安装
  • rarfile:Python 第三方库,需要使用 pipenv install rarfile 安装

最后,将一个带有密码的压缩包放入实验环境中。

编码

了解了原理之后,编写代码就变得非常简单了。

准备密码本

密码本其实就是一个包含了所有可能密码的文件,可以手动录入,也可以使用程序生成。文末还会有一个介绍。

读取压缩文件

根据文件扩展名,使用不同的库进行处理。

if filename.endswith('.zip'):
    fp = zipfile.ZipFile(filename)
elif filename.endswith('.rar'):
    fp = rarfile.RarFile(filename)

尝试解压缩

首先尝试不使用密码进行解压缩,如果成功则表示压缩文件没有密码。

fp.extractall(desPath)
fp.close()
print('No password')

暴力破解

try:
    # 读取密码本文件
    fpPwd = open('pwd.txt')
except:
    print('No dict file pwd.txt in current directory.')
    return

for pwd in fpPwd:
    pwd = pwd.rstrip()
    try:
        fp.extractall(path=desPath, pwd=pwd.encode())
        print('Success! ====> ' + pwd)
        fp.close()
        break
    except:
        pass

fpPwd.close()

程序入口

if __name__ == '__main__':
    filename = sys.argv[1]
    if os.path.isfile(filename) and filename.endswith(('.zip', '.rar')):
        decryptRarZipFile(filename)
    else:
        print('Must be Rar or Zip file')

使用

如果想要使用上述代码,只需在命令行执行 python main.py,并指定要解密的压缩包文件。例如:python main.py test.zip

运行结果:

$ python main.py test.zip
Success! ====> 323126

扩展

密码本如何获取?

注意到这里,细心的读者可能会发现,最关键的不是代码,而是「密码本」。理论上,只要密码本中的密码足够多,就一定能够获取到压缩包的密码,这也被称为「撞库」。

在搜集足够多的密码时,已经有人整理好了一份密码本,我在我的仓库中 fork 了一份,有兴趣的可以点击爆破字典

如何加速破解过程?

解决了密码本的问题后,深入思考的读者可能会有新的疑问,即如何加速破解过程。下面给出两个思路:

  1. 多线程(进程)破解:当密码本非常庞大且密码数量众多时,可以采用多线程(进程)的方式读取密码。一个进程读取一个密码本,一个线程分段读取密码。然而,在 Python 中不建议使用多线程,因为 Python 中的线程并不是真正的并行执行,有兴趣的读者可以阅读相关资料了解更多。

  2. 利用 GPU 加速:以上的代码都是在 CPU 上运行的,即使开启多线程(进程),也只是利用到了 CPU 的资源。然而,为了加速破解过程,我们可以利用闲置的 GPU 资源。CPU 虽然有多核,但总数有限,每个核的运算能力非常强大。而 GPU 的核数远超 CPU,但每个核的运算能力相对较弱。因此,在破解密码的过程中,完全可以利用 GPU 来加速。实际上,已经有一些工具可以实现这一点,其中最著名的就是 Hashcat,它被称为世界上最快的密码恢复工具,可以基于 CPU/GPU 进行工作。有兴趣的读者可以访问 Hashcat 的官网了解更多信息。

以上是关于使用 Python 破解压缩包密码的内容。希望对您有所帮助!

相关文章

hbase的密码在哪看

hbase的密码在哪看

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 HBase的密码在哪看...

让 wsl2 中的 kali 虚拟机使用无线网卡

让 wsl2 中的 kali 虚拟机使用无线网卡

回答1:要在WSL2中使用USB无线网卡,首先需要确保已经安装了适当的驱动程序,并将其与主机共享。以下是一些步骤: 首先,在主机操作系统中安装USB无线网卡的驱动程序。这通常是通过制造商提供的光盘或...

移植Linux:如何制作rootfs?详细教程

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 http://sourc...

kali linux 安装中文输入法

kali linux 安装中文输入法

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 回答1:在 Kali L...