Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - генератор ключей

Ответить
Настройки темы
CMD/BAT - генератор ключей

Новый участник


Сообщения: 24
Благодарности: 4

Профиль | Отправить PM | Цитировать


Доброе время суток.
Есть интересная мысля: нужно разработать скрипт который будет генерить ключ (желательно с определенного набора символов).
Идея в том что он должен генерироваться каждый день разный(или 2 дня, неделю...) с привязной до имя пользователя, имя компьютера, даты, и тд. тп. Длину бы тоже неплохо ограничить скажем например от 5 до 8 символов.
Вот собственно такая задачка.

Отправлено: 21:37, 03-06-2011

 

Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


lohi1234567,
Пример ключа можно? Пять случайных символов:
Код: Выделить весь код
@echo off
setlocal

for %%i in (q Q w W e E r R t T y ^
            Y u U i I o O p P a A ^
            s S d D f F g G h H j ^
            J k K l L z Z x X c C ^
            v V b B n N m M 0 1 2 ^
            3 4 5 6 7 8 9 ! @ # _ ^
            $ - +) do call:set "%%i"


for /f "tokens=2 delims==" %%i in ('set sym_') do call:key "%%i"
echo %key%
goto:eof

:set
set "sym_%random%=%~1"
goto:eof

:key
set /a cnt+=1
if not %cnt% gtr 5 set "key=%key%%~1"
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:09, 04-06-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата lohi1234567:
с привязной до имя пользователя, имя компьютера, даты, и тд. тп. Длину бы тоже неплохо ограничить скажем например от 5 до 8 символов. »
- составить строку из выбранной последовательности параметров;
- взять (MD5) хэш полученной строки (утилит предостаточно);
- выбрать в заданном порядке нужное количество символов (5-8);
- если последовательность 0-F не устраивает, потребуется дополнительный шаг перекодировки.

тогда "секрет" будет состоять из:

- исходных параметров и их порядка во входной строке;
- алгоритма отбора символов из хэша в ключ;
- таблицы перекдировки (если применяется)

Отправлено: 08:45, 04-06-2011 | #3


Новый участник


Сообщения: 24
Благодарности: 4

Профиль | Отправить PM | Цитировать


Foreigner, Ваш пример отлично генерирует случайный ключ из заданной последовательности, но важным является тот факт что все зависимости от количества раз у одного и того же пользователя на этом же компьютере ключ на протяжении дня должен быть один и тот же на следующий день другой, но повторятся тоже должен целый день.
Цитата Foreigner:
Пример ключа можно? »
любой произвольный, можно и 0-F.
Ясно что сгенерированный ключ не должен "открыто заявлять" что он построен с имени пользователя, даты...

amel27, Ваша логика мне ясна и понятна, но хотелось бы без применения сторонних утилит(если это возможно)

P.S. Спасибо что заинтересовались и ответили по данной теме.

Отправлено: 15:02, 04-06-2011 | #4


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата lohi1234567:
хотелось бы без применения сторонних утилит(если это возможно) »
Хорошую хэш-функцию на CMD реализовать проблематично, для этого лучше использовать специализированные утилиты - надежней и быстрее. В качестве простого примера приведу вариант кодирования строки по алгоритму ROT13, после чего строка делится на несколько подстрок (в зависимости от требуемой длины ключа) и в каждой такой подстроке выполняется слияние всех символов простым XOR.
читать дальше »
Код: Выделить весь код
@echo off
Set "STR1=TEST_0123_test_4567"
Set "STR2=test_0123_TEST_4567"

Call:EncodeString 4 STR1
Call:EncodeString 4 STR2

Pause>Nul
EXIT

:EncodeString   %KeyLength_By2%  %VarString%  [%VarKey%]
::------------------------------------------------------
 SetLocal EnableDelayedExpansion
(For /L %%i In (32,1,126) Do (Set/A "$n=%%i+13-(%%i-32)/82*95"
  %COMSPEC% /C "Exit !$n!"& Set "$n=!=ExitCode:~-2!"
  %COMSPEC% /C "Exit %%i" & Set "$_!=ExitCodeASCII!=!$n!")
 Set "tmp=!%~2!!%~2!FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A09080706050403020100"
 Set/A "LN=0x!tmp:~510,2!,IN=LN/%~1+1"& Set "NEWSTR="
 For /L %%m In (1,1,%~1) Do (Set/A XOR=0
  For /L %%n In (1,1,!IN!) Do (Set/A "LI=%%m-1+(%%n-1)*%~1"
    Call Set "CHR=%%%~2:~!LI!,1%%"& Set "ASC="
    If Defined CHR Call Set "ASC=0x%%$_!CHR!%%"
    Set/A "XOR=XOR^ASC")
  %COMSPEC% /C "Exit !XOR!"& Set "NEWSTR=!NEWSTR!!=ExitCode:~-2!")
)
 EndLocal& If "%~3"=="" (Echo:%NEWSTR%) Else Set "%~3=%NEWSTR%"
GoTo:EOF

особенности метода:
- в строке не должно быть русских букв (только ASCII);
- регистр не учитывается (видно из примера);
- длина строки не должна превышать 255 символов.

P.S. вариант на VBS: VBS/WSH/JS - Вычисление хэша MD5 строки
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:28, 05-06-2011 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - генератор ключей

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Генератор титульных листов Hector Программирование и базы данных 2 29-11-2010 19:21
Генератор Autoit script zmeeust AutoIt 24 18-07-2009 08:20
Интернет - Генератор кодов ссылок? Yez Программное обеспечение Windows 0 26-05-2009 18:12
Log/Monitoring - генератор пакетов Busla Сетевые технологии 2 25-04-2009 10:58
генератор кода Trojn Мобильные ОС, смартфоны и планшеты 5 04-04-2004 04:06




 
Переход