用Python实现zip密码破解实例

目录
  • 原理
  • python的zipfile库
  • 暴破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密码破解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python 破解加密zip文件的密码

    今天的文章来自 盏茶作酒 同学.他在老电脑中发现了一个加密的 zip 文件,于是用 Python 破解了文件密码.在破解的过程中出现了内存爆炸的问题,通过阅读 Python 源代码找到了解决方案. 下面就来给大家分享一下他的操作. 之前在家里的老电脑中,发现一个加密zip压缩包,由于时隔太久忘记密码了,依稀记得密码是6位字母加数字,网上下载了很多破解密码的软件都没有效果,于是想到自己用Python写一个暴力破解密码的脚本. Python 有一个内置模块 zipfile 可以解压 zip 压缩包.

  • python简单利用字典破解zip文件口令

    前几天在一本书上看到一篇可以利用字典破解zip文件密码的文章,觉得比较有意思于是研究了一番,在这里分享一下 原理 主要是利用python里自带的zipfile库中的extractall函数来实现的,简单导入zipfile之后,实例化一个ZipFile类.利用extractall()来解压这个文件,并在参数pwd上填入正确密码 这时我们发现执行脚本之后,fate.zip会被正确解压,而填入错误密码则会入下图一样报错 因此 我们可以利用因口令不正确而抛出的异常来测试字典文件中是否有zip文件的密码,

  • 详解python破解zip文件密码的方法

    1.单线程破解纯数字密码 注意: 不包括数字0开头的密码 import zipfile,time,sys start_time = time.time() def extract(): zfile = zipfile.ZipFile('IdonKnow.zip')#读取压缩包,如果用必要可以加上'r' for num in range(1,99999,1): try: pwd = str(num) zfile.extractall(path='.',pwd=pwd.encode('utf-8')

  • 如何使用Python破解ZIP或RAR压缩文件密码

    这篇文章主要介绍了如何使用Python破解ZIP或RAR压缩文件密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 我们经常会从网络上下载一些带密码的压缩包,想要获取里面的内容,往往就要给提供商支付一些费用.想要白嫖其中的内容,常见的做法是百度搜索一些压缩包密码破解软件,但后果相信体验过的人都知道.本文将会利用 Python 破解压缩包的密码,这里以 ZIP/RAR 为例. 破解原理 其实原理很简单,一句话概括就是「大力出奇迹」,Python

  • 手把手教你怎么用Python实现zip文件密码的破解

    Python有一个内置模块zipfile可以干这个事情,测试一波,一个测试文件,设置解压密码为123. import zipfile # 创建文件句柄 file = zipfile.ZipFile("测试.zip", 'r') # 提取压缩文件中的内容,注意密码必须是bytes格式,path表示提取到哪 file.extractall(path='.', pwd='123'.encode('utf-8')) 运行效果如下图所示,提取成功. 好了开始破解老文件的密码,为了提高速度我加了多

  • 教你利用Python破解ZIP或RAR文件密码

    一.破解原理 其实原理很简单,一句话概括就是「大力出奇迹」,Python 有两个压缩文件库:zipfile 和 rarfile,这两个库提供的解压缩方法 extractall()可以指定密码,这样的话首先生成一个密码字典(手动或用程序),然后依次尝试其中的密码,如果能够正常解压缩表示密码正确. 二.实验环境 本文采取的虚拟环境为 Pipenv. 库 zipfile:Python 标准库,使用时直接导入即可 rarfile:Python 第三方库 利用 Pipenv 安装 rarfile pipe

  • Python脚本破解压缩文件口令实例教程(zipfile)

    zipfile模块是python中一个处理压缩文件的模块,解决了不少我们平常需要处理压缩文件的需求 ,本文主要谈谈zipfile几个常用的用法. 环境:Windows python版本2.7.15 Python中操作zip压缩文件的模块是 zipfile . 相关文章:Python中zipfile压缩文件模块的使用 我们破解压缩文件的口令也是用的暴力破解方法.我们提前准备好密码字典用来爆破,如果密码字典中存在密码,则会打印出该密码,否则提示密码字典中无密码. main()函数用来打开密码字典 k

  • Python实现暴力破解有密码的zip文件的方法

    背景 今天朋友给我发了一个某游戏的兑换码,压缩文件发过来的.结果被加密了.wc?还说叫爸爸就给我密码?男人是这么容易像恶势力低头的?直接给你爆了好吧,小兔崽子. 一.思路 爆密码的思路其实都大同小异:无非就是字典爆破,就看你是有现成密码字典,还是自己生成密码字典,然后进行循环输入密码,直到输入正确位置.现在很多都有防爆破限制,根本无法进行暴力破解,但是似乎zip这种大家都是用比较简单的密码而且没有什么限制. 因此 实现思路就是 生成字典->输入密码->成功解压 二.实现过程 1.生成字典 生成

  • 用Python实现zip密码破解实例

    目录 原理 python的zipfile库 暴破zip文件口令 利用线程提高性能 用户自定义参数 脚本完整代码 总结 原理 原理很简单,就是循环遍历字典中的每一个密码,尝试破解.除此之外,此脚本用线程提高性能,用脚本选项提高了灵活性 最后脚本运行结果如下,完整代码在最下面 python的zipfile库 编写Zip文件口令破解脚本前,我们要先了解一下python的zipfile库.如果没有安装库,需要先用pip安装库 在终端中打开python,查看zipfile库的帮助信息 python hel

  • python连接mongodb密码认证实例

    如下所示: from pymongo import MongoClient #建立和数据库系统的连接,指定host及port参数 client = MongoClient('localhost', 27017) #连接mydb数据库,账号密码认证 db = client.mydb db.authenticate("account", "password") #连接表 collection = db.myset #查看全部表名称 db.collection_names

  • Python中zip()函数用法实例教程

    本文实例讲述了Python中zip()函数的定义及用法,相信对于Python初学者有一定的借鉴价值.详情如下: 一.定义: zip([iterable, ...]) zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表).若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同.利用*号操作符,可以将list unzip(解压). 二.用法示例: 读者看看下面的例子,

  • python中zip()方法应用实例分析

    本文实例分析了python中zip()方法的应用.分享给大家供大家参考,具体如下: 假设有一个集合set, 需要对set中的每个元素指定一个唯一的id,从而组建成一个dict结构. 这个场景可以演化成,两个list/set或者一个set与一个list如何创建成为一个字典,如: A = ["a", "b", "c", "d"] B = [1, 2, 3, 4] ? ==> C = {"a":1, &qu

  • Python zip()函数用法实例分析

    本文实例讲述了Python zip()函数用法.分享给大家供大家参考,具体如下: 这里介绍python中zip()函数的使用: >>> help(zip) Help on built-in function zip in module __builtin__: zip(...) zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)] Return a list of tuples, where each tuple c

  • 密码破解全教程

    在日常的计算机操作中,我们随时随地都离不开密码--开机要使用CMOS密码.进Windows  98要使用用户密码.编辑Word文档要设置文档密码--,所有这些都为用户的数据安全提供了必要的安全保障!不过随着密码应用范围的增加,遗忘密码的情况也在与日俱增(谁也无法保证自己绝对不会忘记密码)!在忘记密码之后如何破解这些密码,尽可能减少损失就成为广大用户所关注的一个话题.为方便用户的使用,现将常用计算机密码的破解方法向大家作一简要介绍: 一.开机密码  根据用户设置的不同,开机密码一般分为两种不同情况

  • Python使用zip合并相邻列表项的方法示例

    本文实例讲述了Python使用zip合并相邻列表项的方法.分享给大家供大家参考,具体如下: 1>使用zip()函数和iter()函数,来合并相邻的列表项 >>> x [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> zip(*[iter(x)]*2) [(1, 2), (3, 4), (5, 6), (7, 8)] >>> zip(*[iter(x)]*3) [(1, 2, 3), (4, 5, 6), (7, 8, 9)] >

  • python读取有密码的zip压缩文件实例

    今天试了一下用zipfile模块读取有密码的zip压缩文件. 今天用winrar 5.6将一个名字为1.xlsx的excel文件打包成1.zip压缩包.采用默认的压缩算法(没有勾选传统加密锁法): import zipfile import pandas as pd zf=zipfile.ZipFile("F:/Desktop/1.zip") print(zf.namelist()) f=zf.open('1.xlsx',mode='r',pwd='123456'.encode('ut

  • Python实现在线暴力破解邮箱账号密码功能示例【测试可用】

    本文实例讲述了Python实现在线暴力破解邮箱账号密码功能.分享给大家供大家参考,具体如下: dic 字典格式如下(mail.txt) : username@gmail.com:password username@gmail.com:password username@gmail.com:password 以此类推,切记保存成utf-8编码格式. 放置在当前脚本目录,也可自己定义修改. 支持ssl https /imap协议. # version 3.4.0 # coding='UTF-8' #

随机推荐