前幾天在一本書上看到一篇可以利用字典破解zip檔案密碼的文章,覺得比較有意思於是研究了一番,在這裡分享一下
主要是利用python裡自帶的zipfile庫中的extractall函式來實現的,簡單匯入zipfile之後,例項化乙個zipfile類。利用extractall()來解壓這個檔案,並在引數pwd上填入正確密碼
這時我們發現執行指令碼之後,fate.zip會被正確解壓,而填入錯誤密碼則會入下圖一樣報錯
try expect
來處理異常資訊。
假定zip檔案密碼為fate,pwd.txt為字典檔案
import zipfile
zfile = zipfile.zipfile(r"d:\python\fate.zip"
)passfile =
open
(r"d:\python\pwd.txt"
)for line in passfile.readlines():
password = line.strip(
'\n'
)# noinspection pybroadexception
try:
zfile.extractall(pwd=password.encode(
"utf=8"))
print
("password="
+password)
except exception as e:
pass
需要注意的是python3以及不支援自動ascii碼了,在extractall的pwd引數後需手動新增編碼型別,# noinspection pybroadexception
則是為了防止pycharm報錯
將程式模組化後,在利用多執行緒處理可以提高程式效能,可以利用thread來實現多執行緒處理
import zipfile
from threading import thread
defextractfile
(zfile,password)
:# noinspection pybroadexception
try:
zfile.extractall(pwd=password.encode(
"utf=8"))
print
("password="
+password)
except exception as e:
pass
defmain()
: zfile = zipfile.zipfile(r"d:\python\fate.zip"
) passfile =
open
(r"d:\python\pwd.txt"
)for line in passfile.readlines():
password = line.strip(
'\n'
) t = thread(target=extractfile(zfile , password)
) t.start(
)if __name__ ==
"__main__"
: main(
)
利用if __name__ == "__main__"
使函式只在當前模組執行,當被匯入時不運 簡簡單單編譯原理
都說編譯原理挺難,其實它並不像大家想象中的那麼難,it s so easy 總的來說編譯原理可以分為以下幾個知識點 文法的分類 不確定的有限狀態自動機到確定的有限狀態自動機的轉換 正規表示式。掌握了這三個知識點,編譯原理中每個題的道理了,其實編譯原理就是這麼回事。下面具體介紹上面說的三個知識點 1....
簡簡單單寫程式
寫程式這麼多年,總有幾百萬行了。感覺,程式寫的方向,總的來說越來越簡單。乙個函式,簡簡單單幾行就完了,乙個類,簡簡單單幾個公有方法,也就完了。簡單,就不容易出錯,自己看自己的 看昏了的也有,乙個函式幾千行,人的腦子,堆疊顯然不夠用,看了後面,忘了前面,何苦呢。簡單,就好懂,乙個工程完了,心裡其實很發...
簡簡單單聯合查詢
最近兩節過於簡單都不配有腦圖 聯合查詢 union 含義 將多條查詢語句的結果合併成乙個結果 語法 查詢語句1 union 查詢語句2 應用場景 要查詢的結果來自多個表,且多個表沒有直接的連線關係,但查詢的資訊一致時 注意事項 1 要求多條查詢語句的查詢列數是一致的 2 要求多條查詢語句每一列的型別...