python怎么破解压缩包密码

互联网 19-7-10

基本原理在于Python标准库zipfile和扩展库unrar提供的解压缩方法extractall()可以指定密码,这样的话首先(手动或用程序)生成一个字典,然后依次尝试其中的密码,如果能够正常解压缩则表示密码正确。

import os import sys #zipfile是Python标准库 import zipfile #尝试导入扩展库unrar,如果没有就临时安装 try:     from unrar import rarfile except:     path = '"'+os.path.dirname(sys.executable)+'\\scripts\\pip" install --upgrade pip'     os.system(path)     path = '"'+os.path.dirname(sys.executable)+'\\scripts\\pip" install unrar'     os.system(path)     from unrar import rarfile  def decryptRarZipFile(filename):     #根据文件扩展名,使用不同的库     if filename.endswith('.zip'):         fp = zipfile.ZipFile(filename)     elif filename.endswith('.rar'):         fp = rarfile.RarFile(filename)     #解压缩的目标文件夹     desPath = filename[:-4]     if not os.path.exists(desPath):         os.mkdir(desPath)     #先尝试不用密码解压缩,如果成功则表示压缩文件没有密码     try:         fp.extractall(desPath)         fp.close()         print('No password')         return     #使用密码字典进行暴力破解     except:         try:             fpPwd = open('pwddict.txt')         except:             print('No dict file pwddict.txt in current directory.')             return         for pwd in fpPwd:             pwd = pwd.rstrip()             try:                 if filename.endswith('.zip'):                     for file in fp.namelist():                         #对zip文件需要重新编码再解码,避免中文乱码                         fp.extract(file, path=desPath, pwd=pwd.encode())                         os.rename(desPath+'\\'+file, desPath+'\\'+file.encode('cp437').decode('gbk'))                     print('Success! ====>'+pwd)                     fp.close()                     break                 elif filename.endswith('.rar'):                     fp.extractall(path=desPath, pwd=pwd)                     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相关技术文章,请访问Python教程栏目进行学习!

以上就是python怎么破解压缩包密码的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:二进制数1001001转换成十进制数等于多少

相关资讯