Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: maty_16_94 en 27 Abril 2009, 11:12 am



Título: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: maty_16_94 en 27 Abril 2009, 11:12 am
Bueno estoy haciendo un proyecto que despues capas postee y necesito utilizar un passwordchar (asteriscos q reemplazan los caracteres en una contraseña) pero no se me ocurre como hacer Denme una ayuda please!


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: Novlucker en 27 Abril 2009, 13:33 pm
Se me ocurre mezclandolo con vbs  :P

Código
  1. @echo off
  2. echo ^Set objPassword = CreateObject("ScriptPW.Password") >> %temp%\temp.vbs
  3. echo WScript.StdOut.Write "Por favor, introduzca una contraseña:" >> %temp%\temp.vbs
  4. echo strPassword = objPassword.GetPassword() >> %temp%\temp.vbs
  5. echo ^set objfso = createobject("scripting.filesystemobject") >> %temp%\temp.vbs
  6. echo ^set atemp = objfso.createtextfile(objfso.getspecialfolder(2) ^& "\pass.txt",true) >> %temp%\temp.vbs
  7. echo atemp.write strPassword:atemp.close >> %temp%\temp.vbs
  8. cscript /nologo %temp%\temp.vbs
  9. more %temp%\pass.txt
  10. del %temp%\pass.txt
  11. del %temp%\temp.vbs
  12. pause

Este "passwordchar" lo que hace es no mostrar lo que se ingresa en pantalla  :P

Saludos


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: EddyW en 27 Abril 2009, 16:50 pm
Ho, ni siquiera se me ocurrio hacer eso con VBS..
no sabia para que era GetPassword(), gracias, tambien me ayudaste, yo lo hacia de otra forma pero esta, esta mejor..
con tu permiso mas tarde modifico mi tuto y le agrego esto, OK.
SaluDOS!!!


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: Novlucker en 27 Abril 2009, 16:56 pm
Claro, "No problema"  ;D

Saludos


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: maty_16_94 en 28 Abril 2009, 06:10 am
Gracias Nov... ya solucione el problema con un codigo de carlos  o algo asi :P
gracias de todos modos...
el code q use es este.Vuelvo a aclarar q no es mio

Código:
@echo off
Title Usando Asteriscos en una Clave
::Escrito por Carlos

if not exist "reply.exe" (call:reply)
setlocal
set PWL=
set letra=
set/a contador=0
set /a TAM=10
set PASSWORD=

call:prompt

:inicio
reply.exe
set letra=%errorlevel%
if [%letra%]==[13] (goto:fin) else (call:ascii %letra%)
goto:eof

:fin
echo.
set/p pass=Password <nul
if [%PASSWORD%]==[%PWL%] (set/p pass=correcta<nul) else (set/p pass=incorrecta<nul)
echo.
pause
goto menu

goto:eof

:ascii
if %1==8 (call:borrar)
if %contador% GEQ %TAM% (goto:inicio)
if %1==48 (set PWL=%PWL%0&goto:contador)
if %1==49 (set PWL=%PWL%1&goto:contador)
if %1==50 (set PWL=%PWL%2&goto:contador)
if %1==51 (set PWL=%PWL%3&goto:contador)
if %1==52 (set PWL=%PWL%4&goto:contador)
if %1==53 (set PWL=%PWL%5&goto:contador)
if %1==54 (set PWL=%PWL%6&goto:contador)
if %1==55 (set PWL=%PWL%7&goto:contador)
if %1==56 (set PWL=%PWL%8&goto:contador)
if %1==57 (set PWL=%PWL%9&goto:contador)
if %1==65 (set PWL=%PWL%A&goto:contador)
if %1==66 (set PWL=%PWL%B&goto:contador)
if %1==67 (set PWL=%PWL%C&goto:contador)
if %1==68 (set PWL=%PWL%D&goto:contador)
if %1==69 (set PWL=%PWL%E&goto:contador)
if %1==70 (set PWL=%PWL%F&goto:contador)
if %1==71 (set PWL=%PWL%G&goto:contador)
if %1==72 (set PWL=%PWL%H&goto:contador)
if %1==73 (set PWL=%PWL%I&goto:contador)
if %1==74 (set PWL=%PWL%J&goto:contador)
if %1==75 (set PWL=%PWL%K&goto:contador)
if %1==76 (set PWL=%PWL%L&goto:contador)
if %1==77 (set PWL=%PWL%M&goto:contador)
if %1==78 (set PWL=%PWL%N&goto:contador)
if %1==79 (set PWL=%PWL%O&goto:contador)
if %1==80 (set PWL=%PWL%P&goto:contador)
if %1==81 (set PWL=%PWL%Q&goto:contador)
if %1==82 (set PWL=%PWL%R&goto:contador)
if %1==83 (set PWL=%PWL%S&goto:contador)
if %1==84 (set PWL=%PWL%T&goto:contador)
if %1==85 (set PWL=%PWL%U&goto:contador)
if %1==86 (set PWL=%PWL%V&goto:contador)
if %1==87 (set PWL=%PWL%W&goto:contador)
if %1==88 (set PWL=%PWL%X&goto:contador)
if %1==89 (set PWL=%PWL%Y&goto:contador)
if %1==90 (set PWL=%PWL%Z&goto:contador)
if %1==97 (set PWL=%PWL%a&goto:contador)
if %1==98 (set PWL=%PWL%b&goto:contador)
if %1==99 (set PWL=%PWL%c&goto:contador)
if %1==100 (set PWL=%PWL%d&goto:contador)
if %1==101 (set PWL=%PWL%e&goto:contador)
if %1==102 (set PWL=%PWL%f&goto:contador)
if %1==103 (set PWL=%PWL%g&goto:contador)
if %1==104 (set PWL=%PWL%h&goto:contador)
if %1==105 (set PWL=%PWL%i&goto:contador)
if %1==106 (set PWL=%PWL%j&goto:contador)
if %1==107 (set PWL=%PWL%k&goto:contador)
if %1==108 (set PWL=%PWL%l&goto:contador)
if %1==109 (set PWL=%PWL%m&goto:contador)
if %1==110 (set PWL=%PWL%n&goto:contador)
if %1==111 (set PWL=%PWL%o&goto:contador)
if %1==112 (set PWL=%PWL%p&goto:contador)
if %1==113 (set PWL=%PWL%q&goto:contador)
if %1==114 (set PWL=%PWL%r&goto:contador)
if %1==115 (set PWL=%PWL%s&goto:contador)
if %1==116 (set PWL=%PWL%t&goto:contador)
if %1==117 (set PWL=%PWL%u&goto:contador)
if %1==118 (set PWL=%PWL%v&goto:contador)
if %1==119 (set PWL=%PWL%w&goto:contador)
if %1==120 (set PWL=%PWL%x&goto:contador)
if %1==121 (set PWL=%PWL%y&goto:contador)
if %1==122 (set PWL=%PWL%z&goto:contador)
goto:inicio

:contador
set/a contador+=1
call:asterisc
goto:inicio

:borrar
if %contador% LEQ 0 (goto:eof)
set/a contador-=1
call:prompt
for /l %%a in (1,1,%contador%) do (call:asterisc)
set PWL=%PWL:~0,-1%
goto:eof

:reply
(
echo n reply.dat
echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
echo e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
echo rcx
echo 002E
echo w0
echo q
echo.
)>reply.dat
type reply.dat|debug>NUL 2>&1
del/f/q/a "REPLY.EXE">NUL 2>&1
ren reply.dat "REPLY.EXE"
goto:eof

:prompt
cls
set/p pass=Enter password:<nul
goto:eof

:asterisc
set/p pass=*<nul
goto:eof


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: EddyW en 28 Abril 2009, 06:17 am
Ok, esta bien, yo tengo otro code con menos lineas de comandos haber que tal va ahora lo posteo..
un momento..

EDIT:
Mi code se frego lo siento tendra que ser despues, dirigi la salida de comandos al mismo batch y se borro..


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: maty_16_94 en 28 Abril 2009, 07:07 am
xDD No problm...


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: EddyW en 28 Abril 2009, 07:12 am
Ok, lo posteo igual otro dia, el mio no hacia CLS no se veia la pantalla parpadeando..
y el code ese se puede simplificar un poco mas..
SaluDOS!!!


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: Novlucker en 28 Abril 2009, 13:00 pm
Si, ese Carlos  es del foro, y todo el tiempo esta sacandole provecho a batch  :rolleyes:

Saludos


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: 0x0309 en 28 Abril 2009, 13:07 pm
Conozco otra forma de hacerlo también en batch, que es usando batch, debug, ansi.sys, command.com, aunque no lo he probado, pero pienso que debe funcionar. Si a alguien le interesa lo posteo, sino no.



Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: EddyW en 28 Abril 2009, 19:11 pm
Conozco otra forma de hacerlo también en batch, que es usando batch, debug, ansi.sys, command.com, aunque no lo he probado, pero pienso que debe funcionar. Si a alguien le interesa lo posteo, sino no.


Si sobre eso este post, postea ese code claro que nos interesa, yo igual posteare el mio solo que tiene un pequeño error que le arreglare luego..
SaluDOS!!!


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: maty_16_94 en 29 Abril 2009, 02:57 am
Conozco otra forma de hacerlo también en batch, que es usando batch, debug, ansi.sys, command.com, aunque no lo he probado, pero pienso que debe funcionar. Si a alguien le interesa lo posteo, sino no.



Post it please!


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: EddyW en 29 Abril 2009, 03:41 am
Para no abrir tantos post sobre el tema lo posteare aqui y asi para el proximo que pregunte los mismo le damos este post de referencia...
OK, ya arregle mi code lo simplifique lo mas que pude con menos lineas..
Código
  1. echo off
  2. title .:: Usando PasswordChar en una Clave BY 3D1 ::.
  3. del /F /Q /A %tmp%\key.exe >nul 2>&1
  4. del /F /Q /A %tmp%\key.dat >nul 2>&1
  5. del /F /Q /A %tmp%\Key.vbs >nul 2>&1
  6. del /F /Q /A %tmp%\Key.txt >nul 2>&1
  7. (
  8. echo n key.dat
  9. echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
  10. echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
  11. echo e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
  12. echo rcx
  13. echo 002E
  14. echo w0
  15. )>%tmp%\key.dat
  16. (
  17. echo cd %tmp%\
  18. echo cls
  19. echo type key.dat^|debug^>NUL 2^>^&1
  20. echo ren key.dat KEY.EXE
  21. echo del %%0
  22. )>%tmp%\key.bat
  23. start /MIN %comspec% /c %tmp%\key.bat
  24.  
  25. cls
  26. set /a numchar=0
  27. set /p passw=<nul
  28. set /p=Escriba su contraseña:<nul
  29. :k
  30. key
  31. if %errorlevel%==13 (
  32. goto :m
  33. )
  34. if %errorlevel%==8 (
  35. if %numchar%==0 (
  36. goto :k
  37. ) else (
  38. echo wscript.stdout.write chr(8^) ^& chr(32^) ^& chr(8^) >%tmp%\Key.vbs
  39. cscript //nologo %tmp%\Key.vbs
  40. set /a numchar=%numchar%-1
  41. (
  42. echo set obj = CreateObject("Scripting.filesystemobject"^)
  43. echo x = obj.opentextfile("%tmp%\Key.txt"^).Readline
  44. echo obj.Createtextfile("%tmp%\Key.txt", true^).write mid(x,1,len(x^)-1^)
  45. )>%tmp%\Key.vbs
  46. wscript %tmp%\Key.vbs
  47. )
  48. ) else (
  49.  
  50. set /p"=*"<nul
  51.  
  52. echo wscript.stdout.write chr(%errorlevel%^) >%tmp%\Key.vbs
  53. cscript //nologo %tmp%\Key.vbs>>%tmp%\Key.txt
  54. set /a numchar=%numchar%+1
  55. )
  56. goto :k
  57. :m
  58. set /p PWD=<%tmp%\Key.txt
  59. del /F /Q /A %tmp%\key.exe >nul 2>&1
  60. del /F /Q /A %tmp%\key.dat >nul 2>&1
  61. del /F /Q /A %tmp%\Key.vbs >nul 2>&1
  62. del /F /Q /A %tmp%\Key.txt >nul 2>&1
  63.  
  64. :::::::::::::::::::::::::::::::::::::::::::::::::::::
  65. :::: .:: Usando PasswordChar en una Clave ::.    ::::
  66. :::::::::::::::::::::::::::::::::::::::::::::::::::::
  67. :::: Aqui va el resto del code...                ::::
  68. :::: la password se almacena en la variable PWD  ::::
  69. :::: puede cambiar el nombre a la variable PWD   ::::
  70. :::: por otra y no influira en el cambio del code::::
  71. :::::::::::::::::::::::::::::::::::::::::::::::::::::
  72.  
  73. msg * %PWD%
Como ven al final la password se va a la variable PWD pueden cambiarla si quieren, no arruinara el code...
y en vez de los asteriscos tambien pueden usar otro caracter modificando esta parte del code:
Código:
set /p"=*"<nul
solo reemplazando * por otro caracter, puede ser por puntos la carita feliz, signos de interrogacion o alguna letra o numero, igual funciona..
SaluDOS!!!
PD: Espero les guste lo simplifique lo mas que pude para que pueda ser modificable para el gusto de cada uno..


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: leogtz en 29 Abril 2009, 18:20 pm
Aqui un codigo que hace lo mismo, es de Timo Salmi:
Código:
@echo off & setlocal enableextensions
:: Build a Visual Basic Script
set vbs_=%temp%\tmp$$$.vbs
set skip=
findstr "'%skip%VBS" "%~f0" > "%vbs_%"
::
:: Prompting without linefeed as in Item #15
echo.|set /p="Password: "
:: Run the script with Microsoft Windows Script Host Version 5.6
for /f "tokens=* delims=" %%a in ('
  cscript //nologo "%vbs_%"') do set MyPass1=%%a
::
echo.
echo.|set /p="Retype  : "
for /f "tokens=* delims=" %%a in ('
  cscript //nologo "%vbs_%"') do set MyPass2=%%a
::
:: Clean up
for %%f in ("%vbs_%") do if exist %%f del %%f
::
:: Demonstrate the result
echo.
if "%MyPass1%"=="%MyPass2%" (
  echo The entered password was %MyPass1%
  ) else (
  echo No match)
endlocal & goto :EOF
'
'The Visual Basic Script
Set WshPass = WScript.CreateObject("ScriptPW.Password") 'VBS
Password=WshPass.GetPassWord() 'VBS
WScript.Echo PassWord 'VBS
Salida:

Código:
C:\>code
Password:
Retype  :
The entered password was Leo

C:\>


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: EddyW en 29 Abril 2009, 18:29 pm
Ese no muestra asteriscos, es igual al que posteo NovLucker...
solo no muestra lo que escribes..
SaluDOS!!!


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: 0x0309 en 29 Abril 2009, 18:53 pm
Conozco otra forma de hacerlo también en batch, que es usando batch, debug, ansi.sys, command.com, aunque no lo he probado, pero pienso que debe funcionar. Si a alguien le interesa lo posteo, sino no.



Post it please!

Aquí está el código:
http://foro.elhacker.net/scripting/batchfuncion_password-t253336.0.html

Ese no muestra asteriscos, es igual al que posteo NovLucker...
solo no muestra lo que escribes..
SaluDOS!!!
Unix like.


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: Novlucker en 29 Abril 2009, 19:09 pm
Ese no muestra asteriscos, es igual al que posteo NovLucker...
solo no muestra lo que escribes..
SaluDOS!!

Si, pero igualmente esta un poco más prolijo y se nota más el trabajo en batch  :P


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: leogtz en 29 Abril 2009, 19:25 pm
Para mi mejor, que no muestre asteriscos.  ::)


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: 0x0309 en 29 Abril 2009, 21:12 pm
el código de timo pienso que tiene un problema, que es cuando presionas backspace.

Por ejemplo:
si escribes en la primera password:
qbasic
y en la segunda escribes:
qbasic[backspace,borramos la c]c
dice que no concuerdan.



Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: EddyW en 30 Abril 2009, 02:55 am
el código de timo pienso que tiene un problema, que es cuando presionas backspace.

Por ejemplo:
si escribes en la primera password:
qbasic
y en la segunda escribes:
qbasic[backspace,borramos la c]c
dice que no concuerdan.


Si yo tambien le acabo de notar ese error..
Para mi mejor, que no muestre asteriscos.  ::)
Bueno eso a veces depende, ahi veces que ise Batch que te piden user y pass y como hay users inexpertos como no se ven los asteriscos
dicen que no escribe o no funciona el code...
SaluDOS!!!


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: Nucleorion en 19 Mayo 2014, 18:45 pm
Aunque han pasado años considero que es mejor dejar aqui mi duda y mi contribución.

Los codigos que usaban vbs no me han funcionado. Supongo que tendria que modificar la ruta donde se aloja el bat o algo, ya que me decia que faltaba el archivo .vbs

Como me funcionó el codigo escrito exclusivamente en batch, posteado por maty_16_94 decidí usarlo. Tuve que hacer algunos cambios ya que necesitaba que si se metia la clave se cargase un menu y si no, no. Tambien me pareció oportuno que si se cometia un error al introducir la clave te diese mas oportunidades.

Aunque el codigo funciona hay algo que no entiendo y no me conformo con que funcione, me gustaria entenderlo, jejeje. Y tambien, si he cometido alguna barbaridad, saberlo y corregirla :P

¿Porque se ejecuta la etiqueta reinicio antes de cometer ningun fallo? En un principio iba a duplicar esas lineas pero al meter un pause en la etiqueta reinicio vi que se ejecuta nada mas arrancar. Luego hice el contador de errores y ya puedo mostrar el texto de clave incorrecta, pero me ha quedado esa duda.

Es la primera vez que uso call, supongo que por ahi se me escapa algo.

Tambien me gustaria saber que hace el archivo reply.exe


Código
  1. @echo off
  2. Title Usando Asteriscos en una Clave
  3. ::Escrito por Carlos inicialmente
  4.  
  5. set /a intentos=3
  6. set MensajeIntoduzcaClave="Introduzca la clave de acceso:"
  7.  
  8. :reinicio
  9. if not exist "reply.exe" (call:reply)
  10. set PWL=
  11. set letra=
  12. set/a contador=0
  13. set /a TAM=10
  14. set PASSWORD=1234
  15. call:prompt
  16.  
  17. :inicio
  18. reply.exe
  19. set letra=%errorlevel%
  20. if [%letra%]==[13] (goto:fin) else (call:ascii %letra%)
  21. goto:eof
  22.  
  23. :fin
  24. rem set/p pass=Password <nul
  25. if [%PASSWORD%]==[%PWL%] (
  26. goto:correcta
  27. ) else (
  28. goto:incorrecta
  29. )
  30. goto:eof
  31.  
  32. :correcta
  33. cls
  34. goto Menu
  35. goto:eof
  36.  
  37. :incorrecta
  38. echo Clave incorrecta.
  39. if /i 1 leq %intentos% (
  40. set /a intentos=%intentos%-1
  41. echo Numero de intentos restantes=%intentos%
  42. echo Pulsa una tecla para volver a probar.
  43. pause>nul
  44. goto reinicio
  45. ) else (
  46. echo Se ha superado el numero de intentos.
  47. pause>nul
  48. )
  49.  
  50. :ascii
  51. if %1==8 (call:borrar)
  52. if %contador% GEQ %TAM% (goto:inicio)
  53. if %1==48 (set PWL=%PWL%0&goto:contador)
  54. if %1==49 (set PWL=%PWL%1&goto:contador)
  55. if %1==50 (set PWL=%PWL%2&goto:contador)
  56. if %1==51 (set PWL=%PWL%3&goto:contador)
  57. if %1==52 (set PWL=%PWL%4&goto:contador)
  58. if %1==53 (set PWL=%PWL%5&goto:contador)
  59. if %1==54 (set PWL=%PWL%6&goto:contador)
  60. if %1==55 (set PWL=%PWL%7&goto:contador)
  61. if %1==56 (set PWL=%PWL%8&goto:contador)
  62. if %1==57 (set PWL=%PWL%9&goto:contador)
  63. if %1==65 (set PWL=%PWL%A&goto:contador)
  64. if %1==66 (set PWL=%PWL%B&goto:contador)
  65. if %1==67 (set PWL=%PWL%C&goto:contador)
  66. if %1==68 (set PWL=%PWL%D&goto:contador)
  67. if %1==69 (set PWL=%PWL%E&goto:contador)
  68. if %1==70 (set PWL=%PWL%F&goto:contador)
  69. if %1==71 (set PWL=%PWL%G&goto:contador)
  70. if %1==72 (set PWL=%PWL%H&goto:contador)
  71. if %1==73 (set PWL=%PWL%I&goto:contador)
  72. if %1==74 (set PWL=%PWL%J&goto:contador)
  73. if %1==75 (set PWL=%PWL%K&goto:contador)
  74. if %1==76 (set PWL=%PWL%L&goto:contador)
  75. if %1==77 (set PWL=%PWL%M&goto:contador)
  76. if %1==78 (set PWL=%PWL%N&goto:contador)
  77. if %1==79 (set PWL=%PWL%O&goto:contador)
  78. if %1==80 (set PWL=%PWL%P&goto:contador)
  79. if %1==81 (set PWL=%PWL%Q&goto:contador)
  80. if %1==82 (set PWL=%PWL%R&goto:contador)
  81. if %1==83 (set PWL=%PWL%S&goto:contador)
  82. if %1==84 (set PWL=%PWL%T&goto:contador)
  83. if %1==85 (set PWL=%PWL%U&goto:contador)
  84. if %1==86 (set PWL=%PWL%V&goto:contador)
  85. if %1==87 (set PWL=%PWL%W&goto:contador)
  86. if %1==88 (set PWL=%PWL%X&goto:contador)
  87. if %1==89 (set PWL=%PWL%Y&goto:contador)
  88. if %1==90 (set PWL=%PWL%Z&goto:contador)
  89. if %1==97 (set PWL=%PWL%a&goto:contador)
  90. if %1==98 (set PWL=%PWL%b&goto:contador)
  91. if %1==99 (set PWL=%PWL%c&goto:contador)
  92. if %1==100 (set PWL=%PWL%d&goto:contador)
  93. if %1==101 (set PWL=%PWL%e&goto:contador)
  94. if %1==102 (set PWL=%PWL%f&goto:contador)
  95. if %1==103 (set PWL=%PWL%g&goto:contador)
  96. if %1==104 (set PWL=%PWL%h&goto:contador)
  97. if %1==105 (set PWL=%PWL%i&goto:contador)
  98. if %1==106 (set PWL=%PWL%j&goto:contador)
  99. if %1==107 (set PWL=%PWL%k&goto:contador)
  100. if %1==108 (set PWL=%PWL%l&goto:contador)
  101. if %1==109 (set PWL=%PWL%m&goto:contador)
  102. if %1==110 (set PWL=%PWL%n&goto:contador)
  103. if %1==111 (set PWL=%PWL%o&goto:contador)
  104. if %1==112 (set PWL=%PWL%p&goto:contador)
  105. if %1==113 (set PWL=%PWL%q&goto:contador)
  106. if %1==114 (set PWL=%PWL%r&goto:contador)
  107. if %1==115 (set PWL=%PWL%s&goto:contador)
  108. if %1==116 (set PWL=%PWL%t&goto:contador)
  109. if %1==117 (set PWL=%PWL%u&goto:contador)
  110. if %1==118 (set PWL=%PWL%v&goto:contador)
  111. if %1==119 (set PWL=%PWL%w&goto:contador)
  112. if %1==120 (set PWL=%PWL%x&goto:contador)
  113. if %1==121 (set PWL=%PWL%y&goto:contador)
  114. if %1==122 (set PWL=%PWL%z&goto:contador)
  115. goto:inicio
  116.  
  117. :contador
  118. set/a contador+=1
  119. call:asterisc
  120. goto:inicio
  121.  
  122. :borrar
  123. if %contador% LEQ 0 (goto:eof)
  124. set/a contador-=1
  125. call:prompt
  126. for /l %%a in (1,1,%contador%) do (call:asterisc)
  127. set PWL=%PWL:~0,-1%
  128. goto:eof
  129.  
  130. :reply
  131. (
  132. echo n reply.dat
  133. echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
  134. echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
  135. echo e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
  136. echo rcx
  137. echo 002E
  138. echo w0
  139. )>reply.dat
  140. type reply.dat|debug>NUL 2>&1
  141. del/f/q/a "REPLY.EXE">NUL 2>&1
  142. ren reply.dat "REPLY.EXE"
  143. goto:eof
  144.  
  145. :prompt
  146. cls
  147. set/p pass=%MensajeIntoduzcaClave%<nul
  148. goto:eof
  149.  
  150. :asterisc
  151. set/p pass=*<nul
  152. goto:eof
  153.  
  154. :Menu
  155. echo  Menu:
  156. echo  1. Decir Hola
  157. echo  2. Decir Adios
  158. echo  0. Salir
  159. set /p var=Elige opcion:
  160. if %var%==1 goto hola
  161. if %var%==2 goto adios
  162. if %var%==0 exit
  163. goto Menu
  164.  
  165. :hola
  166. echo Hola
  167. goto Menu
  168.  
  169. :adios
  170. echo Adios
  171. goto Menu
  172.  
  173.  


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: Zomkar en 19 Mayo 2014, 21:38 pm
Antes de nada aclararte que, aunque yo lo uso mucho porque mi dominio de batch supera por mucho mi dominio de otro lenguaje, para cosas como las que quieres hacer batch se queda corto.

Aun asi:

Citar
¿Porque se ejecuta la etiqueta reinicio antes de cometer ningun fallo?

Batch se ejecuta linea a linea.

Por eso usar "call" no es buena idea porque se suele hacer:
IF condicion CALL :menu

pero resulta que no estás controlando que si el IF no cumple condicion, no vaya a :menu y entonces a donde va? a la linea siguiente.

En definitiva: lo ideal es controlar si has entrado al IF o al ELSE justo después de un CALL para saber si ha habido errores.
Otra opción es usar las variables llamadas ERRORLEVEL.
Tambien con goto:eof si se habia usado call, regresas a la posicion "original".

Para acabar, siendo que hay trozos de código en VBS, yo quizás probaria a aprender algo más de VBS (saber 1 poco es facil) y hacerlo todo en VBS.

En cuanto a reply.exe creo que se utiliza para leer alguna tecla especial como enter ya que:

Código
  1. :inicio
  2. reply.exe
  3. set letra=%errorlevel%
  4. if [%letra%]==[13] (goto:fin) else (call:ascii %letra%)

Si Errorlevel=13 quiere decir que la letra es la correcta para salir del bucle. Además, creo que sirve para, en función del codigo ASCII que retorne Errorlevel, saber qué letra ha pulsado el usuario. Lo que no sé es si no hay formas más elegantes de hacerlo.

PS: vale, si, hace eso si no me equivoco, buscar en memoria la tecla pulsada y almacenarla, pero con ASM

mas informacion: http://thestarman.pcministry.com/asm/debug/debug.htm#EXE


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: Nucleorion en 20 Mayo 2014, 11:31 am
Muchisimas gracias, te has explicado genialmente  :D

He programado en muchos lenguajes diferentes, como los patos ya sabes, nadan, corren y vuelan pero no destacan en nada :P

vbs no lo he tocado apenas. La proxima vez que vaya ha hacer algo en dos, pruebo a hacerlo en vbs. Espero que haya mas documentacion ya que es un lenguaje de programacion en si, porque en dos aparte la escueta documentacion casi sin ejemplos de:

http://technet.microsoft.com/en-us/library/bb490873.aspx

Lo demas que he encontrado esta disperso.


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: Zomkar en 20 Mayo 2014, 20:43 pm
Bueno, lo cierto es que en VBS hay más ejemplos que en DOS/Batch, pero también te vas a encontrar con el problema de que las documentaciones están orientadas a quien ya sabe usar las herramientas

Lo ideal, para mi, como con cualquier lenguaje, es aprender leyendo tutoriales, que no sean muy basicos pero que sobretodo usen ejemplos y los conceptos se te queden un poco y cuando quieras hacer un programa sepas por donde tirar.

Por ejemplo tutoriales asi:
http://foro.elhacker.net/scripting/tutorial_vbscript-t229032.0.html

por cierto para DOS hay muchas paginas pero si quieres ejemplos esta esta muy bien:
http://www.robvanderwoude.com/batchcommands.php


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: Nucleorion en 22 Mayo 2014, 12:50 pm
Gracias por los enlaces

Al probarlo en un sistema de 64bits me ha dado error el archivo reply.exe. Imagino que habria que programarlo diferente para 64bits. Creo que he encontrado la manera para detectar que arquitectura de sistema se esta usando con el comando %PROCESSOR_ARCHITECTURE% podria definir si se crea un reply u otro, pero no tengo ni idea de como hacer un reply para 64bits


Título: Re: (Batch) Es Posible hacer password char en batch? (Pregunta)
Publicado por: Zomkar en 22 Mayo 2014, 21:35 pm
yo tampoco, si no me equivoco se puede hacer en C:

-leer desde Memoria el valor de la tecla pulsada
-si es Enter devolver ERRORLEVEL 13
-si es retroceso borrar letra
-para el resto de caracteres ascii, devolver su valor en ERRORLEVEL
http://www.ascii-code.com/
(en el batch usan a partir de '0' que es 48 pero puedes hacer más si es que batch los admite)

en realidad se puede hacer todo el codigo en C pero para usarlo con este batch seria eso

compilas el codigo sobre la plataforma que vayas a usar (64) y te olvidas de la parte que crea el archivo.exe si se puede evitar porque para eso hay que saber un poco de ASM por lo menos

PS: si no creas el exe otra vez tendras que conseguir que te funcione y eso quizas no sea posible, prueba con propiedades->compatibilidad