自己寫一個破解zip加密文件的腳本
阿新 • • 發佈:2018-05-24
匹配 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加密文件的腳本