Python 暴力破解zip文件密码(相对简单的密码)

密码的使用范围很广,首先,我们要明确密码的作用,其次要明白密码的类型。

密码的作用是进行权限的限制,判断用户的合法性,(不包括合理性?)既然名字都叫密码,密的意思是秘密的意思,这应该毫无疑义,但忘记密码的人间惨剧时有发生,我想,密码验证是合法的,但如果因为各种原因比如遗忘密码,把主人挡在了门外,这就很尴尬了。通常,这样的情况下是没有什么好的处理方式,暴力破门基本是唯一选项(说个题外话,比如QQ密码等等,也会有遗忘的情况,但密码不是唯一验证用户合法性的方式,可以通过绑定的唯一手机,邮箱等找回密码,或者痛苦的申述?)。文件被加密了,一般是没有什么乱七八糟的找回服务,申诉服务,只有两个选项,一个是毁灭这个文件(眼不见心不烦),一个是暴力破解。

那么,在暴力破解前,我们应该知道密码都有什么样的类型?在明文密码中,通常分为 强密码,弱密码这两类,强密码通常指密码位数大于8,密码中使用了特殊字符以及数字和大小写字母的组合而成的密码,并至少有一个特殊字符,密码中不包含与用户相关的信息,如账号名称,生日,等等相关信息。弱密码通常指单一的类型的密码,只由数字 或者大写字母,小写字母,特殊符号这四类中的一类单纯的组成,密码长度小于8位。并与用户的信息相关联。密文密码不在本文讨论中,比较复杂,因此有密码学这么一门学科。

本文中的暴力破解密码指的是暴力弱密码,即使破解弱密码,也需要电脑的配置比较高,时间也可能很长(有的密码破解可以持续几个月甚至以年单位。当然,这样的情况是变态复杂的密文密码),既然是暴力,自然需要的力量要很大哦,硬盘,cpu,内存越高越好。(小孩子踹铁门可能n下,那换成大人来,可能很快就踹开了)。暴力破解通常需要一个包含目标密码的字典,也就是说密码是大概率存在字典内的某一个值,字典是什么?好比,拿钥匙开门,首先,你得有一大串钥匙,然后,无脑的暴力的 挨个试着开门,直到打开门,在打开门前,很大的一串钥匙里应该是有一把能开门的钥匙,这个钥匙串就是字典喽,因此,无重复的钥匙串越大越好,也就是说精度要高,不要重复太多,毕竟拿钥匙开门需要时间的。如果这个钥匙串里一定有开门的钥匙,那么,无脑的暴力用钥匙挨个试着开门总会成功的、以上就是暴力破解密码的大体原理、

  • 本文介绍一个暴力破解纯数字只有五位数字组成的密码,该密码应用于zip压缩包。
  • 暴力破解首先要解决钥匙串的问题,也就是字典,其次,有字典后,不停的使用字典内的值挨个试验密码是否能正确打开zip压缩包,直到某个密码可以打文件,把该密码打印出来,并统计暴力破解的时间。

下面开始第一步,生成字典文件。

dict_1.py

import random
import itertools
passwd_dicts = list(itertools.permutations(['0','1','2','3','4','5','6','7','8','9',],5))
#5代表的是元组的长度,在这设为5. 生成一个0到9中的任意五位数字的元组集合。
for k in passwd_dicts:passwd = ''.join(list(k))with open('pass.txt','a+') as f:f.write('\n'+passwd)#该文件名为dict_1.py,运行后,会在该文件所在目录下生成一个名字为pass.txt的文件。
#itertools,迭代器工具集,或者迭代器生成工具。Python操作迭代器的模块,用来生成各种迭代器。
#permutations(iterable,r=None)返回的是可迭代元素中的一个排列组合,返回的是元组,并且是按顺序返回
#的,且不包含重复的结果

pojie.py

import zipfile
import threading
import time
flag=True
start_time = time.time()
#程序运行时的时间,记录
def extractall(zfile,password):
#由于在试密码时,会报错,因此将试密码这段try了,为了不每次捕获异常都处理该异常,使用pass站位try:zfile.extractall(pwd = bytes(password, "utf8" ))print('文件解压密码为:',password)now = time.time()
#获取当前时间#print('程序运行时长为:%s'%(now-start_time))
#可以两种格式化输出任选一个,无关紧要。print("程序运行时长为:{}秒".format(now - start_time))global flag
#一定要将旗标提成全局变量,否则变量传不出去,程序无法终止flag = False
#当密码正确时,旗标false,程序终止except:pass
def main():zfile = zipfile.ZipFile('2.zip')
#读取一个名字为2的zip文件,注意,这是相对路径!!!!!with open(r'pass.txt') as f:
#with方法,打开字典文件,注意,仍然是相对路径!!!!!for line in f.readlines():
#按行读取。password = line.strip('\n')
#每一行是一个密码#print(password)if flag is True:t = threading.Thread(target = extractall,args = (zfile,password))
#多线程上面的函数,函数名 extractall,参数,zfile和passwordt.start()
#开启线程t.join()
if __name__=='__main__':
#调用函数,执行暴力破解main()
'''导入了多线程模块,zipfile读取zip文件模块,时间模块,程序开始时设置starttime和flag,flag表示旗标,为了在获取到正确的密码后停止多线程并停止程序的运行'''

相关说明:

1.总共四个文件,一个是生成字典的程序文件,本例为 dict_1.py,一个是执行暴力破解的python程序文件,也就是pojie.py ,一个是dict_1.py所生成的字典 ,名称为pass.txt文本文件,一个是需要暴力破解的zip文件,本例为a.zip,该文件密码为纯数字五位数的密码。建议从字典文件中复制一个随机密码作为该文件密码。

2.生成字典的方式为有限的迭代生成,因此,精度并不高,有些五位数的数字并不在字典当中,当然,可以不使用字典,直接range,在此主要是想使用字典的练习。

3.程序运行时间和字典的大小,计算机的内存,cpu,硬盘的配置有关,仅做参考、

4.四个文件都放在一个文件夹内,如果cmd运行,需要更改路径为绝对路径。

Python 暴力破解zip文件密码(相对简单的密码)相关推荐

  1. python暴力破解Zip文件,就是不讲道理

    本次实验将带领大家用Python的zipfile模块实现Zip文件的暴力破解,涉及的知识点包括:zipfile.argparse的用法等等. 一.实验说明 1. 实验简介 我们在网上好不容易下载到一个 ...

  2. python 暴力破解zip文件

    基本原理: 暴力破解(一)--python脚本暴力破解 加密的zip压缩文件简介:zip格式是常见的压缩文件格式,它支持压缩时设置解压密码:有两种加密方式:1传统加密方式和普通的加密方式.传统加密方式 ...

  3. 【脚本工具】Python暴力破解ZIP文件

    # -*-coding:utf-8-*- import itertools import time import zipfilefilepath = "文件路径" uncompre ...

  4. Python暴力破解zip文件

    具体解决问题: 下载的zip文件被加锁,密码未包含特殊字符.假设密码是4-8位. 解决方案: 先设定可能出现的字符,存放在一个字符串中.用参数代表密码的长度,然后循环遍历的模式遍历所有可能性. 具体代 ...

  5. Python实战-暴力破解zip文件解压密码

    简介 使用的核心模块是python标准库中的zipfile模块.这个模块可以实现zip文件的各种功能,具体可以查看官方参考文档.这里的暴力破解的意思是对密码可能序列中的值一个一个进行密码尝试,这对人来 ...

  6. python暴力破解压缩包密码(python暴力破解zip压缩包)

    python暴力破解压缩包密码 简介 简介: ZIP文件格式是一种数据压缩和文档储存的文件格式,原名Deflate,发明者为菲尔·卡茨(Phil Katz),他于1989年1月公布了该格式的资料.ZI ...

  7. 使用Python暴力破解压缩文件密码

    有一个加密的压缩文件,只记得密码前缀,但知道结尾是4位数字,想用Python暴力破解下. 刚开始想用Python标准库zipfile实现,先创建个密码为password的压缩文件test来测试: fr ...

  8. python暴力破解zip加密文件

    目录 前言: 一.破解zip加密文件的思路: 1.准备一个加密的zip文件. 2.zipfile模块可以解压zip文件. 3.itertools.permutations实现全字符的全排列. 二.实操 ...

  9. 暴力破解zip文件密码

    先是用python写了一个,原理网上都有,我加了个界面,方便使用,同目录下放个pwd.txt,里面是密码列表,可以网上下载一些,或自己生成一个. import zipfile from threadi ...

最新文章

  1. 关于Uncaught SyntaxError: Unexpected identifier
  2. memcached常用命令
  3. SpringCloud面试题及答案
  4. java 获取http地址_java如何获取当前时间,java如何获取ip地址
  5. 关于拷贝常规数组、std::array和std::vector速度的一些测试
  6. php 余额冻结设计_加密货币交易所:微服务架构设计
  7. VMware 找不到我的计算机
  8. 在openSUSE-Leap-15.4-DVD-x86_64中使用佳能喷墨打印机ip2780
  9. bzoj5369: [PKUSC2018]最大前缀和 (状压dp)
  10. 货币金融学(米什金)笔记:金融体系、货币相关
  11. JS清除网页历史记录,屏蔽后退按钮
  12. 代码实现Thompson构造:由简单到复杂的构建NFA状态机
  13. mac上开发abp-zero(三) —— 代码调试篇
  14. cvpr论文什么级别(cvpr论文什么级别,有奖金吗)
  15. MSN Messenger协议 【 very cool stuff 】
  16. 互联网赚钱项目有哪些?目前最火的互联网项目
  17. 量化分析入门5:列表和收盘价的移动平均的示例
  18. 小红伞杀毒软件自动化调用
  19. MD软件常见问题解答sp1版
  20. soot基础 -- soot中基本的对象

热门文章

  1. 一个JAVA渣渣的校招成长记,附BAT美团网易等20家面经总结
  2. 使用 python进行文本处理
  3. TCP/IP详解:TCP——超时和重传
  4. linux rcs启动脚本嵌入式,嵌入式Linux系统启动脚本rcS
  5. 使用百度移动开放平台将web站转换为wap站
  6. Echarts3实例 map地图选中高亮显示
  7. ajax提交成功清空表单,Ajax提交数据后,清空form表单
  8. 浅析云原生模型推理服务框架KServe
  9. 注意力机制(attention)学习记录(二)
  10. java顺序查找法 监视器_java算法:顺序查找(有监视哨和无监视哨)