自己写一个破解zip加密文件的脚本

前言:因为要参加一个作品赛,而且要写一个PPT来介绍一下自己的作品,自己写的PPT丑的一批,所以就想到网上找一些模板。开启度娘模式,搜索PPT模板,找到百度云分享,开心,下载,下载之后懵X了,TMD还有密码这能忍.....度娘一波破解zip文件的软件(O(∩_∩)O刚开始还没想者自己写,有现成的谁不用呀)下载之后发现竟然还要付费,wcnmlgjb当我们劳动人人民是傻子呀!这么没有技术含量的东西还要付费.md自己动手丰衣足食!

zipfile的官方文档 https://docs.python.org/3/library/zipfile.html

因为对zip文件的文件格式格式不是很熟悉,所以首先想到的是python中应该封装有对zip文件读取的包,果然度娘一波就发现了确实有一个zipfile的包(python大法好呀如果大一的时候就接触到了python那也不至于当时对编程是那么的不感兴趣!最终跳到了网安这个坑,其实这都是后话跳入这个坑之后发现其实网安还是很有意思的...嘻嘻嘻)zipfile中封装了一个方法 ZipFile.extractall(path=None, members=None, pwd=None) 里面分别是zip文件的路径,成员,密码。这个函数当匹配到密码是正确的时候会直接将zip文件解压,而如果密码不正确的时候会抛出一个异常。所以我们就可以根据这个来对zip文件进行破解,其实个人感觉如果我们对zip文件的文件的二进制编码熟悉的话我们自己完全可以编写出类似于extracall这样的函数。嘻嘻。。不扯别的直接上源码

# -*- coding:utf-8 -*-
import zipfile
import threading
from termcolor import *

def crack(zFile,password):

    try:
        zFile.extractall(pwd=password.encode(‘cp850‘,‘replace‘))

        print("++++++++++++++++++++++++KEY FOUND+++++++++++++++++++++++++++++++")

        print(colored("[+]",‘green‘)+colored("Found password:"+password,‘cyan‘))

        event.set()

        return password

    except Exception as e:

        print(colored("[-]",‘red‘)+colored(password,‘blue‘)+colored(":is not the right key","yellow"))

def load():

    zFile = zipfile.ZipFile(‘D:\\download\\1.zip‘)

    # 由于系统默认的编码格式gbk所以这里要改变读取的编码格式不然会造成python抛出异常

    passFile = open(‘C:\\Users\\Ma\\Desktop\\Desk\\实用小工具\\zip文件破解\\1.txt‘,encoding=‘utf-8‘, mode = ‘r‘)

    for line in passFile.readlines():

        if event.isSet():

            return

        else:
            password = line.strip(‘\n‘)

            t = threading.Thread(target=crack, args=(zFile, password))

            t.start()

            t.join()

if __name__ == ‘__main__‘:

    event = threading.Event()

    load()

  

原文地址:https://www.cnblogs.com/baimaoma/p/9085014.html

时间: 2024-09-29 00:39:42

自己写一个破解zip加密文件的脚本的相关文章

简单操作只需10秒破解PDF加密文件

简单操作只需10秒破解PDF加密文件 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51345950 如何破解PDF加密文件,如何破解PDF密码呢,破解加密的PDF文件? 从网上下载的PDF文件,由于版权的问题,作者经常会加密禁止读者复制修改等权限,如下面的PDF文档,用Adobe pdf Reader打开时,会显示"已加密"的字样,虽然可以阅读,但不能修改和标记. 为了解决这个问题,可以采用绕过破解密码这一

利用Gpg4win来打造一个安全的加密文件

出于工作需要,最近我在研究文件加密,正好找个工具说一说. 加密工具简述 加密工具基于算法模式,一般分两类,一类是对称加密,一种是非对称加密.前者加密和解密使用一套密钥,常用于密码式加密:后者非对称加密,加密和解密使用两套密钥:一般为公钥加密,私钥解密. 文件加密主要是为了安全,诚然很多软件本身也携带加密功能,但基于对称加密的密码模式,安全性值得商榷.今天我不讨论加密原理,只是实际操作一下来向大家展示非对称加密工具的实践.在windows平台下,Gpg4win无疑是比较好用的一款非对称加密软件.官

写一个杀死Gradle Daemon的shell脚本和bat脚本

1. Gradle Daemon也就是Gradle守护进程 Gradle需要运行在一个Java虚拟机中,每一次执行gradle命令就意味着一个新的Java虚拟机被启动,然后加载Gradle类和库,最后执行构建.这样,构建起来会花费大量的时间在Java虚拟机的启动与关闭. 通过Gradle 守护进程,只需要启动一次Java虚拟机,之后就可以再利用,无需再次重启Java虚拟机.这样就达到缩短构建时间的目的. 2. Java虚拟机,每存在一个main函数就会新创建一个jvm,也就是说一台机器上可以创建

如何写一个自定义的js文件

自定义一个Utils.js文件,在其中写js代码即可.如: (function(w){ function Utils(){} Utils.prototype.getChilds = function(_selector){}; Utils.prototype.getNextSibling = function(_selector){}; Utils.prototype.getPrevSibling = function(_selector){}; Utils.prototype.validate

如何写一个合格的日志文件

调用下面的方法传入要打印的内容即可 /**/ /// <summary> /// 写入日志文件 /// </summary> /// <param name="input"></param> public static void WriteLogFile(string input) { /**/ ///指定日志文件的目录 string fname = Directory.GetCurrentDirectory() + "\\Lo

使用js写一个作用于xml文件的ajax

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <script type="text/javascript"> 5 window.onload = function(){ 6 var aNodes = document.getElementsByTagName("a"); 7 for(var i = 0; i < aNodes.length; i++){ 8 aNodes[i].onc

一个自动生成密码文件的小程序

1.写一个自动生成密码文件的程序 1.你输入几,文件里面就给你产生多少条密码 2.密码必须包括,大写字母.小写字母.数字.特殊字符 3.密码不能重复 4.密码都是随机产生的 5.密码长度6-11 方法一(自己写的) import random,stringf=open('pwd.txt','w') #w覆盖原来产生的文件num=input('请输入你要产生的密码个数:')s = set() while True: random_num=str(random.randint(1,999999))

一个Java写的批量重命名文件小程序

今天学了一下java的File操作,然后乘着兴趣,写了一个可以批量处理文件命名的小程序,小程序还有一些不完美的地方,但胜在有趣.比如可以快捷更改你不想让别人看到的文件之类的...限个人使用,造成数据丢失后果自负哟. import java.io.File; import java.sql.Date; import java.util.Scanner; public class RenameTool { boolean useDefaultName = false; boolean useDefa

写一个方法进行文件的复制

java中实现文件内的复制,需要新建文件的方法: File file=new File("wubin.txt"); 并且没有这个文件,那么需要将这个文件,创造出来: file.createNewFile(); 当然也可以直接在文件流里面直接创造: FileInputStream  fis=new FileInputStream("wubin.txt"); 意思是在本目录下创建一个wubin.txt的文件,之后创造一个inputstreamreader去获取内容,再通