2014-06-30 130 views
0

我有一小段代碼用於使用單詞列表文件來破解WinRAR存檔密碼。快速創建批量文件

title RAR Crack v_2.0 
echo off 
color f0 
set dest=%temp%\%random% 
md %dest% 
cls 

echo. 
echo ----------------------------------------- 
echo ^| RAR CRACK v_2.0 - BY NOOR (#NullByte) ^| 
echo ----------------------------------------- 
echo. 
echo Drag and drop the archive to this window and press ENTER 
set /p arch= 
echo. 
echo Drag and drop the wordlist to this window and press ENTER 
set /p word= 

cls 
echo. 
echo Starting Process . . 
timeout /t 2 /nobreak>nul 
color f5 
cls 
echo. 
echo Starting Process . . . 
timeout /t 1 /nobreak>nul 

:start 
for /F %%A in (%word%) do call :process %%A 
color 0c 
cls 
echo. 
echo ----------------------------------------- 
echo ^| RAR CRACK v_2.0 - BY NOOR (#NullByte) ^| 
echo ----------------------------------------- 
echo. 
echo. 
echo PASSWORD NOT FOUND! 
echo. 
echo. 
echo Author: Hussain Noor Mohamed (#NullByte) 
echo E-mail: [email protected] 
echo. 
echo Your suggestions are of great value! 
pause>nul 
exit 

:process 
cls 
echo. 
echo Current Password: %1 
unrar e -inul -p%1 "%arch%" "%dest%" 
if /i %errorlevel% equ 10 goto error 
if /i %errorlevel% equ 0 goto finish %1 
exit /b 

:finish 
color 0a 
cls 
echo. 
echo ----------------------------------------- 
echo ^| RAR CRACK v_2.0 - BY NOOR (#NullByte) ^| 
echo ----------------------------------------- 
echo. 
echo. 
echo PASSWORD FOUND! 
echo. 
echo ARCHIVE : %arch% 
echo WORDLIST : %word% 
echo PASSWORD : %1 
echo. 
echo. 
echo Author: Hussain Noor Mohamed (#NullByte) 
echo E-mail: [email protected] 
echo. 
echo Your suggestions are of great value! 
pause>nul 
exit 

:error 
color ce 
cls 
echo. 
echo "%arch%" is not a valid rar file! 
pause>nul 
exit 

問題是它沒有那麼快。 (速度很快,但並不符合我的期望。)如果你能提出一種讓程序更快的方法,那將是非常感謝。

P.S請不要複製我的源代碼!

+0

擺脫你''process'例程中的'echo'。 '回聲'很慢。但是我認爲,您的主要「時間消費者」正在爲每次迭代加載'unrar'(和存檔)。但是我沒有辦法避免這種情況發生(至少不需要批處理,如果你可以管理它,而不是每次都加載) - 也許使用ramdisk? – Stephan

+0

感謝您的回覆。如果沒有'echo',用戶將如何知道應用程序的進展情況。你能提供一個關於使用ramdisk的鏈接嗎?再次感謝! –

+0

呼應1000條短線需要大約4秒。但正如我所說,我不認爲,這是你的主要問題。至於RAMdisk:我曾經使用三十年前的那個。我甚至不確定,如果現代Windows將允許它(基本上它是一個驅動程序,需要一定量的主內存和模擬磁盤 - 小,但非常快)。我將不得不穀歌,但你可以自己做。 – Stephan

回答

0

正如斯蒂芬所說,你的CPU時間大部分進入了unrar運行。以下是我相信可以幫助你的一些事情。

  1. 您可以在所有文件上運行unrar。如果您的存檔包含大量/多個文件並且您知道它們都具有相同的密碼(通常情況下),那麼您可以通過執行以下操作節省一些時間:獲取存檔中第一個文件的名稱(unrar lb .. ..),只測試一個(unrar t ... FILE)。在開始測試密碼之前,您應該只獲取一次文件名。

  2. 您正在順序運行unrar,這意味着您沒有利用現代CPU功能(如多核/線程)。大多數密碼破解程序啓動多個並行進程/線程以同時測試更多密碼,從而提高吞吐量。儘管這對批處理文件來說很難做到。

  3. 在提取模式下運行unrar,該模式假定磁盤活動(至少打開和關閉文件)。如果你在測試模式下運行它(unrar t),你可以節省一些額外的CPU ticks,但這是最小的。因爲這些文件不會改變,而且您可以使用它們,Windows會將unrar和您的壓縮文件(如果可能的話)緩存到RAM中,所以RAM磁盤將不會爲您帶來任何好處(另請參見#3)。

我相信1和2是能夠讓你獲得一定速度的最重要的問題。無論如何,破解密碼本身就是一項耗時的任務。

+0

感謝您的回覆!但是我沒有完全理解你的第二點,如果你能解釋一點,我將不勝感激。順便說一下,第一點使該過程更快! –

+0

我很高興工作。第2項只是一個與速度有關的想法,但在批處理文件中很難做到。基本上,您可以將2個或更多個單詞中的%word%分開,併爲其中一個單詞開始並行執行「:process」任務。例如,如果你有2個內核並運行你當前的腳本,你將會看到大約50%的負載(只有一個內核正在破解)。使用並行腳本,您應該看到100%的負載(因爲兩個內核都在工作) –