Python 破解带密码保护的Zip文件

时间:2022-09-20 21:33:19

今天发生了个有趣的事情,有个朋友发了一个带密码保护的Zip文件给我,却不给我密码,我就琢磨这怎么可以'猜'到密码呢?

经过一系列的尝试,最终使用python把这个密码给'猜'出来了。要想写出破解密码的脚本需要了解一下python的zipfile库,这里百度上的资源多的很,我就直接给大家上代码再一一解释。

import zipfile
from threading import Thread

  首先导入zipfile 和 Thread库下的threading,作用分别是:可以通过代码来打开zip文件,有密码保护我们提供密码就行了(至于怎么提供我后面会讲^_^); 开启多线程来'猜'密码,使得效率更高!

这里我们可以练习一下zipfile是怎么打开文件的呢?

zipFile = zipfile.ZipFile("test1.zip")
zipFile = extractall(pwd= bytes("123", "utf8" ))

  我们在和这个练习的python脚本相同路径下生成一个压缩密码为:123的压缩包,命名为test1.zip 当然你可以在任何地方生成练习文件,打开的时候记得写上绝对路径就OK啦~~

你会发现这个代码运行后你的压缩文件被解压啦,我们思考一下那么密码错误怎么办呢,当然就是打不开啦。我们利用这个特性,使用python的预防错误机制try ,except  这个机制的意思是:如果我放在try:里面要执行的代码有问题,程序不会报错而会运行except: 下面的代码。

核心:那我们就利用这点,让程序去给我们尝试几乎无限种可能的密码的排列组合,如果密码错误就跳过,知道找到密码为止~

题外话:我觉得我那个朋友设置的密码应该会是数字,所有我用python写了一个.txt文件:将0到10000000的数字全部写入。貌似有80多MB....真的很大...

接下来就开始猜密码了:

def extractFile(zipFile, password):   ###提取文件的类
try:
zipFile.extractall(pwd= bytes(password, "utf8" )) ###打开压缩文件,提供密码...
print("This file\'s password is " + password) ###破解到密码
except:
pass ###假如失败,就跳过继续

 写了一个方法:这个方法需要我们提供需要破解的文件的相关信息, 然后需要我们提供这个文件的密码(我们当然不知道密码,不过很快就会知道的了~~~)

def mainStep():
zipFile = zipfile.ZipFile('C:\\Users\\Flash\\Desktop\\Secret.zip') # 这里的第二个参数用r表示是读取zip文件,w是创建一个zip文件,默认是r
PwdLists = open('C:\\Users\\Flash\\Desktop\\dictionary.txt') #读入所有密码
for line in PwdLists.readlines(): #挨个挨个的写入密码
Pwd = line.strip('\n')
t = Thread(target=extractFile, args=(zipFile, Pwd))
t.start()

  然后我们再写一个方法:这个方法是为extractFile方法提供需要破解文件的相关信息的, 然后在打开‘密码字典’把密码字典的所有东西都读到PwdLists里面, 通过for循环把PwdLists里面的每个密码都拿去尝试,直到有正确密码为止   t = Thread(target=extractFile, args=(zipFile, Pwd))  这个的意思是在线程先运行使得尝试的速度更快,具体可以百度了解线程的知识。

Python 破解带密码保护的Zip文件 Python 破解带密码保护的Zip文件

这个是我生成的密码字典 和 我破解的朋友的密码~~~/得意 O(∩_∩)O哈哈~

我贴出全部代码:

import zipfile
from threading import Thread def extractFile(zipFile, password): ###提取文件的类
try:
zipFile.extractall(pwd= bytes(password, "utf8" )) ###打开压缩文件,提供密码...
print("This file\'s password is " + password) ###破解到密码
except:
pass ###假如失败,就跳过继续
def mainStep():
zipFile = zipfile.ZipFile('C:\\Users\\Flash\\Desktop\\Secret.zip') # 这里的第二个参数用r表示是读取zip文件,w是创建一个zip文件,默认是r
PwdLists = open('C:\\Users\\Flash\\Desktop\\dictionary.txt') #读入所有密码
for line in PwdLists.readlines(): #挨个挨个的写入密码
Pwd = line.strip('\n')
t = Thread(target=extractFile, args=(zipFile, Pwd))
t.start()
if __name__ == '__main__':
mainStep()

  注意:我用的是绝对路径,大家可以根据自己的路径修改哦

代码不难,却是很有趣,做什么事情没有绝对的兴趣也没有绝对的枯燥乏味,我们要自己让自己觉得有意思起来:这个很有趣,这个很有趣...(心里:一点也没有!! 哈哈 开个玩笑。)

希望我们抱着一种开心的心态学习和进步。大家一起努力吧~~

Python 破解带密码保护的Zip文件的更多相关文章

  1. python自带编译器在写入文件时闪退,或者一步步执行到写入时提示8170。解决办法:

    用python黑框运行程序写入文件时闪退,或一行行运行到写入时提示8170数字. 经试验,为文件路径错误导致. with open("1.doc", "wb") ...

  2. 使用Python自带difflib模块进行文件内容差异对比

    difflib_text.py #!/usr/bin/python import difflib import sys try: textfile1=sys.argv[1] textfile2=sys ...

  3. python怎样压缩和解压缩ZIP文件

    https://zhidao.baidu.com/question/1498409764366387259.html

  4. 暴力破解ZIP文件密码

    Python 的标准库提供了 ZIP 文件的提取压缩模块 zipfile,现在让我们试着用这个模块,暴力破解出加密的 ZIP 文件!我们可以用 extractall()这个函数抽取文件,密码正确则返回 ...

  5. Python 标准库 —— zipfile(读取 zip 文件)

    Python模块学习:zipfile zip文件操作 Python 学习入门(16)-- zipfile 0. 解压 with zipfile.ZipFile('../data/jaychou_lyr ...

  6. Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php

    Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php 1. Jdk zip 跟apache ant zip 1 2. Apache Ant包进行ZIP文件压缩,upzip ...

  7. Java使用基本JDK操作ZIP文件以及zip文件的加密、解密等功能

    Java使用基本JDK操作ZIP文件 http://blog.csdn.net/zhyh1986/article/details/7723649 Java解压和压缩带密码的zip文件 http://b ...

  8. Atitit. 拉开拉链zip文件 最佳实践实施 java c# .net php

    Atitit. 拉开拉链zip文件 的实现最佳实践 java c# .net php 1. Jdk zip 跟apache ant zip 1 2. Apache Ant包进行ZIP文件压缩,upzi ...

  9. Python与Hack之Zip文件口令破解

    1.需要的库: **import zipfile**import optparse**from threading import Thread(1)zipfile:1.1 zipfile.ZipFil ...

随机推荐

  1. GCD的相关函数使用

    GCD 是iOS多线程实现方案之一,非常常用 英文翻译过来就是伟大的中枢调度器,也有人戏称为是牛逼的中枢调度器 是苹果公司为多核的并行运算提出的解决方案 1.一次性函数 dispatch_once 顾 ...

  2. 深入理解DOM节点类型第七篇——文档节点DOCUMENT

    × 目录 [1]特征 [2]快捷访问 [3]文档写入 前面的话 文档节点document,隶属于表示浏览器的window对象,它表示网页页面,又被称为根节点.本文将详细介绍文档节点document的内 ...

  3. Emacs 从入门到精通

    1 前言 不想再说废话了,既然你会阅读这篇文档,说明你多少对Emacs有 些兴趣,或者已 经非常熟悉Emacs的基础操作了,并且希望有所提高.因此我不需要再把"编辑器 之神,还是神的编辑器& ...

  4. iOS全景

    一张鱼眼图或者6方图,展现出来的全景影像效果图 PanoramaGL PanoramaGL是世界上第一个开源的实现360度全景图像的iOS.Android类库.基于OpenGL 支持球,立方体,圆柱. ...

  5. 简明解释算法中的大O符号

    伯乐在线导读:2009年1月28日Arec Barrwin在*上提问,“有没有关于大O符号(Big O notation)的简单解释?尽量别用那么正式的定义,用尽可能简单的数学 ...

  6. 关于c语言中栈和堆释放的问题

    #include<iostream> #include<string> using namespace std; int main() { string st; cin> ...

  7. CNN&plus;BLSTM&plus;CTC的验证码识别从训练到部署

    项目地址:https://github.com/kerlomz/captcha_trainer 1. 前言 本项目适用于Python3.6,GPU>=NVIDIA GTX1050Ti,原mast ...

  8. 初识GRUNT

    什么是GRUNT? 基于任务的命令行工具.能做的事包括: ● 验证html,css, javascript● 压缩css, javascript● 编译CoffeeScript, TypeScript ...

  9. openstack 部署笔记--glance

    控制节点 创建用户及服务 $ . admin-openrc $ openstack user create --domain default --password-prompt glance $ op ...

  10. &lbrack;漏洞复现&rsqb; CVE-2017-11882 通杀所有Office版本

    此漏洞是由Office软件里面的 [公式编辑器] 造成的,由于编辑器进程没有对名称长度进行校验,导致缓冲区溢出,攻击者通过构造特殊的字符,可以实现任意代码执行. 举个例子,如果黑客利用这个漏洞,构造带 ...