如何使用Python暴力破解压缩包密码?-Python安全攻防社区-安全圈子-FancyPig's blog

如何使用Python暴力破解压缩包密码?

前言

上一篇讲述了如何用python生成社工字典,这一篇就是字典的利用——暴力破解

生成社工字典只是信息利用的第一步,还需要利用字典进行密码爆破

本篇就讲述一下如何暴力破解zip加密压缩包~~

视频效果

点击查看视频演示

模块介绍

首先第一步肯定是导入模块,既然要破解压缩包密码,肯定要打开

python里有一个专门为zip压缩包准备的模块——zipfile

zipfile介绍

zipfile是python里用来做zip格式编码的压缩和解压缩的模块,zipfile 模块提供了创建、读取、写入、添加及列出 ZIP 文件的工具

支持解密 ZIP 归档中的加密文件。

本篇所用方法

1.class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])

参数file表示文件的路径或类文件对象(file-like object); 参数mode指示打开zip文件的模式,默认值为’r’,表示读已经存在的zip文件,也可以为’w’或’a’,w’表示新建一个zip文档或覆盖一个已经存在的zip文档,’a’表示将数据附加到一个现存的zip文档中; 参数compression表示在写zip文档时使用的压缩方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED。如果要操作的zip文件大小超过2G,应该将allowZip64设置为True。

2.zipFile.extract(member[, path[, pwd]])

将zip文档内的指定文件解压到当前目录。参数member指定要解压的文件名称或对应的ZipInfo对象;参数path指定了解析文件保存的文件夹;参数pwd指定要解压的密码。

还有其它的一些方法和属性,想深入了解可以访问:

https://blog.csdn.net/magicboom/article/details/90046901

了解使用方法之后,我们就需要用到上一篇文章生成的社工字典了,不知道的可以阅读上一篇文章哦~~

image-20211208201026398.png

加密压缩包如下图:

image-20211208200631675.png

接下来就是暴力破解的代码哦~~~

import zipfile
​
#创建passwd列表存入password.txt每一个密码
passwd = []
​
#打开password.txt进行读取,编码'utf-8'
passwordFile = open('password.txt', 'r', encoding='utf-8')
#把password.txt每一项存入pwdlines中
pwdlines=passwordFile.readlines()
​
#加载压缩文件,创建ZipFile对象
zfile=zipfile.ZipFile('./test.zip')   #填入压缩文件名,这里是test.zip
​
#遍历pwdlines列表去除'\n',并存入passwd列表中
for line in pwdlines:
   passwd.append(line.strip())
   pass
​
#定义变量i为1,循环初始值
i = 1
​
#遍历,把passwd列表中的每一项取出进行密码爆破~~
for pwd in passwd:
   try:
       #如果爆破成功,返回信息并停止
       zfile.extractall('./', pwd=pwd.encode())
       print('破解成功!密码为:{}'.format(pwd))
       break
   except:
       #如果单次爆破失败,则一直尝试,直到破解成功或字典耗尽结束
       print('正在尝试第{}次破解'.format(i))
       i+=1
       pass

以上代码注释也很明确,尽量让更多的初学者能看懂

当然,这只是对于zip压缩包进行的暴力破解,如果想破解rar压缩包,导入rarfile模块即可,原理都一样~~

需要注意的是,暴力破解不一定100%能成功,这要看你收集的信息量对方设置密码的复杂度

  • 如何破解账户密码或压缩文件密码 https://www.iculture.cc/knowledge/pig=279
  • 计算方式:若档案为ZIP格式并使用英特尔 i7 处理器来破解,且其密码使用数字和小写字母 … (处理速度:150,000,000/秒)
    • 1~7个字符的密码:不到10分钟
    • 8个字符:~5小时
    • 9个字符:~8天
    • 10个字符:~280天
    • 11个字符:~27年
    • 12个字符:~1001年
    • 13个字符:~36060年

不要过于依赖暴力破解,但有时候找不到突破口,暴力破解或许能有奇效

预告

下一篇就准备对wifi下手,教你如何用python暴力破解wifi密码(手动滑稽~~)

请登录后发表评论