Ayuda Como ocultar con asterisco (caracteres)

Iniciado por gurrumichi, 16 Diciembre 2012, 06:09 AM

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

gurrumichi

hola soy nuevo. soy un novato de el batch lo considero una excelente herramienta para el areia de automatizacion é eficiente, y lo estoy aprendiendo, y estoy haciendo mi 3° batch mas grande  ;D, pero primero voy explicar en que consiste mi batch lo llamo "Secure Folder" es un batch como muchos que andan por ahi para bloquear carpetas, pues lo mismo hace el mio pero con diferente forma,

Resulta que quiero que al momento de introducir el "Password" salgan asteriscos en vez de los caracteres. aqui en el foro ya observe un topic similar pero cabe decir que en mi batch no empleo el comando "for" por que no le entiendo ni "J".

cabe destacar que no a este codigo no le entendi mucho de como funciona, y si alguien me puede explicar de como funcionel comando "for"

el punto es: seria tan amable alguien de explicarme de como puedo ocultar esos caracteres de forma sencilla sin emplear una gran cantidad de codigo como este ?

Código (DOS) [Seleccionar]
@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



de antemano gracias

Eleкtro

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

Código (dos) [Seleccionar]
CHCP 1252 >NUL
editv64 -m -p "Esciba la contraseña >>" "PASSWORD"
Echo %PASSWORD%




Saludos.








Meine programmen

Respescto a lo de FOR, http://ss64.com/nt/ es una buena pagina, esta en ingles, pero es muy util.
REMEMBER! Reality is an illusion, the universe is a hologram, BUY GOLD! BYE!!


Binary_Death

El código que pusiste se puede acortar muchísimo. No es necesario meter una gran cantidad de líneas para hacer eso.

Mira la variable %=ExitCodeAscii% que te ahorra esa cantidad de condicionales ingente. Aquí puedes encontrar información sobre esas variables no documentadas: http://www.robvanderwoude.com/ntset.php

Yo personalmente, además de que no me gustan demasiado las aplicaciones de terceros en batch, no te recomendaría que crearas una dependencia para este caso.

Ahora, si dices que eres nuevo con batch y todavía no sabes hacerlo, pues bueno, entonces te recomiendo usar un script batch de otra persona, pero no uses un ejecutable.

Un código bastante pequeño podría ser este: http://byte-inside.blogspot.com.es/2011/01/batch-input-hidden-password.html

Aunque no muestra asteriscos, sino que directamente no muestra nada, como si estuvieras en telnet por ejemplo ;)

Un saludo.

gurrumichi

bueno vamos a probar con esto. aver como nos va  ;D  pero lo que no entiendo son el monton de caracteres como $ " " etc..

gurrumichi

#5
voy acer un poco mas directo con mi batch este es mi codigo que yo hice,

Código (DOS) [Seleccionar]
:login_pwd
if exist reporte.txt goto :denied
cls
echo.
echo -----------------------
echo :::: Secure Folder ::::
echo -----------------------
echo ::: Inicie  Sesion :::
echo.
echo ///////////////////////
echo //      Password.    //
echo ///////////////////////
echo --------------------------------
echo [ Olvido los Datos de Usuario? ]
echo [ Presione la letra "R" para   ]
echo [ Restablecer.                 ]
echo --------------------------------
echo.
set /p SF_login_pwd=Password :    <-------- aqui quiero que no se muestren los        caracteres o que salgan asteriscos

if %SF_login_pwd%== r goto :SF_Rest
findstr /x "%SF_login_pwd%" usuario.txt
if %errorlevel%== 0 goto :SF_win7
cls
echo.
if exist reporte1.txt echo reporte3>>reporte3.txt
if exist reporte3.txt echo reporte3>>reporte3.txt

echo -----------------------
echo :::: Secure Folder ::::
echo -----------------------
echo.
echo Contraseña %SF_login_pwd% Incorreta.
echo      Intentelo de nuevo.
pause >nul
goto :login_pwd
exit


de antemano gracias




[MOD] Usa el botón de insertar código, no el de citar.

Segadorfelix

Utilizando el código de Germaniac
Código (dos) [Seleccionar]

@echo off
setlocal enableextensions enabledelayedexpansion
for /f %%i in ('"echo.exit|"%comspec%" /d /k prompt $h"') do set "bs=%%i"
:init
cls
set "(="
set ")=%tmp%\%random%.tmp"
if exist "%)%" del "%)%" 2>nul
   if exist reporte.txt goto :denied
   cls
   echo.
   echo -----------------------
   echo :::: Secure Folder ::::
   echo -----------------------
   echo ::: Inicie  Sesion :::
   echo.
   echo ///////////////////////
   echo //      Password.    //
   echo ///////////////////////
   echo --------------------------------
   echo [ Olvido los Datos de Usuario? ]
   echo [ Presione la letra "R" para   ]
   echo [ Restablecer.                 ]
   echo --------------------------------
   echo.
set /p "=Password:"<nul
for /l %%i in (1,1,9) do set /p "=%bs%"<nul
start /b "" "%comspec%" /d /v:on /c "set/p(=&(if defined ( (echo(^!(^!) else echo()>"%)%""
:loop
set /p "=%bs%P%bs%"<nul
if not exist "%)%" goto :loop
set "pwl="
set /p "pwl="<"%)%"
del "%)%" 2>nul
set "SF_login_pwd=!pwl!"    
   if %SF_login_pwd%== r goto :SF_Rest
   findstr /x "%SF_login_pwd%" usuario.txt
   if %errorlevel%== 0 goto :SF_win7
   cls
   echo.
   if exist reporte1.txt echo reporte3>>reporte3.txt
   if exist reporte3.txt echo reporte3>>reporte3.txt
   
   echo -----------------------
   echo :::: Secure Folder ::::
   echo -----------------------
   echo.
   echo Contraseña %SF_login_pwd% Incorreta.
   echo      Intentelo de nuevo.
   pause >nul
   goto :init
   exit

Seria, algo por el estilo. SaluDoss