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

caocao1年前教程214

在线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 破解压缩包密码的内容。希望对您有所帮助!

相关文章

最详细记录kali破解wifi过程

最详细记录kali破解wifi过程

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

以简洁且简单的方式安装Kali虚拟机(VirtualBox / VMware W

以简洁且简单的方式安装Kali虚拟机(VirtualBox / VMware W

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 俗话说得好,"Kali玩...

apache搭建web服务器.apache搭建https

apache搭建web服务器.apache搭建https

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 摘要 如何搭建web服务...

关于万能钥匙那些事儿

关于万能钥匙那些事儿

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