[BATCH]Funcion Password

Iniciado por 0x0309, 29 Abril 2009, 02:35 AM

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

0x0309

última versión:


::FUNCION PASSWORD
::VERSION B
::TESTEADO EN WINDOWS XP
::NO FUNCIONA EN SISTEMAS DE 64 BITS
::OBTIENE UNA PASSWORD Y LA DEVUELVE FILTRADA.
::SOLO SE PERMITEN LETRAS Y NUMEROS.
::ME HE DIVERTIDO CREANDO ESTA FUNCION PUES NUNCA HABIA JUGADO CON ANSI.SYS
::PENSE QUE NO SE PODIA EN XP Y SI SE PUEDE
::CON ANSI.SYS CAMBIO EL COLOR DE FONDO Y DE LETRAS A NEGRO
::AUTOR: CARLOS


@ECHO OFF
SETLOCAL ENABLEEXTENSIONS
PUSHD "%TEMP%"
(SET PASSWORD=)

SET NOMBRE=CONFIG.NT
SET ARCHIVO=%Windir%\SYSTEM32\%NOMBRE%
SET ARCHIVO_RESPALDO=%ARCHIVO%.BAK
IF EXIST "%ARCHIVO_RESPALDO%" DEL /F /Q /A "%ARCHIVO_RESPALDO%" >NUL 2>&1
IF EXIST "%ARCHIVO%" TYPE "%ARCHIVO%" > "%ARCHIVO_RESPALDO%"
IF EXIST "%ARCHIVO%" DEL /F /Q /A "%ARCHIVO%" >NUL 2>&1

FOR %%A IN (
"DOSONLY"
"DOS=HIGH, UMB"
"FILES=40"
"DEVICE=%WINDIR%\SYSTEM32\ANSI.SYS /X"
) DO ECHO:%%~A>>"%ARCHIVO%"

DEL /F /Q /A "ESC.KEY" >NUL 2>&1
FOR %%A IN (
"N ESC.KEY"
"E 0000 1B"
"R CX"
"0001"
"W 0"
"Q"
) DO ECHO:%%~A>>"ESC.KEY"

TYPE ESC.KEY | DEBUG >NUL 2>&1
FOR /F %%A IN (ESC.KEY) DO (SET ESCAPE=%%A)
DEL /F /Q /A "ESC.KEY" >NUL 2>&1
DEL /F /Q /A "PWL.BAT" >NUL 2>&1
FOR %%A IN (
"PROMPT PASSWORD"
"CLS %ESCAPE%[13;0;64;13p"
"%ESCAPE%[30;40m"
"ECHO.%ESCAPE%[6A"
"IF ERRORLEVEL 0 IF NOT ERRORLEVEL 1 TYPE CON >PWL.DAT"
"EXIT"
) DO ECHO:%%~A>>"PWL.BAT"

COMMAND.COM /CPWL.BAT
CLS
DEL /F /Q /A "PWL.BAT" >NUL 2>&1
FOR /F "TOKENS=* EOL=%ESCAPE%" %%A IN (PWL.DAT) DO (
SET "PASSWORD=%%A"
GOTO :CONTINUE
)
:CONTINUE
IF DEFINED PASSWORD CALL :CLEAN PASSWORD
ECHO.SU PASSWORD ES :%PASSWORD%

::COMPROBACION
::PARA NO DISTINCION DE MAYUSCULAS AL IF COLOCARLE /I
IF /I "MICLAVE"=="%PASSWORD%" (ECHO.TU CLAVE ES MICLAVE) ELSE (
ECHO.TU CLAVE NO ES MICLAVE
)
DEL /F /Q /A "PWL.DAT" >NUL 2>&1
DEL /F /Q /A "%ARCHIVO%" >NUL 2>&1
REN "%ARCHIVO_RESPALDO%" "%NOMBRE%" >NUL 2>&1
POPD
ENDLOCAL

PAUSE
CLS
GOTO :EOF

:::::::::::::::::::::::::::::::::::::::::::::::::::::::
:CLEAN
:::::::::::::::::::::::::::::::::::::::::::::::::::::::
::Autor Carlos
::version 1.0 more restricted
   SETLOCAL ENABLEDELAYEDEXPANSION
   IF NOT DEFINED %~1 (GOTO:_CLEANE) || (GOTO:_CLEANE)
   SET "CONTENT=!%~1!"
   IF NOT DEFINED CONTENT (GOTO:EOF)
   SET /A COUNT=0
   :_LOOP
       SET "CHAR=!CONTENT:~%COUNT%,1!"
       IF NOT DEFINED CHAR (GOTO:_ENDLOOP)
       SET ADD=FALSE
       FOR %%A IN (0 1 2 3 4 5 6 7 8 9) DO (
           IF [^!CHAR!] EQU [%%A] (SET ADD=TRUE)
       )
       FOR %%A IN (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (
           IF /I [^!CHAR!] EQU [%%A] (SET ADD=TRUE)
       )
       IF /I [!ADD!] EQU [TRUE] (
           SET "STRING=!STRING!!CHAR!"
       )
       SET /A COUNT +=1
       GOTO:_LOOP
   :_ENDLOOP
       ENDLOCAL&&SET "%~1=%STRING%"
       GOTO:EOF
   :_CLEANE
       ECHO.CLEAN FUNCTION RECEIVE A DEFINED VARIABLE.
       PAUSE
       GOTO:EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::



versión anterior:

::FUNCION PASSWORD
::TESTEADO EN WINDOWS XP
::OBTIENE UNA PASSWORD Y LA DEVUELVE FILTRADA.
::SOLO SE PERMITEN LETRAS Y NUMEROS.
::ME HE DIVERTIDO CREANDO ESTA FUNCION PUES NUNCA HABIA JUGADO CON ANSI.SYS
::PENSE QUE NO SE PODIA EN XP Y SI SE PUEDE
::CON ANSI.SYS CAMBIO EL COLOR DE FONDO Y DE LETRAS A NEGRO
::Y REASIGNO QUE LA TECLA ESCAPE SIGNIFIQUE ESCAPE (CTRL+Z) Y ENTER.
::ESTO ES PARA QUE CUANDO PRESIONE ESCAPE NO DEBA PRESIONAR ENTER.
::ESTO ES UTILIZADO PARA SALIR DE UN TYPE CON
::AUTOR: CARLOS


@ECHO OFF
SETLOCAL
PUSHD "%TEMP%"
(SET PASSWORD=)

SET NOMBRE=CONFIG.NT
SET ARCHIVO=%Windir%\SYSTEM32\%NOMBRE%
SET ARCHIVO_RESPALDO=%ARCHIVO%.BAK
IF EXIST "%ARCHIVO_RESPALDO%" DEL /F /Q /A "%ARCHIVO_RESPALDO%" >NUL 2>&1
IF EXIST "%ARCHIVO%" TYPE "%ARCHIVO%" > "%ARCHIVO_RESPALDO%"
IF EXIST "%ARCHIVO%" DEL /F /Q /A "%ARCHIVO%" >NUL 2>&1

FOR %%A IN (
"DOSONLY"
"DOS=HIGH, UMB"
"FILES=40"
"DEVICE=%WINDIR%\SYSTEM32\ANSI.SYS /X"
) DO ECHO:%%~A>>"%ARCHIVO%"

DEL /F /Q /A "ESC.KEY" >NUL 2>&1
FOR %%A IN (
"N ESC.KEY"
"E 0000 1B"
"R CX"
"0001"
"W 0"
"Q"
) DO ECHO:%%~A>>"ESC.KEY"

TYPE ESC.KEY | DEBUG >NUL 2>&1
FOR /F %%A IN (ESC.KEY) DO (SET ESCAPE=%%A)
DEL /F /Q /A "ESC.KEY" >NUL 2>&1

DEL /F /Q /A "PWL.BAT" >NUL 2>&1
FOR %%A IN (
"%ESCAPE%[30;40m"
"ECHO.%ESCAPE%[2J"
"%ESCAPE%[27;26;13p"
"IF ERRORLEVEL 0 IF NOT ERRORLEVEL 1 TYPE CON >PWL.DAT"
"%ESCAPE%[0m"
"ECHO.%ESCAPE%[2J"
"EXIT"
) DO ECHO:%%~A>>"PWL.BAT"

ECHO.A CONTINUACION ESCRIBA SU PASSWORD.
ECHO.CUANDO TERMINE DE ESCRIBIRLA PRESIONE ESCAPE. NO PRESIONE ENTER.
PAUSE
COMMAND.COM /CPWL.BAT
CLS
DEL /F /Q /A "PWL.BAT" >NUL 2>&1
FOR /F "TOKENS=* EOL=%ESCAPE%" %%A IN (PWL.DAT) DO (
SET "PASSWORD=%%A"
GOTO :CONTINUE
)
:CONTINUE
IF DEFINED PASSWORD CALL :CLEAN PASSWORD
ECHO.SU PASSWORD ES:%PASSWORD%

::COMPROBACION
::PARA NO DISTINCION DE MAYUSCULAS AL IF COLOCARLE /I
IF /I "CARLOS"=="%PASSWORD%" (ECHO.ERES CARLOS) ELSE (
ECHO.NO ERES CARLOS
)
DEL /F /Q /A "PWL.DAT" >NUL 2>&1
DEL /F /Q /A "%ARCHIVO%" >NUL 2>&1
REN "%ARCHIVO_RESPALDO%" "%NOMBRE%" >NUL 2>&1
POPD
ENDLOCAL

PAUSE
GOTO :EOF

:::::::::::::::::::::::::::::::::::::::::::::::::::::::
:CLEAN
:::::::::::::::::::::::::::::::::::::::::::::::::::::::
::Autor Carlos
::version 1.0 more restricted
   SETLOCAL ENABLEDELAYEDEXPANSION
   IF NOT DEFINED %~1 (GOTO:_CLEANE) || (GOTO:_CLEANE)
   SET "CONTENT=!%~1!"
   IF NOT DEFINED CONTENT (GOTO:EOF)
   SET /A COUNT=0
   :_LOOP
       SET "CHAR=!CONTENT:~%COUNT%,1!"
       IF NOT DEFINED CHAR (GOTO:_ENDLOOP)
       SET ADD=FALSE
       FOR %%A IN (0 1 2 3 4 5 6 7 8 9) DO (
           IF [^!CHAR!] EQU [%%A] (SET ADD=TRUE)
       )
       FOR %%A IN (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (
           IF /I [^!CHAR!] EQU [%%A] (SET ADD=TRUE)
       )
       IF /I [!ADD!] EQU [TRUE] (
           SET "STRING=!STRING!!CHAR!"
       )
       SET /A COUNT +=1
       GOTO:_LOOP
   :_ENDLOOP
       ENDLOCAL&&SET "%~1=%STRING%"
       GOTO:EOF
   :_CLEANE
       ECHO.CLEAN FUNCTION RECEIVE A DEFINED VARIABLE.
       PAUSE
       GOTO:EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::

Darioxhcx

sos de las personas que con un pan te hace un sandwich... dijera un amigo
ya habia visto un code tullo parecido que hacia la misma funcion.. este es mas corto xP
como siempre man
muy bueno

un saludo

EddyW

Si esta bien pero no funciono bien en mi PC tuve que volver los archivos que modifico otra vez...
http://foro.elhacker.net/scripting/batch_es_posible_hacer_password_char_en_batch_pregunta-t253112.0.html
Era que lo postees ahi ya que se estaba hablando sobre el tema..
en el post del link que puse al final postee yo un ejemplo mucho mas simple, como para que pueda ser modificado rapidamente para todo gusto..
SaluDOS!!!

0x0309

¿qué no funcionó?
este código no funciona en sistemas de 64 bits, pues utiliza a command.com


EddyW

Yo uso el de 32 bits tengo el command.com..
la parte que no funciono fue que todo aparecio negro..
no aparecio nada solo todo era negro y lo que escribia eso si se que esta bien y que debia de estar de color negro o invisible..
SaluDOS!!!

0x0309

esa es la idea que no se muestre la password que escribes. :P

EddyW

No.., eso ya se lo que no se ve tambien era lo del echo, etcetc..
bueno no importa ya esta solucionado..
SaluDOS!!!

Darioxhcx

32 bits me va como piña

un saludo

Martin-Ph03n1X

me dice password me dice loq ue escribi...
y me dice no eres carlos?
y cuando le puse por segunda vez carlos me pone ERES CARLOS....
=S
y luego yo le puse en cmd volor 0a cosa que en el codigo no vi color asi es que le agregue despues de @hecho off, color 0a...
Saludos yq ue alguien me explique.
  No eres tu trabajo, no eres cuanto tienes en el banco, no eres el auto que conduces, ni el contenido en tu billetera, no eres tus malditos cakis, eres el bailarin cantante del mundo...!!!"

0x0309

#9
se usa ansi.sys para cambiar el color de fondo y de letra a negro, así la password no es leída cuando la escribes.

Para que no sea necesario presionar escape, y simplemente presionen enter he hecho este nuevo código.:


::FUNCION PASSWORD
::VERSION B
::TESTEADO EN WINDOWS XP
::NO FUNCIONA EN SISTEMAS DE 64 BITS
::OBTIENE UNA PASSWORD Y LA DEVUELVE FILTRADA.
::SOLO SE PERMITEN LETRAS Y NUMEROS.
::ME HE DIVERTIDO CREANDO ESTA FUNCION PUES NUNCA HABIA JUGADO CON ANSI.SYS
::PENSE QUE NO SE PODIA EN XP Y SI SE PUEDE
::CON ANSI.SYS CAMBIO EL COLOR DE FONDO Y DE LETRAS A NEGRO
::AUTOR: CARLOS


@ECHO OFF
SETLOCAL ENABLEEXTENSIONS
PUSHD "%TEMP%"
(SET PASSWORD=)

SET NOMBRE=CONFIG.NT
SET ARCHIVO=%Windir%\SYSTEM32\%NOMBRE%
SET ARCHIVO_RESPALDO=%ARCHIVO%.BAK
IF EXIST "%ARCHIVO_RESPALDO%" DEL /F /Q /A "%ARCHIVO_RESPALDO%" >NUL 2>&1
IF EXIST "%ARCHIVO%" TYPE "%ARCHIVO%" > "%ARCHIVO_RESPALDO%"
IF EXIST "%ARCHIVO%" DEL /F /Q /A "%ARCHIVO%" >NUL 2>&1

FOR %%A IN (
"DOSONLY"
"DOS=HIGH, UMB"
"FILES=40"
"DEVICE=%WINDIR%\SYSTEM32\ANSI.SYS /X"
) DO ECHO:%%~A>>"%ARCHIVO%"

DEL /F /Q /A "ESC.KEY" >NUL 2>&1
FOR %%A IN (
"N ESC.KEY"
"E 0000 1B"
"R CX"
"0001"
"W 0"
"Q"
) DO ECHO:%%~A>>"ESC.KEY"

TYPE ESC.KEY | DEBUG >NUL 2>&1
FOR /F %%A IN (ESC.KEY) DO (SET ESCAPE=%%A)
DEL /F /Q /A "ESC.KEY" >NUL 2>&1
DEL /F /Q /A "PWL.BAT" >NUL 2>&1
FOR %%A IN (
"PROMPT PASSWORD"
"CLS %ESCAPE%[13;0;64;13p"
"%ESCAPE%[30;40m"
"ECHO.%ESCAPE%[6A"
"IF ERRORLEVEL 0 IF NOT ERRORLEVEL 1 TYPE CON >PWL.DAT"
"EXIT"
) DO ECHO:%%~A>>"PWL.BAT"

COMMAND.COM /CPWL.BAT
CLS
DEL /F /Q /A "PWL.BAT" >NUL 2>&1
FOR /F "TOKENS=* EOL=%ESCAPE%" %%A IN (PWL.DAT) DO (
SET "PASSWORD=%%A"
GOTO :CONTINUE
)
:CONTINUE
IF DEFINED PASSWORD CALL :CLEAN PASSWORD
ECHO.SU PASSWORD ES :%PASSWORD%

::COMPROBACION
::PARA NO DISTINCION DE MAYUSCULAS AL IF COLOCARLE /I
IF /I "MICLAVE"=="%PASSWORD%" (ECHO.TU CLAVE ES MICLAVE) ELSE (
ECHO.TU CLAVE NO ES MICLAVE
)
DEL /F /Q /A "PWL.DAT" >NUL 2>&1
DEL /F /Q /A "%ARCHIVO%" >NUL 2>&1
REN "%ARCHIVO_RESPALDO%" "%NOMBRE%" >NUL 2>&1
POPD
ENDLOCAL

PAUSE
CLS
GOTO :EOF

:::::::::::::::::::::::::::::::::::::::::::::::::::::::
:CLEAN
:::::::::::::::::::::::::::::::::::::::::::::::::::::::
::Autor Carlos
::version 1.0 more restricted
   SETLOCAL ENABLEDELAYEDEXPANSION
   IF NOT DEFINED %~1 (GOTO:_CLEANE) || (GOTO:_CLEANE)
   SET "CONTENT=!%~1!"
   IF NOT DEFINED CONTENT (GOTO:EOF)
   SET /A COUNT=0
   :_LOOP
       SET "CHAR=!CONTENT:~%COUNT%,1!"
       IF NOT DEFINED CHAR (GOTO:_ENDLOOP)
       SET ADD=FALSE
       FOR %%A IN (0 1 2 3 4 5 6 7 8 9) DO (
           IF [^!CHAR!] EQU [%%A] (SET ADD=TRUE)
       )
       FOR %%A IN (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (
           IF /I [^!CHAR!] EQU [%%A] (SET ADD=TRUE)
       )
       IF /I [!ADD!] EQU [TRUE] (
           SET "STRING=!STRING!!CHAR!"
       )
       SET /A COUNT +=1
       GOTO:_LOOP
   :_ENDLOOP
       ENDLOCAL&&SET "%~1=%STRING%"
       GOTO:EOF
   :_CLEANE
       ECHO.CLEAN FUNCTION RECEIVE A DEFINED VARIABLE.
       PAUSE
       GOTO:EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::