Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Генератор паролей (http://forum.oszone.net/showthread.php?t=293795)

registeruser1 12-01-2015 15:03 2454949

Генератор паролей
 
123

Iska 12-01-2015 16:57 2454982

Цитата:

Цитата registeruser1
начал делать генератор паролей именно на bat »

Не делайте. Его генератор %RANDOM% ни разу не случайный.

Цитата:

Цитата registeruser1
cscript /nologo /e:jscript »

И какой же это пакетный файл? Не страдайте такого рода извращениями, делайте уж сразу на WSH или PoSH (или берите готовые, например: Source code for pwgen.vbs).

Что Вы хотите — толком неясно. И, да — имейте в виду: объект Automation «ScriptPW.Password» существует только в Windows XP (хотя «ручками» библиотеку и можно перенести и зарегистрировать).

registeruser1 12-01-2015 18:42 2455048

Цитата:

Его генератор
В смысле ЕГО?

Цитата:

ни разу не случайный
Именно по тому я его и делаю, что мне не случайный нужен.

Цитата:

делайте уж сразу на WSH или PoSH
Понимаю вас, но именно на bat нужен.

Цитата:

Automation «ScriptPW.Password» существует только в Windows XP
А как можно заменить его для того что бы работал и на ХР и на 7\8 ?
Если не трудно подскажита пож-ста.

Цитата:

Что Вы хотите — толком неясно
Эммм, честно говоря это странно прозвучит, но по другому никак это не описать - алгоритм генератора паролей, состоящий из групп сложных паролей, с ключевым доступом к паролю. Во как получается ))).
Если по-русски - человеку не надо запоминать пароль к примеру типа (r6h8wr$%^wr4t%*h6w*8r&@$@%44th), ему просто нужно помнить ну например номер своей машины из 3-х цифр 543 и все.

Я смотрел несколько решений на bat, но они все рандомные, тут все закономерно, что мне и надо...
Если не сложно подсобите хоть чем-нибудь. Заранее благодарен.

Iska 12-01-2015 19:19 2455077

Цитата:

Цитата registeruser1
В смысле ЕГО? »

Интерпретатора пакетных файлов — «cmd.exe».

Цитата:

Цитата registeruser1
Именно по тому я его и делаю, что мне не случайный нужен. »

???

Цитата:

Цитата registeruser1
А как можно заменить его для того что бы работал и на ХР и на 7\8 ? »

К сожалению, в рамках указанной категории — никак.

Цитата:

Цитата registeruser1
состоящий из групп сложных паролей, »

Я посмотрел на группы в коде — не верю про «сложные».

Цитата:

Цитата registeruser1
Если по-русски - человеку не надо запоминать пароль к примеру типа (r6h8wr$%^wr4t%*h6w*8r&@$@%44th), ему просто нужно помнить ну например номер своей машины из 3-х цифр 543 и все. »

Надо понимать, что это не генератор паролей, а менеджер паролей, наподобие KeePass — Википедия, так? Если так, то отчего бы не использовать тот же «KeePass»?!

Или я по-прежнему не понимаю цели и задачи?

registeruser1 12-01-2015 19:38 2455090

Цитата:

Я посмотрел на группы в коде — не верю про «сложные».
Я же написал там что это просто для отладки кода, там будут сложные не запоминающиеся пароли стоять.


Цитата:

наподобие KeePass
Нет. KeePass это генератор паролей почти любой сложности, но вы сможете эти парои запомнить? Я тоже ))), что постоянно и случается, но это не важно.
Например тут - ( y=w(l"]\dQ5>kwx ) ключ пароля 289 и всех делов-то, а пароль нужно перебирать что бы подобрать ну очень долго. Причем длинну и сложность самих паролей можно в батнике менять как угодно, длинна может быть до пароноидальность большой. Вот суть, ну незнаю как еще объяснить. Вы наверное не запускали мой батник.

Я делал сначало обычным способом батник, без (Automation «ScriptPW.Password»), это кусок у меня был откуда-то, но он пригодился.
Вот первый вариант, но он с одним недостатком - вводимые цифры видимы для окружающих, но он будет на всех системах работать -

Код

:0
if defined sValue1 (
set /a sValue0 = pss0
>Log.txt echo !pss0!
Start "" "log.txt"
tasklist | find "notepad.exe"
del log.txt
set sMessage=happy end
)
exit

:1
if defined sValue1 (
set /a sValue1 = pss1
>Log.txt echo !pss1!
Start "" "log.txt"
tasklist | find "notepad.exe"
del log.txt
set sMessage=happy end
)
exit

:2
if defined sValue1 (
set /a sValue2 = pss2
>Log.txt echo !pss2!
Start "" "log.txt"
tasklist | find "notepad.exe"
del log.txt
set sMessage=happy end
)
exit

:3
if defined sValue1 (
set /a sValue3 = pss3
>Log.txt echo !pss3!
Start "" "log.txt"
tasklist | find "notepad.exe"
del log.txt
set sMessage=happy end
)
exit

:4
if defined sValue1 (
set /a sValue4 = pss4
>Log.txt echo !pss4!
Start "" "log.txt"
tasklist | find "notepad.exe"
del log.txt
set sMessage=happy end
)
exit

:5
if defined sValue1 (
set /a sValue5 = pss5
>Log.txt echo !pss5!
Start "" "log.txt"
tasklist | find "notepad.exe"
del log.txt
set sMessage=happy end
)
exit

:6
if defined sValue1 (
set /a sValue6 = pss6
>Log.txt echo !pss6!
Start "" "log.txt"
tasklist | find "notepad.exe"
del log.txt
set sMessage=happy end
)
exit

:7
if defined sValue1 (
set /a sValue7 = pss7
>Log.txt echo !pss7!
Start "" "log.txt"
tasklist | find "notepad.exe"
del log.txt
set sMessage=happy end
)
exit

:8
if defined sValue1 (
set /a sValue8 = pss8
>Log.txt echo !pss8!
Start "" "log.txt"
tasklist | find "notepad.exe"
del log.txt
set sMessage=happy end
)
exit

:9
if defined sValue1 (
set /a sValue9 = pss9
>Log.txt echo !pss9!
Start "" "log.txt"
tasklist | find "notepad.exe"
del log.txt
set sMessage=happy end
)
endlocal
exit /b 0

Iska 12-01-2015 20:06 2455103

registeruser1, так и не смог понять Ваш глобальный замысел. Сожалею.

sov44 12-01-2015 20:13 2455106

registeruser1, попробуйте (из коллекции)
Код:

@Echo Off
:: Количество символов
Set PassLenght=9

SetLocal EnableDelayedExpansion EnableExtensions
Set TotalChars=65
Set CharSet=0123456789$#_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWQYZ
:Loop
Set /A Rnd=%TotalChars%*%Random%/32768
Set Pswd=!CharSet:~%Rnd%,1!%Pswd%
Set /A PassLenght-=1
If %PassLenght% GTR 0 GoTo Loop
Echo %Pswd%
Pause>Nul


registeruser1 12-01-2015 20:34 2455119

Наверное я плохо объясняю.... Сорри.
Вы пробовали запустить и ввести в батник какую-нибудь цифру? Например 5. Вам тут же откроется блокнот где будет написан пароль.
Так вот, 5 это часть ключа который должен состоять от 3-х до 9-ти цифр. Часть ключа от пароля который вам открывается в блокноте.
На данный момент с одной введенной цифрой этот пароль (ну по крайней мере у меня в батнике) состовляет 5 символов (это запросто можно изменить в коде).
Если в код настроить так что бы вводилось не менее 3-х и не более 9-ти цифр, то комбинация 5-ти символьных паролей идущих подряд в открывшемся блокноте будет гораздо устойчивее ко взлому и легка в запоминании, если конечно не говорить циферную комбинацию ключа к паролю.
В батнике вы набираете придуманную комбинацию ключа например из 3-х цифр, которую вы уж точно не забудете, например пусть это будет - 597.
По этому ключу батник вам в блокноте открывает ваш пароль, он будет выглядеть примерно так - 65h^46th8%46_d8&t4h!6dr#th-d&rt
Вам остается только скопировать данный пароль и вставить его куда потребуется что бы авторизоваться.
Я например для WI-FI делаю, но думаю что это довольно стойкий к перебору алгоритм да и легко запоминающийся.

Так вот, у меня получилось только с одной вводимой цифрой вывод пароля в блокнот, а нужно с 3-мя, 4-мя, 5-тью и так до 9-ти.
В общем как-то так...

sov44, спасибо большое, но мне не нужно рандомные, их навалом. Принцип я выше описал.

Iska 12-01-2015 21:06 2455130

Цитата:

Цитата registeruser1
Часть ключа от пароля который »

…хранится в пакетном файле. Потрясающе. О какой «стойкости» и «сложности» может идти речь?!

Цитата:

Цитата registeruser1
Вам остается только скопировать данный пароль и вставить его куда потребуется что бы авторизоваться. »

И всё это есть в KeePass. Причём пароли не хранятся в открытом виде. В отличие от. Это раз.

Второе — вся «стойкость» и «сложность» Ваших хранимых паролей любой сложности будет не выше, чем подбор этой самой «устойчивой комбинации» из пяти символов.

registeruser1 12-01-2015 21:17 2455139

Цитата:

хранится в пакетном файле.
Хорошо, пусть так. Но откуда вы знаете какая циферная комбинация у меня к моему паролю? Я вам и пароль могу показать даже, но никто его вжизнь не запомнит, даже если будет целый день сидеть и вбивать его в свой мозг. Я вам покажу даже комбинации из 10 паролей которые как вы говорите в батнике, но сколько комбинаций этих паролей нужно при переборе их?!
И последнее, если у меня не 3, а 5 цифр в ключе, правильно, это будет 25-ти символьный пароль!!! А предел как известно 63-64 символов. А если у меня ну например больше пяти цифр?!
В общем всей жизни не хватит перебирать все возможные комбинации ДАЖЕ зная алгоритм шифрования.
Ну и собственно что мне мешает в самом батнике менять длинну наборов символов групп паролей и сами символы?

Главное тут не говорить КЛЮЧ ШИФРОВАНИЯ к паролю...

Iska 12-01-2015 22:01 2455156

Цитата:

Цитата registeruser1
И последнее, если у меня не 3, а 5 цифр в ключе, правильно, это будет 25-ти символьный пароль!!! »

Нет. Это будет пятисимвольный пароль. Система не будет устойчивее самого слабого звена.

Цитата:

Цитата registeruser1
А если у меня ну например больше пяти цифр?! »

Будет большесимвольный пароль. Но ровно настолько, насколько там будет цифр.

registeruser1 12-01-2015 22:04 2455157

P.s.
Немного покумекал, и упростил код, насколько хватило моих скудных знаний.
Теперь я так думаю главная задача понятнее становится - нужно что бы когда в запущенном батнике пишешь 0123456789 и нажимаешь ввод, то в блокноте должно быть написанно так - 01102030405060708090

Код

@echo off
COLOR 0A
setlocal enableextensions enabledelayedexpansion
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.

set pss0=01
set pss1=10
set pss2=20
set pss3=30
set pss4=40
set pss5=50
set pss6=60
set pss7=70
set pss8=80
set pss9=90

set /p sValue1=Введите ключ пароля:
if "%sValue1%" equ "0" >Log.txt echo !pss0! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "1" >Log.txt echo !pss1! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "2" >Log.txt echo !pss2! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "3" >Log.txt echo !pss3! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "4" >Log.txt echo !pss4! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "5" >Log.txt echo !pss5! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "6" >Log.txt echo !pss6! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "7" >Log.txt echo !pss7! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "8" >Log.txt echo !pss8! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "9" >Log.txt echo !pss9! | Start "" "log.txt" | tasklist | find "notepad.exe"
del log.txt
endlocal
exit


Цитата:

Нет. Это будет пятисимвольный пароль.
5х5=25 символов.
В батнике же у меня каждая группа состоит из 5-тизначного пароля -

Код:

set pss0=ABCDE
ABCDE - будет в готовом варианте заменяться на пароль.

Iska 12-01-2015 22:20 2455161

Цитата:

Цитата registeruser1
Код:

if "%sValue1%" equ "0" >Log.txt echo !pss0! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "1" >Log.txt echo !pss1! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "2" >Log.txt echo !pss2! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "3" >Log.txt echo !pss3! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "4" >Log.txt echo !pss4! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "5" >Log.txt echo !pss5! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "6" >Log.txt echo !pss6! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "7" >Log.txt echo !pss7! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "8" >Log.txt echo !pss8! | Start "" "log.txt" | tasklist | find "notepad.exe"
if "%sValue1%" equ "9" >Log.txt echo !pss9! | Start "" "log.txt" | tasklist | find "notepad.exe"

»

Код:

>Log.txt echo !pss%sValue1%!
Start "" "log.txt"
tasklist.exe | find.exe /i "notepad.exe"

;).

Цитата:

Цитата registeruser1
5х5=25 символов. »

Коллега, Вы никак не поймёте — перебор будет только для Вашего пятисимвольного «простого» пароля. И количество «сложных» 25 символьных паролей будет ровно таким, сколько будет возможных пятисимвольных «простых» паролей.

registeruser1 12-01-2015 22:37 2455170

Вы имеете ввиду если человек знает алгоритм, то 5 цифр это 99,999 комбинаций подбора ключа к паролю... Не страшно алгоритм можно менять.

Iska 12-01-2015 22:45 2455173

Цитата:

Цитата registeruser1
если человек знает алгоритм, »

Нет. Ему не надо знать алгоритм. Ему достаточно воспользоваться Вашим же кодом (предположим даже, что это не пакетный файл, где всё настежь, а бинарный и зашифрованный код, где нет ничего в открытом виде). Он просто перебирает все возможные варианты из пяти символов «простого» пароля и на выходе Вашего кода получает соответствующие им все возможные комбинации из xxx-символов «сложного» пароля.

registeruser1 12-01-2015 22:56 2455174

Цитата:

из пяти символов «простого»
Ну это если я ему это скажу что у меня 5 символов иначе не зная этого он будет перебирать вообще все возможные комбинации до синих веников в глазах, еще и правнукам передаст эстафету )))...
То что вы называете "простым паролем" - это и есть КЛЮЧ к паролю.
Но кто же ему скажет такое?! Не зная точной информации о длинне "ключа" он будет знать что нужно перебирать все возможные варианты и никто за это не возмется. ))).

Foreigner 13-01-2015 00:17 2455190

registeruser1, По своей сути это менеджер паролей, которые идут по порядку начиная с нуля:
Код:

0 = 01
1 = 10
...
01 = 0110
02 = 0120
...
999 = 909090

Остается узнать год рождения коллеги или его домашний номер телефона. :)

Iska 13-01-2015 00:22 2455191

Цитата:

Цитата registeruser1
Ну это если я ему это скажу »

Без если. Безопасность, основанная на незнании, уязвима. Вы ведь скажете это пользователю, не так ли? И этого будет достаточно.

Цитата:

Цитата registeruser1
То что вы называете "простым паролем" »

Вы упоминали «просто», потому я так его и обозвал.

Цитата:

Цитата registeruser1
это и есть КЛЮЧ к паролю. »

Хоть замком назовите, сложность останется ровно та же.

yurfed 13-01-2015 02:22 2455205

Цитата:

Цитата registeruser1
не зная этого он будет перебирать вообще все возможные комбинации до синих веников в глазах, »

Точно так же можно простенький bruteforce замутить или скачать подходящее :)
Вам лучше позаботиться о шифровании содержимого батника. Например Crypt4Free 5.64

registeruser1 13-01-2015 05:39 2455218

Мммм, расфлудились что то мы свами тут, ну ладно...

Код:

Остается узнать год рождения коллеги или его домашний номер телефона.
Да здравствует социальная инженерия..!!!
А кто вам сказал что это будет МОЙ день рождения? Это может быть например день победы 09051945 - чем ни дата? 8 цифр.
И запоминать просто и стойкий 99.999.999 вариантов для перебора ключа к паролю, можете попробовать )))) А сам пароль этого 8-ми циферного ключа получится на пример минимум 40 символов (в зависимости от сложности алгоритма в самом коде) состоящих из маленьких, больших букв, цифр и символов.
Или день рождения Карла Маркса ))))) Ну вариантов ровно на парочку миллионов дат...)))
Тут в общем все зависит от самого человека сколько он поставит символов, от 3-х до 9-ти, такой стойкости и будет ключ к паролю.

Цитата:

Вам лучше позаботиться о шифровании содержимого батника.
Спасибо огромное коллега за подсказку, надо будет подумать над этим, а то алгоритм всем интересен а помочь никто не хочет.

Foreigner 13-01-2015 08:35 2455252

registeruser1, А представь, что батник кто-то изменит, например значения паролей:
Код:

set pss0=ABDCE
Пароли окажутся неверными. Т.е. нет никакой защиты.

registeruser1 13-01-2015 08:55 2455256

Foreigner,
Ну во первых, батник делаю для себя и маловероятно что его кто-то изменит.
Во вторых специально делаю код универсальным и именно в батнике что бы при надобности можно было алгоритмы менять.
И в третьих если нужно будет я его конвертирую в exe-шник.
Как-то так...

Foreigner 13-01-2015 09:42 2455279

Цитата:

Цитата registeruser1
батник делаю для себя »

Тогда какой смысл в нем? С таким же успехом можно написать все пароли в блокноте и положить на рабочий стол. Или, если паранойя, вложить в шифрованный архив.

registeruser1 13-01-2015 09:46 2455280

Скрытый текст
если нужно будет я его конвертирую в exe-шник.

Iska 13-01-2015 12:32 2455358

Цитата:

Цитата registeruser1
а то алгоритм всем интересен »

Упаси бог!

registeruser1 13-01-2015 13:04 2455374

Ну что ж, и на том Вас благодарю...
Буду решать свою задачу.
Спасибо за общение...

Foreigner 13-01-2015 13:50 2455389

registeruser1, Спасибо за саму идею, может не с паролями, так с чем-нибудь еще пригодится. Например для какой-нибудь викторины или еще чего-нибудь.

registeruser1 13-01-2015 14:04 2455395

Рад помочь...

Komoliddin_Fuzaylitdinov@fb 23-07-2020 09:53 2929023

Цитата:

Цитата sov44
registeruser1, попробуйте (из коллекции)
Код:
@Echo Off
:: Количество символов
Set PassLenght=9
SetLocal EnableDelayedExpansion EnableExtensions
Set TotalChars=65
Set CharSet=0123456789$#_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWQYZ
:Loop
Set /A Rnd=%TotalChars%*%Random%/32768
Set Pswd=!CharSet:~%Rnd%,1!%Pswd%
Set /A PassLenght-=1
If %PassLenght% GTR 0 GoTo Loop
Echo %Pswd%
Pause>Nul »

а как ограничит символы?
мне надо чтобы был 20 шт : Set CharSet=0123456789ABCDEFGHIJKLMNOPQRSTUVWQYZ
Пример: 20J24W34NZN6ZSLQT1GS

Foreigner 23-07-2020 11:00 2929035

Код:

Echo %Pswd:~0,20%
Как вариант 20-значного пароля, powershell
Код:

(New-Guid).Guid.Split('-')[0..3] -join ''

Busla 23-07-2020 11:32 2929038

Foreigner, бесполезно извлекать 20-символьную подстроку из 9-символьного пароля

В общем случае GUID совершенно не подходит для создания паролей. Нужно просто понимать как и для чего он формируется: GUID предсказуемо уникальный, а первые биты - так вообще совершенно неуникальный номер версии. Первые реализации формировали GUID тупо конкатенацией mac-адреса и времени. Современные реализации более хитрые, но случайного там совсем немного.

Komoliddin_Fuzaylitdinov@fb,
нужно в коде указать желаемую длину пароля: PassLenght
и размер алфавита (длину CharSet): TotalChars

Foreigner 23-07-2020 11:47 2929039


Цитата:

Цитата Busla
В общем случае GUID совершенно не подходит для создания паролей. »

пару месяцев назад мерялись паролями. Guid, да, неуникальный, на миллион пара совпадений при выборке из него подстроки (не 32 символа [a-z0-9], а вроде 8 или 12).

Можно конечно
Код:

(Get-Random ([char[]](48..57 + 97..122)) -Count 20) -join ''
Или
Код:

Add-Type -AssemblyName System.Web
[System.Web.Security.Membership]::GeneratePassword(20,0)

Но смысл?

greg zakharov 23-07-2020 14:32 2929060

Цитата:

Цитата Iska
Не делайте. Его генератор %RANDOM% ни разу не случайный.

От слова "совсем". Случайность в информатике невозможна в принципе, а называемое "случайным" фактически является псевдослучайным.

Источник истинной случайности найти крайне сложно, если это вообще возможно, отсюда и такая штука как ГСПЧ (например, вихрь Мерсена). ГСПЧ, между тем, также используется для генерации GUID\UUID, так что не соль важно на основе последних генерируется пароль или всё же посредством pwsh, например:
Код:

-join(Get-Random ('!'..'z') -Count 20)
суть всё равно сводится к эфемерности случайности как таковой.


Время: 21:10.

Время: 21:10.
© OSzone.net 2001-