1. 程式人生 > >自己寫一個破解zip加密文件的腳本

自己寫一個破解zip加密文件的腳本

匹配 zipfile 有一個 file ++ gre 解壓 官方 trac

前言:因為要參加一個作品賽,而且要寫一個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()

  技術分享圖片

自己寫一個破解zip加密文件的腳本