Reputation: 618
I created a Batch script to crack a TC volume given a text list of known passwords delimited by a newline. Unfortunately it's not working correctly. When it goes down each line, it doesn't read spaces. If I have an entry "HelloWorld" it will read "Helloworld", but if the entry is "Hello World", then it will only read "Hello". Code:
@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
Can someone fix this problem for me? Thanks.
Upvotes: 0
Views: 300
Reputation: 354366
Use
for /f "delims=" %%i in (passlist.txt) do call :Crack "%%i"
and
:Crack
set pass=%1
for /f
does tokenizing on the input and by default separates tokens with whitespace. And if you pass those to subroutines you need to quote the argument.
Another option is to not quote in the for
line but in set pass="%*"
. Either way, you need quotes.
Upvotes: 1