1 (изменено: alexii, 2013-04-30 16:01:50)

Тема: CMD/BAT: Генератор паролей

Всем доброго времени суток!
Слепил скрипт для генерации пароля из заданных символов:

@echo off
:restart
set I=6
set N=17
set CHAR=0 1 2 3 4 5 6 7 8 9 A B C D E F G
:L
set /a R=1+%N%*%random%/32768
for /f "tokens=%R%" %%q in ("%CHAR%") do (set Hex=%%q%Hex%)
Set /a I-=1
If %I% GTR 0 goto L
echo %Hex%
pause>nul && cls
goto restart

Но я немогу въехать что и где всунуть для того чтобы при новой генерации набор новых символов не дописывался перед предыдущим и вместе с ним не выводился.
По сути должно быть так:

@echo off
:1
echo %RANDOM%
pause>nul && cls
goto 1

но только с символами.

PS заранее спасибо.

2

Re: CMD/BAT: Генератор паролей

Вы про это:

@echo off
:restart
setlocal
set I=6
set N=17
set CHAR=0 1 2 3 4 5 6 7 8 9 A B C D E F G
:L
set /a R=1+%N%*%random%/32768
for /f "tokens=%R%" %%q in ("%CHAR%") do (set Hex=%%q%Hex%)
Set /a I-=1
If %I% GTR 0 goto L
echo %Hex%
pause>nul && cls
endlocal
goto restart

?

3

Re: CMD/BAT: Генератор паролей

все гениальное просто.
Спасибо огромное.

4

Re: CMD/BAT: Генератор паролей

Ну очень просто, особенно если скопипастить, подменив пару символов.
А не проще ли дать ссылку на оригинал с ясным объяснением от автора ?
(сейчас под аккаунтом kiber_punk кто-то другой, будьте осторожны, не нарвитесь на кидалу).

5

Re: CMD/BAT: Генератор паролей

Хмм странно, но я не с этого форума взял тот рандом, где то на киберфоруме такое было.

6

Re: CMD/BAT: Генератор паролей

Возможно велосипед, но выложу свой скрипт:

@ECHO OFF
COLOR 0A

:: получаем длину пароля в цифрах
set length_pass=999

:: тип используемых символов в пароле
::  использование группы - yes/no
set use_symbol_en_small=yes
set use_symbol_en_big=yes
set use_symbol_ru_small=yes
set use_symbol_ru_big=yes
set use_symbol_numbers=yes
set use_symbol_special=yes

:: -----------------== начало скрипта ==-----------------------

:: обнуляем переменные
set number_symbol_in_use=0

:: задаём наборы символов групп
set group_en_small=a d c d e f g h i j k l m n o p q r s t u v w x y z
set group_en_big=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
set group_ru_small=а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я
set group_ru_big=А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
set group_numbers=0 1 2 3 4 5 6 7 8 9
set group_special=~ ` @ # $ № : { } / \ + - _ . '

:: узнаём кол-во символов которые будут использоваться и составляем строку выбора
if %use_symbol_en_small%==yes (
    set /a number_symbol_in_use=%number_symbol_in_use%+26
    set symbol_in_use=%group_en_small%
)
if %use_symbol_en_big%==yes (
    set /a number_symbol_in_use=%number_symbol_in_use%+26
    set symbol_in_use=%symbol_in_use% %group_en_big%
)
if %use_symbol_ru_small%==yes (
    set /a number_symbol_in_use=%number_symbol_in_use%+33
    set symbol_in_use=%symbol_in_use% %group_ru_small%
)
if %use_symbol_ru_big%==yes (
    set /a number_symbol_in_use=%number_symbol_in_use%+33
    set symbol_in_use=%symbol_in_use% %group_ru_big%
)
if %use_symbol_numbers%==yes (
    set /a number_symbol_in_use=%number_symbol_in_use%+10
    set symbol_in_use=%symbol_in_use% %group_numbers%
)
if %use_symbol_special%==yes (
    set /a number_symbol_in_use=%number_symbol_in_use%+16
    set symbol_in_use=%symbol_in_use% %group_special%
)

:: вычисляем интервал принадлежащий одному символу
set /a symbol_step_random=32767/%number_symbol_in_use%

:: запускаем цикл с шагом 1 и длиной в кол-во символов в пароле с передачей рандомного числа
for /l %%a in (1,1,%length_pass%) do call :randominaze %RANDOM%

echo Random password  -  %passkey%

pause>nul

exit /b 0

:randominaze

set randomnumber=%RANDOM%
set cycle_number=0
set previous_number_letter=0
for %%b in (%symbol_in_use%) do call :division %%b
exit /b 0

:division
set letter=%1
set /a cycle_number=%cycle_number%+1
set /a number_letter=%symbol_step_random%*%cycle_number%
if /i %randomnumber% LEQ %number_letter% (
    if /i %randomnumber% GTR %previous_number_letter% (
        set passkey=%passkey%%letter%
    )
)
set previous_number_letter=%number_letter%
exit /b 0

7 (изменено: chime771, 2013-07-25 00:07:53)

Re: CMD/BAT: Генератор паролей

Александр_foxware пишет:

Возможно велосипед, но выложу свой скрипт:

@ECHO OFF
COLOR 0A

:: получаем длину пароля в цифрах
set length_pass=999

:: тип используемых символов в пароле
::  использование группы - yes/no
set use_symbol_en_small=yes
set use_symbol_en_big=yes
set use_symbol_ru_small=yes
set use_symbol_ru_big=yes
set use_symbol_numbers=yes
set use_symbol_special=yes

:: -----------------== начало скрипта ==-----------------------

:: обнуляем переменные
set number_symbol_in_use=0

:: задаём наборы символов групп
set group_en_small=a d c d e f g h i j k l m n o p q r s t u v w x y z
set group_en_big=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
set group_ru_small=а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я
set group_ru_big=А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
set group_numbers=0 1 2 3 4 5 6 7 8 9
set group_special=~ ` @ # $ № : { } / \ + - _ . '

:: узнаём кол-во символов которые будут использоваться и составляем строку выбора
if %use_symbol_en_small%==yes (
    set /a number_symbol_in_use=%number_symbol_in_use%+26
    set symbol_in_use=%group_en_small%
)
if %use_symbol_en_big%==yes (
    set /a number_symbol_in_use=%number_symbol_in_use%+26
    set symbol_in_use=%symbol_in_use% %group_en_big%
)
if %use_symbol_ru_small%==yes (
    set /a number_symbol_in_use=%number_symbol_in_use%+33
    set symbol_in_use=%symbol_in_use% %group_ru_small%
)
if %use_symbol_ru_big%==yes (
    set /a number_symbol_in_use=%number_symbol_in_use%+33
    set symbol_in_use=%symbol_in_use% %group_ru_big%
)
if %use_symbol_numbers%==yes (
    set /a number_symbol_in_use=%number_symbol_in_use%+10
    set symbol_in_use=%symbol_in_use% %group_numbers%
)
if %use_symbol_special%==yes (
    set /a number_symbol_in_use=%number_symbol_in_use%+16
    set symbol_in_use=%symbol_in_use% %group_special%
)

:: вычисляем интервал принадлежащий одному символу
set /a symbol_step_random=32767/%number_symbol_in_use%

:: запускаем цикл с шагом 1 и длиной в кол-во символов в пароле с передачей рандомного числа
for /l %%a in (1,1,%length_pass%) do call :randominaze %RANDOM%

echo Random password  -  %passkey%

pause>nul

exit /b 0

:randominaze

set randomnumber=%RANDOM%
set cycle_number=0
set previous_number_letter=0
for %%b in (%symbol_in_use%) do call :division %%b
exit /b 0

:division
set letter=%1
set /a cycle_number=%cycle_number%+1
set /a number_letter=%symbol_step_random%*%cycle_number%
if /i %randomnumber% LEQ %number_letter% (
    if /i %randomnumber% GTR %previous_number_letter% (
        set passkey=%passkey%%letter%
    )
)
set previous_number_letter=%number_letter%
exit /b 0

каждый для себя генерит генератор паролей ))) а вы их запомните
откройте http://pass.slovelas.ru/ когда нужен новый пароль

8

Re: CMD/BAT: Генератор паролей

chime771, это спам?

9

Re: CMD/BAT: Генератор паролей

alexii пишет:

chime771, это спам?

если не относится к теме генераторов паролей, то да ))))
вообще, прочёл тему и насмешило, что каждый для себя любимого делает генератор паролей
причём запомнить то, что выдают приведённые батники практически невозможно
зачем писать целый батник, и запускать его каждый раз, если можно просто открыть закладку в браузере...
вот что я хотел сказать

10

Re: CMD/BAT: Генератор паролей

ch123, добро пожаловать на форум! Ознакомьтесь, пожалуйста, с Правилами, отредактируйте свой пост. Обратите внимание на оформление кода, заглавные буквы в начале и точки в конце предложений.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder