本文將介紹如何透過zipfile包對加密zip檔案進行破解。
zipfile是Python自帶的一個zip壓縮/解壓縮庫。
作為例子,我們建立一個zip壓縮檔案“test。zip”,併為其密碼“123456”。
我們可以透過如下程式碼對這個檔案進行解壓縮:
這段程式碼的執行結果是將test。zip中壓縮的檔案解壓到當前工作目錄下。
等一下,在上面的例子裡,我們知道解壓縮密碼是什麼。但是現實情況往往是我們不知道密碼。不要急,我們先來看一下如果密碼錯了會發生什麼。
不出所料,系統丟擲一個異常:
RuntimeError: Bad password for file ‘test。txt’
雖然解壓縮失敗了,但是我們知道了一個重要資訊,那就是
我們可以透過捕獲這個異常來得知當前密碼是否正確。
既然有了快速檢測密碼是否正確的方法,我們就可以透過暴力搜尋的方式對密碼進行破解。
密碼破解的一個常用手段就是使用
密碼字典
。密碼字典通常是一個檔案,裡面儲存著大量常用密碼。我們透過對字典用的密碼進行遍歷,如果真實密碼出現在密碼字典中,那麼就可以成功破解。具體程式碼如下:
輸出結果為:
Password = ‘123456’
當然,這種方法的成功率很大程度上取決於密碼字典的大小。密碼字典越大,包含的密碼就越多,成功破解的機率就越大。但這同時帶來一個問題,那就是更多的嘗試次數會使得程式執行時間變長。
我們注意到,嘗試不同的密碼的過程完全是獨立的,因此可以利用多執行緒並行執行,從而提高執行效率:
大家可以在此基礎上,發揮想象力,去實現更加強大的功能。
最後我要說的是,本文僅供技術學習和研究用,請不要利用它去做一些不好的事情。