[Batch] Generador de contraseñas seguras

Iniciado por _m, 26 Enero 2009, 04:44 AM

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

_m

Código (dos) [Seleccionar]
@ ECHO OFF & SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
   SET CHARS=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 @#/()=+-,.;:_*'
:_MENU
   CLS
   ECHO Seguridad en contrase¤a:
   ECHO.
   ECHO 1. Baja
   ECHO 2. Media
   ECHO 3. Alta
   ECHO.
   ECHO 0. Salir
   ECHO.
  (SET SECLEVEL=)
  (SET /P SECLEVEL_=^> )
   IF NOT DEFINED SECLEVEL_ (GOTO:_MENU)
   IF ^%SECLEVEL_:~0,1%==1 (SET MAXCHAR=25&GOTO:_LENGHT)
   IF ^%SECLEVEL_:~0,1%==2 (SET MAXCHAR=51&GOTO:_LENGHT)
   IF ^%SECLEVEL_:~0,1%==3 (SET MAXCHAR=77&GOTO:_LENGHT)
   IF ^%SECLEVEL_:~0,1%==0 (EXIT)
   GOTO:_MENU
:_LENGHT
   CLS
   ECHO Longitud de contrase¤a:
   ECHO.
  (SET PASSWORDLENGTH=)
  (SET /P PASSWORDLENGTH_=^> )
   IF NOT DEFINED PASSWORDLENGTH_ (GOTO:_MENU)
   (SET RESULT_=)
   FOR /L %%I IN (1,1,%PASSWORDLENGTH_%) DO (
   CALL :_ONERANDOMCHAR %MAXCHAR% RNDCHR_
   SET RESULT_=!RESULT_!!RNDCHR_!
  )
   ECHO %RESULT_%|FINDSTR "[0123456789]">NUL
   IF ^%ERRORLEVEL%==0 SET FOUNDNUMBER=TRUE
   ECHO %RESULT_%|FINDSTR "[ @#/()=+-,.;:_*']">NUL
   IF ^%ERRORLEVEL%==0 SET FOUNDSPECIAL=TRUE
   IF DEFINED REQUIRENUMBER IF NOT DEFINED FOUNDNUMBER GOTO:_ONERANDOMCHAR
   IF DEFINED REQUIRESPECIAL IF NOT DEFINED FOUNDSPECIAL GOTO:_ONERANDOMCHAR
   GOTO:_RESULT
:_ONERANDOMCHAR
   SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
   SET /A DIV_=32767 / %1
   SET /A RAND_=%RANDOM% / %DIV_%
   SET RETURN_=!CHARS:~%RAND_%,1!
   ENDLOCAL & SET "%2=%RETURN_%" & GOTO:EOF
:_RESULT
   CLS
   ECHO Contrase¤a generada:
   ECHO.
   ECHO %RESULT_%
   ECHO.
   PAUSE
   GOTO:_MENU



Escrito por mi, con la ayuda del código "Make a randomized password" de Timo Salmi.

Darioxhcx

anda a acordarte de esa pass xD

ta bueno  , me gusta el code

Garcad

_m me gusta mucho es buena idea.

Como podría tener un archivo bat que genere contraseñas de 50 caracteres sin seleccionar opción.

Uno para la opcion 1, otro para la opcion 2, etc...

En diferentes archivos bat

Salu2

_m

#3
Seguridad en contraseña: Baja
Longitud de contraseña: 50 carácteres

Código (dos) [Seleccionar]
@ECHO OFF&SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET CHARS=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 @#/()=+-,.;:_*'
:_START
(SET RESULT_=)
FOR /L %%I IN (1,1,50) DO (
CALL :_ONERANDOMCHAR 25 RNDCHR_
SET RESULT_=!RESULT_!!RNDCHR_!
)
ECHO %RESULT_%|FINDSTR "[0123456789]">NUL
IF %ERRORLEVEL% EQU 0 SET FOUNDNUMBER=TRUE
ECHO %RESULT_%|FINDSTR "[ @#/()=+-,.;:_*']">NUL
IF %ERRORLEVEL% EQU 0 SET FOUNDSPECIAL=TRUE
IF DEFINED REQUIRENUMBER IF NOT DEFINED FOUNDNUMBER GOTO:_ONERANDOMCHAR
IF DEFINED REQUIRESPECIAL IF NOT DEFINED FOUNDSPECIAL GOTO:_ONERANDOMCHAR
CLS
ECHO.%RESULT_%
ECHO.
PAUSE
GOTO:_START
:_ONERANDOMCHAR
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET /A DIV_=32767 / %1
SET /A RAND_=%RANDOM% / %DIV_%
SET RETURN_=!CHARS:~%RAND_%,1!
ENDLOCAL & SET "%2=%RETURN_%" & GOTO:EOF


Seguridad en contraseña: Media
Longitud de contraseña: 50 carácteres

Código (dos) [Seleccionar]
@ECHO OFF&SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET CHARS=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 @#/()=+-,.;:_*'
:_START
(SET RESULT_=)
FOR /L %%I IN (1,1,50) DO (
CALL :_ONERANDOMCHAR 51 RNDCHR_
SET RESULT_=!RESULT_!!RNDCHR_!
)
ECHO %RESULT_%|FINDSTR "[0123456789]">NUL
IF %ERRORLEVEL% EQU 0 SET FOUNDNUMBER=TRUE
ECHO %RESULT_%|FINDSTR "[ @#/()=+-,.;:_*']">NUL
IF %ERRORLEVEL% EQU 0 SET FOUNDSPECIAL=TRUE
IF DEFINED REQUIRENUMBER IF NOT DEFINED FOUNDNUMBER GOTO:_ONERANDOMCHAR
IF DEFINED REQUIRESPECIAL IF NOT DEFINED FOUNDSPECIAL GOTO:_ONERANDOMCHAR
CLS
ECHO.%RESULT_%
ECHO.
PAUSE
GOTO:_START
:_ONERANDOMCHAR
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET /A DIV_=32767 / %1
SET /A RAND_=%RANDOM% / %DIV_%
SET RETURN_=!CHARS:~%RAND_%,1!
ENDLOCAL & SET "%2=%RETURN_%" & GOTO:EOF


Seguridad en contraseña: Alta
Longitud de contraseña: 50 carácteres

Código (dos) [Seleccionar]
@ECHO OFF&SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET CHARS=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 @#/()=+-,.;:_*'
:_START
(SET RESULT_=)
FOR /L %%I IN (1,1,50) DO (
CALL :_ONERANDOMCHAR 77 RNDCHR_
SET RESULT_=!RESULT_!!RNDCHR_!
)
ECHO %RESULT_%|FINDSTR "[0123456789]">NUL
IF %ERRORLEVEL% EQU 0 SET FOUNDNUMBER=TRUE
ECHO %RESULT_%|FINDSTR "[ @#/()=+-,.;:_*']">NUL
IF %ERRORLEVEL% EQU 0 SET FOUNDSPECIAL=TRUE
IF DEFINED REQUIRENUMBER IF NOT DEFINED FOUNDNUMBER GOTO:_ONERANDOMCHAR
IF DEFINED REQUIRESPECIAL IF NOT DEFINED FOUNDSPECIAL GOTO:_ONERANDOMCHAR
CLS
ECHO.%RESULT_%
ECHO.
PAUSE
GOTO:_START
:_ONERANDOMCHAR
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET /A DIV_=32767 / %1
SET /A RAND_=%RANDOM% / %DIV_%
SET RETURN_=!CHARS:~%RAND_%,1!
ENDLOCAL & SET "%2=%RETURN_%" & GOTO:EOF