Ayuda, algo anda mal con mi programa batch

Iniciado por Baphomet2204, 1 Marzo 2019, 18:10 PM

0 Miembros y 1 Visitante están viendo este tema.

Baphomet2204

Hola a todos, les explico mi problema, todos conocemos el código bat para crear una carpeta con contraseña, lo que nunca me ha gustado de ese código es que tienes que establecer la contraseña en el bat y si se lo pasas a alguien convertido en .exe no puede cambiar la contraseña, bueno yo modifique el código de forma que la primera vez que lo ejecutes tú creas en ese momento la contraseña.


cls

@echo off

title LOCKEDFOLDER.exe

color 0a

echo.
echo  ==============================================================================
echo                            LOCKEDFOLDER [Version 2.0.0]
echo  ------------------------------------------------------------------------------
echo.

if EXIST TWlock goto UNLOCK

if NOT EXIST LOCKEDFOLDER goto MDLOCKER


:CONFIRM

set /p op=Seguro que quieres proteger la carpeta? (S/N):

if %op%==S goto LOCK
if %op%==s goto LOCK
if %op%==n goto END
if %op%==N goto END
echo.
echo     Comando no valido
echo.
echo  ^< Presione una tecla para finalizar ^>
pause >nul
goto CONFIRM

:LOCK

ren LOCKEDFOLDER TWlock
attrib +h +s TWlock
echo.
echo     Carpeta bloqueada
echo.
echo  ^< Presione una tecla para finalizar ^>
pause >nul
goto End

:UNLOCK

Set "tmpFile=%TEMP%\password.txt"
PowerShell.exe -Command $pword = read-host "Introduzca clave " -AsSecureString ; ^
    $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; ^
        [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > "%tmpFile%"
(Set /P password=<"%tmpFile%") & (Del /Q "%tmpFile%")

FOR /F "delims=·" %%A IN (clave.txt) DO CALL:Tratar "%%A"
if %password%==%Reg% (goto Decrypt) else goto FAIL

:Decrypt

attrib -h -s TWlock
ren TWlock LOCKEDFOLDER
echo.
echo     Carpeta desbloqueada   
echo.
echo  ^< Presione una tecla para finalizar ^>
pause >nul
goto End

:FAIL

echo.
echo     Clave no valida 
echo.
echo  ^< Presione una tecla para finalizar ^>
pause >nul
goto End

:MDLOCKER

Set "tmpFile=%TEMP%\password.txt"
PowerShell.exe -Command $pword = read-host "Establezca su clave de desbloqueo " -AsSecureString ; ^
    $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; ^
        [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > "%tmpFile%"
(Set /P password=<"%tmpFile%") & (Del /Q "%tmpFile%")

echo %password% > clave.txt
attrib +h +s clave.txt

md LOCKEDFOLDER
echo.
echo     Carpeta privada creada con exito 
echo.


echo.
echo  ^< Presione una tecla para finalizar ^>
pause >nul
goto End

:Tratar

rem aquí se procesa cada línea del archivo
    SET Reg=%~1   
    GOTO:EOF

:End


con el código de arriba funciona bien pero, quise poner una linea más para confirmar contraseña, es decir, debería aparecer así:

Establezca su clave de desbloqueo: **********
Confirme su clave de desbloqueo: **********

Si coinciden crea la carpeta si no coinciden lo regresa, para eso modifique así:


cls

@echo off

title LOCKEDFOLDER.exe


color 0a

echo.
echo  ==============================================================================
echo                            LOCKEDFOLDER [Version 2.0.1]
echo  ------------------------------------------------------------------------------
echo.

if EXIST TWlock goto UNLOCK

if NOT EXIST LOCKEDFOLDER goto MDLOCKER


:CONFIRM

set /p op=Seguro que quieres proteger la carpeta? (S/N):

if %op%==S goto LOCK
if %op%==s goto LOCK
if %op%==n goto END
if %op%==N goto END
echo.
echo     Comando no valido
echo.
echo  ^< Presione una tecla para finalizar ^>
pause >nul
goto CONFIRM

:LOCK

ren LOCKEDFOLDER TWlock
attrib +h +s TWlock
echo.
echo     Carpeta bloqueada
echo.
echo  ^< Presione una tecla para finalizar ^>
pause >nul
goto End

:UNLOCK

Set "tmpFile=%TEMP%\password.txt"
PowerShell.exe -Command $pword = read-host "Introduzca clave " -AsSecureString ; ^
    $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; ^
        [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > "%tmpFile%"
(Set /P password=<"%tmpFile%") & (Del /Q "%tmpFile%")

FOR /F "delims=·" %%A IN (clave.txt) DO CALL:LEER "%%A"
if %password%==%Reg% (goto Decrypt) else goto FAIL

:Decrypt

attrib -h -s TWlock
ren TWlock LOCKEDFOLDER
echo.
echo     Carpeta desbloqueada   
echo.
echo  ^< Presione una tecla para finalizar ^>
pause >nul
goto End

:FAIL

echo.
echo     Clave no valida 
echo.
echo  ^< Presione una tecla para finalizar ^>
pause >nul
goto End

:MDLOCKER

Set "tmpFile=%TEMP%\password.txt"
PowerShell.exe -Command $pword = read-host "Establezca su clave de desbloqueo (Por favor no olvide su clave, no hay forma de recuperarla) " -AsSecureString ; ^
    $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; ^
        [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > "%tmpFile%"
(Set /P password=<"%tmpFile%") & (Del /Q "%tmpFile%")

Set "tmpFile=%TEMP%\password2.txt"
PowerShell.exe -Command $pword2 = read-host "Confirme su clave de desbloqueo " -AsSecureString ; ^
    $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; ^
        [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > "%tmpFile%"
(Set /P password2=<"%tmpFile%") & (Del /Q "%tmpFile%")

if %password%==%password2% (goto CREAR) else goto DIFERENTES

:CREAR

echo %password% > clave.txt
attrib +h +s clave.txt

md LOCKEDFOLDER
echo.
echo     Carpeta privada creada con exito 
echo.
echo  ^< Presione una tecla para finalizar ^>
pause >nul
goto End

:DIFERENTES

echo.
echo     Las claves no coinciden
echo.
echo  ^< Presione una tecla para finalizar ^>
pause >nul
goto End

:LEER

    SET Reg=%~1   
    GOTO:EOF

:End


El problema con este código es que al ejecutarlo al primera vez siempre en lugar de pedir que establezca la contraseña me manda a confirmar, podrian ayudarme a ver que esta mal, gracias
$Diseñando_vida

while(vivas)
{
       Come();
       //Duerme();
       Programa();
       Repite();
}