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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  ocultar texto en bat
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ocultar texto en bat  (Leído 8,077 veces)
gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
ocultar texto en bat
« en: 9 Septiembre 2014, 00:37 am »

Hola, estoy creando un pequeño script para ocultar el ejecutable de un juego. Todo funciona perfectamente, pero me gustaría saber como ocultar o poner asteriscos cuando escribo la contraseña.

Este es el script:

Código
  1. cls
  2. @ECHO OFF
  3. title File Locker
  4. if EXIST "test.txt" goto NOTLOCKED
  5. if NOT EXIST "test.txt" goto LOCKED
  6. :NOTLOCKED
  7. color 02
  8. cls
  9. echo Game is not locked
  10. echo ==================
  11. echo [ *] Lock the game? (Yes/No)
  12. echo [ *] Play now? (Play/No)
  13. set /p "op=>"
  14. if %op%==Yes goto LOCK
  15. if %op%==yes goto LOCK
  16. if %op%==No goto END
  17. if %op%==no goto END
  18. if %op%==Play goto PLAY
  19. if %op%==play goto PLAY
  20. goto NOTLOCKED
  21. :LOCKED
  22. color 02
  23. cls
  24. echo Game is locked
  25. echo ==============
  26. echo [ *] Unlock the game? (Yes/No)
  27. set /p "op=>"
  28. if %op%==Yes goto UNLOCK
  29. if %op%==yes goto UNLOCK
  30. if %op%==No goto END
  31. if %op%==no goto END
  32. goto LOCKED
  33. :LOCK
  34. ren test.txt "Pprotected"
  35. attrib +h +s "Pprotected"
  36. cls
  37. echo Game Locked...
  38. timeout /t 2 /nobreak > NUL
  39. goto END
  40. :UNLOCK
  41. cls
  42. echo Enter password to unlock the game
  43. set /p "pass=>"
  44. if NOT %pass%== abc goto FAIL
  45. attrib -h -s "Pprotected"
  46. ren "Pprotected" test.txt
  47. goto QPLAY
  48. :QPLAY
  49. cls
  50. echo Wanna play now? (Yes/No)
  51. set /p "play=>"
  52. if %play%==Yes goto PLAY
  53. if %play%==yes goto PLAY
  54. if %play%==No goto END
  55. if %play%==no goto END
  56. goto QPLAY
  57. :PLAY
  58. start test.txt
  59. goto END
  60. :FAIL
  61. echo Invalid password
  62. goto End
  63. :END

He estado viendo en algunos foros scripts que funcionan, pero realmente no se como adaptarlos a lo que quiero.

Agradecería cualquier consejo para mejorar y simplificar el script.

Gracias.


« Última modificación: 9 Septiembre 2014, 02:20 am por Eleкtro » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.809



Ver Perfil
Re: ocultar texto en bat
« Respuesta #1 en: 9 Septiembre 2014, 02:39 am »

He estado viendo en algunos foros scripts que funcionan, pero realmente no se como adaptarlos a lo que quiero.

La solución más sencilla, simplificada y eficiente sería la siguiente:

Puedes usar la utilidad EditVar (x86 o x64 dependiendo de tu SO) > http://www.westmesatech.com/editv.html

Código
  1. CHCP 1252 >NUL
  2. editv64 -m -p "Esciba la contraseña >>" "PASSWORD"
  3. Echo %PASSWORD%



Otra solución igual de simplificada y eficiente sería -> esta <- pero necesitas un objeto ActiveX que parece existir solamente en XP.

El resto de códigos, los cuales la mayoria son bastante largos, incómodos, y poco fiables, elaboraciones de casi cien lineas en algunos casos, ese tipo de códigos no me voy a molestar ni siquiera en nombrarlos, esto es Batch, un lenguaje simple que no fue diseñado para este tipo de tareas, si quieres hacer algo así la alternativa más fiable es depender de una aplicación de terceros (desarrollada en un lenguaje de verdad) como la que mencioné al principio.



Agradecería cualquier consejo para mejorar y simplificar el script.

Código
  1. if %op%==Yes goto LOCK
  2. if %op%==yes goto LOCK

Realizar comparaciones de esa manera no tienen sentido, puedes desactivar la distinción de mayusculas minúsculas con el parámetro /I :
Código
  1. If /I "%op%" EQU "Yes" (Goto :Lock)

Aunque directamente, deberías utilizar el comando CHOICE para ese tipo de preguntas:

Código
  1. Choice /C "YN" /M "[ *] Unlock the game? (Yes/No)"
  2. If %ErrorLevel% EQU 1 (...) Else (...)

Código
  1. :PLAY
  2. start test.txt

No estás utilizando la sintaxis correcta que especifica el comando, échale un ojo a la ayuda del comando:
Código
  1. Start /?
  2. Start "" ".\Test.txt"

Pero de todas formas es innecesario el uso de dicho comando, basta con escribir:
Código
  1. ".\Test.txt"

Citar
Código
  1. if EXIST "test.txt" goto NOTLOCKED
  2. if NOT EXIST "test.txt" goto LOCKED

Ese tipo de repetición de código es innecesaria, debes utilizar ELSE.

Código
  1. Call :CheckLocked ".\Test.txt"
  2.  
  3. :CheckLocked
  4. If /I EXIST "%~f1" (call :NOTLOCKED) Else (call :LOCKED)
  5. Goto :EOF

saludos


« Última modificación: 9 Septiembre 2014, 02:54 am por Eleкtro » En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: ocultar texto en bat
« Respuesta #2 en: 10 Septiembre 2014, 13:44 pm »

Gracias, era lo que me esperaba, voy a utilizar esa aplicación. Tambien gracias por los consejos, parece que de esa manera funcionará mucho mejor el script, ya que lo voy a compilar y tiene que estar bien hecho.

Edito: Tengo un pequeño problema, y es que parece que la secuencia se repite en algun punto una sola vez, cuando se llama a la funcion END vuelve otra vez al principio, pero solo pasa una vez. No sé que puede ser.

A parte, cuando existe el archivo test.txt y escribes n(o) deberia terminar, pero por alguna razón aparece el siguiente menu, como si hubieras escrito s(i)

Código
  1. Cls
  2. @Echo OFF
  3. title File Locker
  4. Call :CheckLocked ".\Test.txt"
  5. :CheckLocked
  6. If /I EXIST "%~f1" (call :NOTLOCKED) Else (call :LOCKED)
  7. Goto :EOF
  8. :NOTLOCKED
  9. Color 02
  10. Cls
  11. Echo Game is not locked
  12. Echo ==================
  13. Echo [*] Lock the game? [Y/N]
  14. Echo [*] Play now? [Play/N]
  15. Set /p "op=>"
  16. If /I "%op%" EQU "Y" (Goto :LOCK)
  17. If /I "%op%" EQU "N" (Goto :END)
  18. If /I "%op%" EQU "Play" (".\Test.txt")
  19. Goto :NOTLOCKED
  20. :LOCKED
  21. Color 02
  22. Cls
  23. Echo Game is locked
  24. Echo ==============
  25. Choice /C "YN" /M "Unlock the game? "
  26. If %ErrorLevel% EQU 1 (Goto :UNLOCK) Else (Goto :END)
  27. Goto LOCKED
  28. :LOCK
  29. Ren test.txt "Pprotected"
  30. Attrib +h +s "Pprotected"
  31. Cls
  32. Echo Game Locked...
  33. Timeout /t 2 /nobreak > NUL
  34. Goto END
  35. :UNLOCK
  36. Cls
  37. EditV64 -m -p "Enter the password to unlock the game: " "pass"
  38. If NOT "%pass%" EQU "abc" (Goto :FAIL)
  39. Attrib -h -s "Pprotected"
  40. ren "Pprotected" test.txt
  41. Goto :QPLAY
  42. :QPLAY
  43. Cls
  44. Choice /C "YN" /M "Wanna play now? "
  45. If %ErrorLevel% EQU 1 (".\Test.txt") Else (Goto :END)
  46. Goto :END
  47. :FAIL
  48. Echo Invalid password
  49. Timeout /t 2 /nobreak > NUL
  50. Goto :END
  51. :END
« Última modificación: 10 Septiembre 2014, 15:10 pm por gAb1 » En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: ocultar texto en bat
« Respuesta #3 en: 10 Septiembre 2014, 15:20 pm »

¿Por casualidad no sabrás por qué me da este error?

Citar
Error 216: This version of "C:\Users\HOME~1\AppData\Local\Temp\afolder\EditV64
.exe" is not compatible with the version of Windows you're running. Check your c
omputer's system information and then contact the software publisher.
Invalid password

Tal y como me dice la aplicación que uso para compilar - Advanced BAT to EXE Converter (v.91) - Utilizo la variable de entorno: %MYFILES%\EditV64

Sin compilar funciona perfectamente, tambien he probado a usar el editv64 de la carpeta temporal y tambien funciona. Es un problema del .exe o del compilador...

¿Alguna ayuda?
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.809



Ver Perfil
Re: ocultar texto en bat
« Respuesta #4 en: 10 Septiembre 2014, 16:08 pm »

Tengo un pequeño problema, y es que parece que la secuencia se repite en algun punto una sola vez, cuando se llama a la funcion END vuelve otra vez al principio, pero solo pasa una vez. No sé que puede ser.

Has de saber distinguir el uso de una llamada CALL de un GOTO.

El problema es que cuando haces un CALL al bloque :CheckLocked,
este a su vez hace un CALL al bloque :NOTLOCKED o al bloque :LOCKED,
y el problema es que en ambos bloques :NOTLOCKED/:LOCKED haces un GOTO a :END,
al no contener instrucciones el bloque :END, la llamada del CALL se acaba y vuelve al punto de inicio de ese CALL, es lo mismo que un GOTO:EOF.

Para solucionarlo:

Código
  1. :END

A parte, cuando existe el archivo test.txt y escribes n(o) deberia terminar, pero por alguna razón aparece el siguiente menu, como si hubieras escrito s(i)

Es el mismo error que he comentado arriba, no estás terminando la ejecución del script, solo estás terminando una llamada a un bloque (CALL) así que vuelves a la linea en donde iniciaste ese CALL.



¿Por casualidad no sabrás por qué me da este error?

Citar
Error 216: This version of "C:\Users\HOME~1\AppData\Local\Temp\afolder\EditV64
.exe" is not compatible with the version of Windows you're running. Check your c
omputer's system information and then contact the software publisher.
Invalid password

Me he fijado en que la versión de Editv32 y Editv64 son la misma (3.0.0.0), pero la versión de 32 Bits parece no funcionar o bien en Windows 8/81 o bien en equipos de 64 Bits (no lo he comprobado a fondo).

Solo el propio desarrollador sabrá porque motivo ha querido imponer esa denegación de ejecución de la versión de 32 Bits, pero en caso de que no sea una limitación de uso en "X" versión de Windows entonces esto debería funcionar:

Código
  1. :: X86
  2. If Not Defined ProgramW6432 (
  3. REM Ejecutar Editv32.exe
  4. )
  5.  
  6. :: x64
  7. If Defined ProgramW6432 (
  8. REM Ejecutar Editv64.exe
  9. )

PD: No he echo la prueba en un Windows 7/8 x86.

Saludos
« Última modificación: 10 Septiembre 2014, 16:11 pm por Eleкtro » En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: ocultar texto en bat
« Respuesta #5 en: 10 Septiembre 2014, 19:05 pm »

Cierto, que error más tonto... ahora ya se la diferencia de CALL y GOTO :)

Respecto al programa, es extraño porque funciona bien desde el archivo .bat y el sistema operativo es windows 8.1 pro 64. El ordenador donde lo voy a usar es un windows 7 profesional 64.

El problema es que me sale ese error cuando lo ejecuto desde el archivo compilado .exe

Lo que no sé es donde utilizar eso que me has dicho, ¿en que parte del script lo pongo?

Gracias.

Edito: ¿Tal vez deba añadir el programa a la variable del entorno y moverlo a la carpeta del sistemta? Porque funciona perfectamente si se usa con el archivo bat...

Edito 2: Al final he encontrado un trozo de codigo, al parecer es powershell pero funciona perfectamente.

Código
  1. set "psCommand=powershell -Command "$pword = read-host 'Enter Password' -AsSecureString ; ^
  2.    $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword); ^
  3.        [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)""
  4. for /f "usebackq delims=" %%p in (`%psCommand%`) do set password=%%p
  5. If NOT "%password%" EQU "abc" (Goto :FAIL)
« Última modificación: 11 Septiembre 2014, 00:28 am por gAb1 » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.809



Ver Perfil
Re: ocultar texto en bat
« Respuesta #6 en: 15 Septiembre 2014, 05:06 am »


Edito 2: Al final he encontrado un trozo de codigo, al parecer es powershell pero funciona perfectamente.

Código
  1. set "psCommand=powershell -Command "$pword = read-host 'Enter Password' -AsSecureString ; ^
  2.    $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword); ^
  3.        [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)""
  4. for /f "usebackq delims=" %%p in (`%psCommand%`) do set password=%%p
  5. If NOT "%password%" EQU "abc" (Goto :FAIL)

Solo comento para decir muy pero que muy buena alternativa, pero como siempre en Batch se debe recurrir a la utilización de otro lenguaje y/o herramienta externa para llevar a cabo algunos propósitos de forma eficiente.

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ocultar texto en ventana ajena
Programación Visual Basic
Hendrix 0 1,155 Último mensaje 6 Agosto 2006, 21:01 pm
por Hendrix
Ocultar texto con * asteriscos en el cmd (archivo .bat)
Scripting
adninc5 5 22,065 Último mensaje 5 Julio 2014, 15:47 pm
por Herke
Ocultar texto de entrada en consola
GNU/Linux
d00ze13 1 5,257 Último mensaje 25 Octubre 2010, 17:05 pm
por d00ze13
Ocultar caja de texto
Desarrollo Web
davis17 5 9,804 Último mensaje 26 Noviembre 2012, 15:44 pm
por Shell Root
Duda: Como convertir texto a texto grande para mostrar en la consola.
Dudas Generales
zinfinal 4 4,127 Último mensaje 23 Abril 2014, 18:32 pm
por Pablo Videla
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines