Python駭客系列(1):破解加密zip檔案

本文將介紹如何透過zipfile包對加密zip檔案進行破解。

zipfile是Python自帶的一個zip壓縮/解壓縮庫。

作為例子,我們建立一個zip壓縮檔案“test。zip”,併為其密碼“123456”。

我們可以透過如下程式碼對這個檔案進行解壓縮:

Python駭客系列(1):破解加密zip檔案

這段程式碼的執行結果是將test。zip中壓縮的檔案解壓到當前工作目錄下。

等一下,在上面的例子裡,我們知道解壓縮密碼是什麼。但是現實情況往往是我們不知道密碼。不要急,我們先來看一下如果密碼錯了會發生什麼。

Python駭客系列(1):破解加密zip檔案

不出所料,系統丟擲一個異常:

RuntimeError: Bad password for file ‘test。txt’

雖然解壓縮失敗了,但是我們知道了一個重要資訊,那就是

我們可以透過捕獲這個異常來得知當前密碼是否正確。

既然有了快速檢測密碼是否正確的方法,我們就可以透過暴力搜尋的方式對密碼進行破解。

密碼破解的一個常用手段就是使用

密碼字典

。密碼字典通常是一個檔案,裡面儲存著大量常用密碼。我們透過對字典用的密碼進行遍歷,如果真實密碼出現在密碼字典中,那麼就可以成功破解。具體程式碼如下:

Python駭客系列(1):破解加密zip檔案

輸出結果為:

Password = ‘123456’

當然,這種方法的成功率很大程度上取決於密碼字典的大小。密碼字典越大,包含的密碼就越多,成功破解的機率就越大。但這同時帶來一個問題,那就是更多的嘗試次數會使得程式執行時間變長。

我們注意到,嘗試不同的密碼的過程完全是獨立的,因此可以利用多執行緒並行執行,從而提高執行效率:

Python駭客系列(1):破解加密zip檔案

大家可以在此基礎上,發揮想象力,去實現更加強大的功能。

最後我要說的是,本文僅供技術學習和研究用,請不要利用它去做一些不好的事情。