如何在开头用错误的密码检测错误代码

时间:2014-01-14 13:28:44

标签: batch-file command-line extract winrar unrar

我正在进行像软件(.bat文件)这样的强力攻击,它会尝试使用一些预定义的密码来提取文件。我的算法是这样的: -

"C:\Program Files\WinRAR\WinRAR.exe" x -inul -ppassword1 "path to my rar file" 
if %ERRORLEVEL% GEQ 1 GOTO try2
GOTO exit

:try2
"C:\Program Files\WinRAR\WinRAR.exe" x -inul -ppassword2 "path to my rar file" 
if %ERRORLEVEL% GEQ 1 GOTO try3
GOTO exit

:try3
"C:\Program Files\WinRAR\WinRAR.exe" x -inul -ppassword3 "path to my rar file" 
if %ERRORLEVEL% GEQ 1 GOTO try4
GOTO exit
像这样。一切都按照我的期望工作,10%的情况都有问题。

在正常情况下,即手动提取(不是我的软件),我发现:某些rar文件即使使用错误的密码也会开始提取,并且当提取即将完成时,它会显示错误消息“已损坏的文件或密码错误“。在这种情况下,我的软件面临一个很大的问题=>它多次提取相同的文件,因为ERRORLEVEL为0(直到提取即将完成)。有没有办法修改这样的rar文件,以便它不会开始用错误的密码提取。或者,任何在提取开始时检测错误代码的方法(不接近提取结束)。

1 个答案:

答案 0 :(得分:2)

我无法帮助您解决WinRAR问题,但我可以帮助您使用Batch方法:

@echo off
setlocal EnableDelayedExpansion

for %%p in (password1 password2 ... passwordEtc
            passwordN passwordM) do (
   "C:\Program Files\WinRAR\WinRAR.exe" x -inul -p%%p "path to my rar file" 
   if !ERRORLEVEL! EQU 0 GOTO exit
)
echo Unable to extract after tried all paswords...