用Python实现zip密码破解实例

 更新时间:2022年01月19日 15:05:57   作者:9rit  
大家好,本篇文章主要讲的是用Python实现zip密码破解实例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下

原理

原理很简单,就是循环遍历字典中的每一个密码,尝试破解。除此之外,此脚本用线程提高性能,用脚本选项提高了灵活性

最后脚本运行结果如下,完整代码在最下面

在这里插入图片描述

python的zipfile库

编写Zip文件口令破解脚本前,我们要先了解一下python的zipfile库。
如果没有安装库,需要先用pip安装库

在终端中打开python,查看zipfile库的帮助信息

python
help('zipfile')

可以看到如下信息:

在这里插入图片描述

这里只展示了部分,还有很多其他说明,大家可以自己看看
我们重点看一下ZipFile类中的extractall()方法,这个方法对我们编写破解有口令保护的zip文件脚本很有帮助。

在这里插入图片描述

其中pwd参数是zip文件的保护口令

我们编写一个脚本了解一下zipfile库的使用方法
在python编辑器上创建一个名为 zip_crack.py 的文件,我用的是pycharm,大家也可以用其他的编辑器
先导入zipfile库,然后用加密后的zip文件实例化一个ZipFile类

若没有加密的zip文件,可以在kali下用zip命令加密zip文件,具体如下

在这里插入图片描述

随便写入一些内容后:wq保存

在这里插入图片描述

然后用zip加密压缩此文件

在这里插入图片描述

我们用此加密的zip文件实例化ZipFile类

zFile = zipfile.ZipFile("grit.zip")

然后使用extractall()方法 解压这个zip文件,并在pwd参数上填入加密此zip的口令

zFile.extractall(pwd=‘12345')

在这里插入图片描述

接下来,我们查看当前目录情况并运行此脚本

在这里插入图片描述

可以看到,成功解压了zip文件
为了更好的理解,我们用错误的密码尝试一下

在这里插入图片描述

运行此脚本,看看结果

在这里插入图片描述

可以看到,无法解压,提示错误的密码

暴破zip文件口令

下面,我们尝试用字典破解有口令保护的zip文件

大家如果有自己的字典,可以用自己的,如果没有,可以创建一个简单的字典

在这里插入图片描述

写一个python脚本尝试字典中的每一个口令
实例化一个zipfile类后,打开字典文件

zFile = zipfile.ZipFile("grit.zip")
passFile = open("dict.txt")

遍历测试字典中的每一个单词,若口令不正确,则抛出异常,若口令正确,则输出口令

for line in passFile.readlines():
    password = line.strip('\n')
    try:
        zFile.extractall(pwd=password)
        print("[+] Found password " +password+ '\n')
    except Exception,e:
        pass

在这里插入图片描述

我们执行一下这个脚本,看看效果

在这里插入图片描述

成功破解了zip口令
为了使代码能重复使用,我们模块化此脚本
extractFile(zFile,password)函数用密码参数来尝试打开加密的zip文件

def extractFile(zFile, password):
    try:
        zFile.extractall(pwd=password)
        print("[+] Found password " + password + '\n')
    except:
        pass

main()函数遍历字典,尝试密码

def main():
    zFile = zipfile.ZipFile("grit.zip")
    passFile = open("dict.txt")
    for line in passFile.readlines():
        password = line.strip('\n')
        extractFile(zFile, password)

在这里插入图片描述

利用线程提高性能

这样能遍历每一个单词,执行完一个才能执行下一个,如果字典文件非常大,那需要很长时间才能读完字典。为了提高性能,我们可以用线程同时尝试多个口令,这就需要用到python中线程模块了

我们改进一下我们的代码
首先导入包

from threading import Thread

然后再main()函数中用线程执行extractall()函数

在这里插入图片描述

用户自定义参数

用到线程,就提高了性能。但我们对不同的zip破解时,或想用其他字典时,我们还要改代码,来修改zip文件和字典文件。
为了提高脚本的灵活性,我们可以用python中的optparse库来设置参数选项
同样,需要导入模块

import optparse

若没有,需要自己安装,这里就不演示了

在main()函数中写入参数配置代码

parser = optparse.OptionParser("usage%prog" + "-f <zipfile> -d <dictionary>")
    parser.add_option('-f', dest='zname', type='string', help='specify zip file')
    parser.add_option('-d', dest='dname', type='string', help='specify dictionary file')
    (options, args) = parser.parse_args()
    if (options.zname == None) | (options.dname == None):
        print parser.usage
        exit(0)
    else:
        zname = options.zname
        dname = options.dname

并将zFile和 passFile 参数改为对应的变量

在这里插入图片描述

最后,为了能更好的理解代码运行,可以加入一些输出代码输出一些提示信息

脚本完整代码

下面是脚本的完整代码

import zipfile
import optparse
from threading import Thread

def extractFile(zFile, password):
    try:
        zFile.extractall(pwd=password)
        print("[+] Found password " +password+ '\n')
    except:
        print("[-] " + password + "  Failed")
def main():
    parser = optparse.OptionParser("usage%prog" + "-f <zipfile> -d <dictionary>")
    parser.add_option('-f', dest='zname', type='string', help='specify zip file')
    parser.add_option('-d', dest='dname', type='string', help='specify dictionary file')
    (options, args) = parser.parse_args()
    if (options.zname == None) | (options.dname == None):
        print parser.usage
        exit(0)
    else:
        zname = options.zname
        dname = options.dname
    zFile = zipfile.ZipFile(zname)
    passFile = open(dname)
    for line in passFile.readlines():
        password = line.strip('\n')
        print("[*] Trying password: "+ password)
        t = Thread(target=extractFile, args=(zFile, password))
        t.start()

if __name__ == '__main__':
    main()

我们在终端运行脚本,最后成功破解了口令

在这里插入图片描述

可以看到,找到了密码
这里我只是举了个简单的例子,用的字典很小。在实际暴破zip口令时,能否成功破解往往取决于字典的好坏,可以在字典中写入常用密码,或用社会工程学的方法获取一些有用的信息,添加到字典中,有助于破解密码。

总结

到此这篇关于用Python实现zip密码破解实例的文章就介绍到这了,更多相关Python zip密码破解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用python实现下载我们想听的歌曲,速度超快

    使用python实现下载我们想听的歌曲,速度超快

    这篇文章主要介绍了使用python实现下载我们想听的歌曲,速度超快,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 使用Python实现文字转语音并播放功能

    使用Python实现文字转语音并播放功能

    这篇文章主要给大家介绍了使用Python实现文字转语音并播放功能,文中通过代码示例给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • python PyAutoGUI实现自动化鼠标键盘等常用操作

    python PyAutoGUI实现自动化鼠标键盘等常用操作

    这篇文章主要介绍了python PyAutoGUI实现自动化鼠标键盘等常用操作使用实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Python使用random和tertools模块解一些经典概率问题

    Python使用random和tertools模块解一些经典概率问题

    这篇文章主要介绍了Python使用random和tertools模块解一些经典概率问题,本文讲解了使用random和tertools模块解羊车门问题、扑克牌问题、生日悖论等经典概率问题,需要的朋友可以参考下
    2015-01-01
  • Python缺少库IPython的解决办法步骤

    Python缺少库IPython的解决办法步骤

    在使用Python编写程序过程中,有时我们会遇到一些错误信息,提示我们当前环境缺少某些依赖库文件,这篇文章主要给大家介绍了关于Python缺少库IPython的解决办法步骤,需要的朋友可以参考下
    2023-12-12
  • python爬虫增加访问量的方法

    python爬虫增加访问量的方法

    这篇文章主要介绍了python爬虫增加访问量的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • python 动态获取当前运行的类名和函数名的方法

    python 动态获取当前运行的类名和函数名的方法

    这篇文章主要介绍了python 动态获取当前运行的类名和函数名的方法,分别介绍使用内置方法、sys模块、修饰器、inspect模块等方法,需要的朋友可以参考下
    2014-04-04
  • Python线性回归实战分析

    Python线性回归实战分析

    这篇文章主要介绍了Python线性回归实战分析以及代码讲解,对此有兴趣的朋友学习下吧。
    2018-02-02
  • Python之父谈Python的未来形式

    Python之父谈Python的未来形式

    这篇文章主要介绍了Python之父谈Python的未来,需要的朋友可以参考下
    2016-07-07
  • Python内置函数及功能简介汇总

    Python内置函数及功能简介汇总

    这篇文章主要介绍了Python内置函数及功能简介汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10

最新评论