![黑客技術手段,python暴力突破ZIP文件密碼!](http://p2.ttnews.xyz/loading.gif)
Python 和放大鏡的二進制代碼
1 準備材料(私信小編007即可自動獲取大量Python視頻教程以及各類PDF!)
首先在目錄C:\Users\hy\Desktop(就是windows10系統下的桌面)下創建test.zip文件,設其密碼為123456
![黑客技術手段,python暴力突破ZIP文件密碼!](http://p2.ttnews.xyz/loading.gif)
password.txt是密碼字典 ,裡面是我隨便輸入的一些密碼。
下面使用PyCharm編寫代碼
ZIP FLIE
在python中操作zip文件, 基本上都是使用zipfile模塊,他可以創建、解壓文件,獲取zip文件的元數據信息。
我們想要操作一個zip文件,第一步就是初始化ZipFile實例。下面我們打開我們準備好的test.zip文件。
import zipfile
zF = zipfile.ZipFile(r"C:\Users\hy\Desktop\test.zip");
目前我們只是傳入一個參數地址,實例化了一個對象,想要解壓文件還要是要到extractall方法,三個參數,path是解壓的路徑(默認為解壓文件所在路徑),members是需要解壓出來的文件(默認為全部文件),pwd是密碼。
extractall(self,path=None,members=None,pwd=None)
import zipfile
zF = zipfile.ZipFile(r"C:\Users\hy\Desktop\test.zip")
zF.extractall(pwd="1111111")
我們會發現運行提示錯誤
提示我們的pwd的參數編碼不對, 這是因為在python3中pwd需要的是byte, 所以需要我們自己轉化
zF.extractall(pwd=”1111111”.encode(“ascii”))
再運行提示
這才是正常的密碼錯誤提示,這時候更在一下密碼即可
zF.extractall(pwd=”123456”.encode(“ascii”))
不過因為我們提前不知道密碼,所以就用到密碼字典啦,首先實例字典引用,然後把它轉化為列表
zpassword=open(r"C:\Users\hy\Desktop\password.txt")
zpw=zpassword.readlines() #readines()以列表的形式返回一個list,按照每行讀取
這時候可能會提示錯誤,也有可能不是gbk
這是因為我係統默認的編碼為gbk 但是我的密碼字典是utf-8,所以報錯。可是如果用sys.getdefaultencoding()查看,你會發現
是utf-8,這個並不準確,正確的方法是:
在Windows平臺下,進入DOS窗口,輸入:chcp
我的活動代碼頁為:936,它對於的編碼格式為GBK
所以要我們自己取設置讀取使用的編碼:
zpassword=open(r"C:\Users\hy\Desktop\password.txt",encoding="utf-8")
另外為了直觀的看到進度,我添加了進度條功能,只要用的是
print("\r"+"這裡寫內容"+,end=""),#\r代表不換行,然後清空本行從開頭書寫。
def progressbar(nowprogress,toyal): #nowprogress現在的進度數 toyal#總數
get_progress=int((nowprogress+1)*(50/toyal)) #顯示多少>
get_pro=int(50-get_progress)#顯示多少-
percent=(nowprogress+1)*(100/toyal)
print("\r"+"["+">"*get_progress+"-"*get_pro+']'+"%.2f" % percent + "%",end="")
至於print上面的就是數學上的知識啦。
看這篇文章的估計都不是特別新的新手,就不一步一步教了,
#-*- coding: UTF-8 -*-
import zipfile
def progressbar(nowprogress,toyal): #nowprogress現在的進度數 toyal#總數
get_progress=int((nowprogress+1)*(50/toyal)) #顯示多少>
get_pro=int(50-get_progress)#顯示多少-
percent=(nowprogress+1)*(100/toyal)
print("\r"+"["+">"*get_progress+"-"*get_pro+']'+"%.2f" % percent + "%",end="")
def setpass(zip,password):
try:
zip.extractall(pwd=password.encode("ascii"))
return password
except Exception as e:
return
def main():
zf=zipfile.ZipFile(r"C:\Users\hy\Desktop\test.zip")
zpassword=open(r"C:\Users\hy\Desktop\password.txt",encoding="utf-8")
zpw=zpassword.readlines()
for i in zpw:
progressbar(zpw.index(i),len(zpw))
password=i.strip("/n")
gess=setpass(zf,password)
if gess:
print("\n"+"正確密碼:"+password)
exit(0)
if __name__=="__main__":
main()
這個程序簡單,最主要的是你有個強大的密碼字典,另外,感興趣的還可以添加命令行輸入路徑功能,多線程解壓,破解功能。
最後:還望各位看官手下留情,多多指教~
閱讀更多 編程新世界 的文章