Python爆力破解rar密碼並對比多執行緒的效率

2021-10-03 10:14:14 字數 3172 閱讀 3937

要破解首先得有密碼本,這個重複造輪子是沒必要滴。網上有很多同鞋已經造了很多好用的輪子,這裡選了骨灰家的輪子(linux版)。隨便生成了乙個密碼本,共約1800多個密碼,檔名為dic,其實就是個文字檔案,每行乙個密碼。並把我正確的密碼藏在檔案最後用來測試軟體。

from threading import thread

from unrar import rarfile

import os

import time

file_path =

'./aaa.rar'

# 需要破解的檔案路徑,這裡僅對單個檔案進行破解

output_path =

'./extract/'

# 解壓輸出檔案路徑

dict_path =

'./dic'

# 字典檔案

defget_pw

(dict_path)

:# 從字典讀取檔案,生成跌代器

with

open

(dict_path,

'r')

as f:

for pwd in f:

yield pwd.strip(

)

上面的**很簡單,讀取檔案,做乙個迭代器。主要考慮密碼本很大的情況,這兩千來個測試密碼可以一次性讀入記憶體,那種幾十g的密碼本可沒法這麼做。

下面的**就是破解**了:

這裡要注意的是,unrar這個包要裝,筆者這是ubuntu 1804

用pip3 install unrar (此命令注意許可權) 就裝好了,但是光這樣還是不行的。會提示 couldn』t find path to unrar library…的錯誤

在 專案官方文件上有答案:

請參考文件install unrar library的說明。

大致就是本python專案需要官方庫,如下(注意許可權):

2.tar -zxvf unrarsrc-5.2.6.tar.gz ->> cd unrar ->> sudo make lib ->> sudo make install-lib(make不了的裝g++,sudo apt install g++)

在 /usr/lib 目錄下面會產生產生 libunrar.so 檔案;

在最後麵添上:export unrar_lib_path=/usr/lib/libunrar.so

儲存退出後,執行:source /etc/profile

如果還不行呢:則在~目錄下的.bash_profile中配置環境變數,如上面所示一致。還不行就重啟一下,保你ok。

def

dec_pwd

(file_path, output_path, pwd)

:# 傳入被解壓的檔案路徑,生成待解壓檔案物件

file

= rarfile.rarfile(file_path)

# 輸出解壓後的檔案路徑

out_put_file_path =

'./extract/{}'

.format

(file

.namelist()[

0])# 嘗試解壓檔案

file

.extractall(path=output_path, pwd=pwd)

try:

# 刪除解壓後的第乙個檔案,用來測試是否成功

os.remove(out_put_file_path)

# 上一句被執行,說明當前密碼有效,並告知

print

('find password is "{}"'

.format

(pwd)

) end = time.time(

)print

('程式耗時{}'

.format

(end - start)

)return

true

except exception as e:

# 如果刪除檔案出錯

pass

if __name__ ==

'__main__'

: pwds = get_pw(dict_path)

start = time.time(

)while

true

:# 單執行緒版本 執行時好看 沒有錯誤提示

pwd = pwds.__next__(

)print

(pwd)

try:

dec_pwd(file_path, output_path, pwd=pwd)

except

:continue

end = time.time(

)print

('程式耗時{}'

.format

(end - start)

)

以下提供多執行緒版本:最後的while true:這裡開始替換就行

while

true

:# 多執行緒版本,實測比下面的單執行緒版快45% 執行時會有很多異常提示,不影響使用

try:

pwd = pwds.__next__(

) th = thread(target=dec_pwd, args=

(file_path, output_path, pwd)

) th.start(

)except

:pass

**還是比較簡單的,結合注釋我想是比較容易看明白的。這是本人實際測試的,在寫**前也想著去找找現成**,結果大多都不靠譜!而且無數文章全長一樣,當真是

天下文章全靠抄,靠不靠譜都要抄…

在筆者的i5,8g,固態硬碟,ubuntu1804的thinkpad筆記本上,單執行緒版解出密碼用時363秒左右,平均每秒才約5個…多執行緒版解出密碼用時190秒,平均每秒也不到10個…

最後老實地掏錢去買實體書吧!本程式適用於你自己設定的密碼卻又忘記了但記得個大概的情況,也可以用來試試弱密碼。只要字典做得好,還是有點機會的!

附多執行緒測試

rar密碼破解工具彙總

假如酷愛在網路上找各種資源的你,經歷千辛萬苦終於找到了乙個rar打包的檔案,興奮地慌忙點選,可開啟才發現是加密的,相信這樣的場景很多人都遇到過,今天就針對壓縮檔案密碼的破譯軟體進行彙總比較。1 passware kit passware kit是一款國外非常知名的密碼恢復軟體,其幾乎可以用來破解ra...

python破解zip密碼

思路 主要是使用遍歷字典的方式進行破解,以及zipfile庫的使用 步驟 1.檢視是否已經安裝好zipfile庫 2.準備字典檔案 eg zipdict.py usr bin env python3 生成字典檔案 寫檔案 fp open d 1 dictionary.txt w 迴圈生成6位數字密碼...

Python 破解 wifi 密碼

想蹭網?不知道wifi密碼?教你如何破解wifi密碼連上wifi 安裝pywifi庫 因為我已經安裝好了,這裡就不展示安裝成功的資訊了 這裡有點注意的地方是有些人命名安裝了pywifi,import pywifi執行的時候卻報錯,我也試過這樣 這裡只需要再安裝乙個comtypes庫就行了,只有三百k...