2011-06-27 3 views
0

改行で区切られた既知のパスワードのテキストリストがあれば、TCボリュームをクラックするバッチスクリプトを作成しました。残念ながら、正しく動作していません。各行を降りると、スペースは読み込まれません。エントリ "HelloWorld"がある場合は "Helloworld"と読み込まれますが、エントリが "Hello World"の場合は "Hello"のみが読み込まれます。コード:バッチスクリプトが正しく動作しません

@echo off 
echo "--- Starting ---" 

set drive=V 
set tcexe="C:\Program Files\TrueCrypt\TrueCrypt.exe" 
set tcvol="C:\Users\Ryan\Desktop\rawr.tar.gz" 

:Start 
for /f %%i in (passlist.txt) do call :Crack %%i 

:Crack 
set pass=%1 
echo Trying %pass%... 
%tcexe% /q /l %drive% /v %tcvol% /p %pass% /s /e /b 
if exist %drive%: goto :End 
goto :eof 

:End 
echo "TC volume cracked!" 
echo The password is %pass% 
pause 

誰かがこの問題を解決できますか?ありがとう。

答えて

1

使用

for /f "delims=" %%i in (passlist.txt) do call :Crack "%%i" 

:Crack 
set pass=%1 

for /fが入力にトークン化し、デフォルトで空白文字でトークンを区切るん。そして、それらをサブルーチンに渡す場合は、引数を引用する必要があります。

もう1つの方法は、for行ではなく、set pass="%*"行で引用しないことです。いずれにしても、引用符が必要です。

関連する問題