最详细Python批量字典暴力破解zip密码

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 握手包跑包

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

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

#生成从0000到9999的密码表
f = open('passdict4.txt','w')
for id in range(10000):
  password = str(id).zfill(4)+'n'
  f.write(password)
f.close()

为了提高文章的SEO效果,我将重新构建文章内容,保持原有信息的基础上,确保相似度低于30%。以下是经过修改的文章内容:

最近,我在网上下载了一些项目案例,但不幸的是,它们都是加密的压缩包。为了解决这个问题,我开始寻找压缩包破解工具。然而,由于工具破解速度太慢,我放弃了,决定寻找其他方法。

幸运的是,我发现这些压缩包都是使用4位数字密码加密的。这让我想到可以使用密码字典进行破解。我立即开始尝试,结果证实了我的猜想,破解速度大大加快。既然有更快的方法,为什么不研究一种自动化的解决方案呢?

我发现Python中有一个名为ZipFile的库可以解压zip文件。通过阅读相关文档,我了解到可以使用ZipFile.extractall(path=None, members=None, pwd=None)函数将指定的文件解压到当前目录。只需循环读取文件夹下的zip文件,然后逐个解压即可。需要注意的是,Python 3中存在一个中文文件名乱码的问题,但只需将ZipFile.py中的“cp437”改为“gbk”即可永久解决。

在这个基础上,我又加入了循环密码字典的功能。由于解压时密码错误会导致异常,我使用try-except语句进行处理。然而,事情并没有像我想象的那么简单。虽然大多数情况下都可以成功破解,但总有一些情况下破解失败,让我束手无策。我在各个网站上寻找解决方法,最初以为是extractall方法调用错误,但错误提示却是密码错误,这让我感到困惑。

直到偶然间,我在一篇文章中得知,默认情况下,WinRAR在CTR模式下使用AES-256加密ZIP文件,而Python标准库中的zipfile模块只支持CRC32加密的zip文件。这意味着无法使用zipfile库解压使用AES-256加密的zip文件。我已经花了很多心思,如果在这里放弃,那就太可惜了。既然加密方式不同,那么解压软件是如何直接解压的呢?

我产生了一个构想,如果能够从代码中调用解压软件,那就解决了问题。我迅速使用绝技,成功找到了多款解压软件如7z等,它们都有相关的命令行功能。通过调用第三方软件的命令行,配置环境变量,我验证了这个方法的可行性,配置成功。

尽管解决了加密方式的问题,但人的贪欲是无止境的。重复调用命令行让我感到不爽。幸运的是,在查找加密方式的过程中,我发现Python有一个名为pyzipper的库,可以很好地兼容并替代zipfile,可以读写AES加密的zip文件。既然走到了这一步,就没有退路可言。只需安装pyzipper(pip install pyzipper),并解决中文名乱码问题,这个方法堪称完美。

在文章的结尾,我提供了一些参考链接,包括补丁破解工具、Python批量解压zip文件、Python破解压缩包密码等相关内容。

# zipfile打开zip文件
z = zipfile.ZipFile(f'{file_path}', 'r'
# path为解压路径,解包后位于该路径下
z.extractall(path=f"{root})
z.close()
# 获取字典中的内容
passFile = open(r"D:pythonpassdict4.txt")
  # 循环获得单个密码
 for line in passFile.readlines():
    # 去换行
    password = line.strip('n')
      try:
         zip_file.extractall(path=f"{root}", pwd=password.encode("utf-8"))
		 print(password)
		 # 密码对了就不继续下去了
		 break
	except:
		 # 什么都不做
		 pass	 
 zip_file.close()  # 关闭文件,必须有,释放内存
passFile = open(r"D:pythonpassdict4.txt")
   for line in passFile.readlines():
      password = line.strip('n')
      # t 测试
      command='7z -p'+password+' t '+file_path
      child=subprocess.call(command)
      if(child==0):
         print(password)
         break
f1 = open('D:pythonpassdict4.txt','r')
with pyzipper.AESZipFile(file_path,'r') as f:
   for i in f1:
       i = i.rstrip('n')
       f.pwd = str.encode(i)
       try:
           f.extractall(path=f"{root}")
           print(file_path+"t密码是:"+i)
           break
       except Exception:
           pass
f.close()
f1.close()

赞(0)