elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ayuda, algo anda mal con mi programa batch
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda, algo anda mal con mi programa batch  (Leído 1,961 veces)
Baphomet2204

Desconectado Desconectado

Mensajes: 56


Programo luego existo


Ver Perfil
Ayuda, algo anda mal con mi programa batch
« en: 1 Marzo 2019, 18:10 pm »

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.

Código:
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í:

Código:
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


En línea

$Diseñando_vida

while(vivas)
{
       Come();
       //Duerme();
       Programa();
       Repite();
}
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con programa batch
Scripting
pkzz 2 3,265 Último mensaje 27 Febrero 2006, 17:08 pm
por pkzz
Ayuda con mi programa en batch
Scripting
Meine programmen 0 1,537 Último mensaje 17 Diciembre 2011, 22:16 pm
por Meine programmen
Ayuda con programa en batch
Scripting
MPG.h 3 2,475 Último mensaje 16 Febrero 2012, 19:33 pm
por MPG.h
ayuda con algo sencillo (batch)
Scripting
ekeo8 0 1,972 Último mensaje 3 Diciembre 2015, 19:52 pm
por ekeo8
Anda mal el IF, o estoy haciendo algo mal? Visual 6.0
Programación Visual Basic
RiasChan 4 2,413 Último mensaje 12 Marzo 2018, 17:30 pm
por RiasChan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines