在网络上下载带密码的压缩包是常见的情况,想要免费获取内容,通常需要使用密码破解软件。然而,这种做法往往会带来不好的后果。本文将介绍如何利用Python破解ZIP/RAR压缩包的密码。
破解原理
破解的原理其实很简单,就是尝试不同的密码。Python提供了两个压缩文件库:zipfile和rarfile,通过这两个库提供的extractall()方法可以指定密码进行解压缩。首先需要生成一个密码字典,然后逐个尝试密码,如果成功解压缩则表示密码正确。
实验环境
本文使用Pipenv作为虚拟环境,通过Pipenv安装rarfile库。最后,将带有密码的压缩包放入实验环境中。
编码
了解原理后,编写代码就变得非常简单了。
准备密码本
密码本包含了所有可能的密码,可以手动录入或使用程序录入。
读取压缩文件
if filename.endswith('.zip'):
fp = zipfile.ZipFile(filename)
elif filename.endswith('.rar'):
fp = rarfile.RarFile(filename)
fp.close()
print('No password')
return
# 读取密码本文件
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 test.zip
Success! ====>32312
尝试解压
首先尝试不使用密码解压缩,如果成功则表示压缩文件没有密码。
暴力破解
通过程序入口进行暴力破解。
使用
只需在命令行执行python main.py
即可使用代码。
运行结果
扩展
- 如何获取密码本?
- 如何加速破解过程?
多线程(进程)破解
利用GPU加速
通过利用GPU资源可以加速密码破解过程。CPU和GPU在计算任务上有所不同,GPU的核数远超CPU,但每个核的运算能力相对较弱。在密码破解过程中,使用GPU可以显著加速。
最快的密码恢复工具之一是Hashcat,可以基于CPU/GPU等工作。有兴趣的可以访问官网进行了解。
“`