黑客技術手段,python暴力突破ZIP文件密碼!

黑客技術手段,python暴力突破ZIP文件密碼!

Python 和放大鏡的二進制代碼

1 準備材料(私信小編007即可自動獲取大量Python視頻教程以及各類PDF!)

首先在目錄C:\Users\hy\Desktop(就是windows10系統下的桌面)下創建test.zip文件,設其密碼為123456

黑客技術手段,python暴力突破ZIP文件密碼!

password.txt是密碼字典 ,裡面是我隨便輸入的一些密碼。

黑客技術手段,python暴力突破ZIP文件密碼!

下面使用PyCharm編寫代碼

黑客技術手段,python暴力突破ZIP文件密碼!

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")

我們會發現運行提示錯誤

黑客技術手段,python暴力突破ZIP文件密碼!

提示我們的pwd的參數編碼不對, 這是因為在python3中pwd需要的是byte, 所以需要我們自己轉化

zF.extractall(pwd=”1111111”.encode(“ascii”))

再運行提示

黑客技術手段,python暴力突破ZIP文件密碼!

這才是正常的密碼錯誤提示,這時候更在一下密碼即可

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()查看,你會發現

黑客技術手段,python暴力突破ZIP文件密碼!

是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()

這個程序簡單,最主要的是你有個強大的密碼字典,另外,感興趣的還可以添加命令行輸入路徑功能,多線程解壓,破解功能。

最後:還望各位看官手下留情,多多指教~


分享到:


相關文章: