|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Вопрос по скрипту для генерации паролей. |
|
CMD/BAT - Вопрос по скрипту для генерации паролей.
|
Новый участник Сообщения: 2 |
Профиль | Отправить PM | Цитировать
Доброго времени всем.
Подскажите пожалуйста, как будет выглядеть код батника, если необходимо сгенерировать все возможные пароли без повторов, содержащие данный набор символов и букв: 0123456789abcdefghijklmnopqrstuvwxyz Длина пароля - 6 букв и цифр. С сохранением всех сгенерированных паролей в файл. Перепробовал не один батник. Но то, генерация рандомная по кол-ву цифр, то скрипт генерирует по одному паролю. |
|
Отправлено: 15:34, 12-05-2020 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
1. Я уже говорил о фундаментальном смысле уникальности паролей. 2. Такую задачу четко поставил автор:
Цитата Foreigner:
Цитата Foreigner:
Pади интереса: $rep=0;$k=0 while($rep -lt 1){$k++ $pass=1..12960|foreach { (get-random $([char[]]'0123456789abcdefghijklmnopqrstuvwxyz') -count 6) -join '' } $rep=($pass.Count-($pass|sort -U).count) } "Первый повтор встречается на $k попытке" |
|||||
Последний раз редактировалось Fors1k, 13-05-2020 в 14:49. Отправлено: 14:24, 13-05-2020 | #31 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Вот решение "в лоб" для 6 символов в строке
@Echo Off Set "Simb=0 1 2 3 4 5 6 7 8 9 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" rem Set "Simb=0 1 2 3 4 5 6 7 8 9" Set "FileOut=Z:\Box_Out\FileOut.txt >"%FileOut%" ( Call Echo %%time%% For %%i In (%Simb%) Do ( For %%j In (%Simb%) Do ( If Not %%j==%%i For %%k In (%Simb%) Do ( If Not %%k==%%i If Not %%k==%%j For %%l In (%Simb%) Do ( If Not %%l==%%i If Not %%l==%%j If Not %%l==%%k For %%m In (%Simb%) Do ( If Not %%m==%%i If Not %%m==%%j If Not %%m==%%k If Not %%m==%%l For %%n In (%Simb%) Do ( If Not %%n==%%i If Not %%n==%%j If Not %%n==%%k If Not %%n==%%l If Not %%n==%%m Echo %%i%%j%%k%%l%%m%%n ) ) ) ) ) ) Call Echo %%time%% ) Exit /B Для отладки брал набор из 10 символов. Результат:
Вообще-то задача достаточно бессмысленая, разве что как лаба. Практически надо генерировать пароль рандомным образом для каждого конкретного случая, и вероятность того, что пароли совпадут, достаточно низкая |
|
------- Последний раз редактировалось megaloman, 13-05-2020 в 20:38. Отправлено: 19:28, 13-05-2020 | #32 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
@echo off set "nA=ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" set "l=6"&:[длина пароля] set "n=10"&:[количество вариантов] set "f=keys.log" setlocal enabledelayedexpansion for /l %%n in (1 1 %n%) do ( for /l %%n in (1 1 %l%) do call :# >>"%f%" echo: ) endlocal pause& exit :# set /a r=%random%%%36 set "s=!nA:~%r%,1!" >>"%f%" <nul set /p=%s% exit /b |
|
Отправлено: 21:45, 13-05-2020 | #33 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
param( $pathOut = 'C:\temp\test.txt', $symbols = '0123456789' )cls $file=New-Object IO.StreamWriter ([IO.File]::Open($pathOut,'Create')) [string[]]$sym=$symbols.ToCharArray() (Measure-Command{ foreach($a in $sym){ foreach($b in (diff $sym ($a)).InputObject){ foreach($c in (diff $sym ($a,$b)).InputObject){ foreach($d in (diff $sym ($a,$b,$c)).InputObject){ foreach($e in (diff $sym ($a,$b,$c,$d)).InputObject){ foreach($f in (diff $sym ($a,$b,$c,$d,$e)).InputObject){ $file.Writeline("$a$b$c$d$e$f");$i++ }}}}}}$file.Close() }).TotalSeconds "Комбинаций: $i" |
|
Отправлено: 14:17, 14-05-2020 | #34 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата Fors1k_m:
для [Powershell.CSharp]::Combinations(6,10) TotalMilliseconds : 72,4355 |
|
------- Отправлено: 16:26, 14-05-2020 | #35 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Цитата Fors1k_m:
На моём суперкомпе Ваш код делается 13', мой - 17', слегка его соптимизировал - 9' Демонстрирую:
@Echo Off
Set "S=0 1 2 3 4 5 6 7 8 9 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 "S=0 1 2 3 4 5 6 7 8 9"
Set "FileOut=Z:\Box_Out\FileOutNew.txt"
SetLocal EnableExtensions EnableDelayedExpansion
>"%FileOut%" (
Call Echo %%time%%
For %%i In (%S%) Do (
Set "S1=!S:%%i=!" &For %%j In (!S1!) Do (
Set "S2=!S1:%%j=!" &For %%k In (!S2!) Do (
Set "S3=!S2:%%k=!" &For %%l In (!S3!) Do (
Set "S4=!S3:%%l=!" &For %%m In (!S4!) Do (
Set "S5=!S4:%%m=!" &For %%n In (!S5!) Do Echo %%i%%j%%k%%l%%m%%n
)
)
)
)
)
Call Echo %%time%%
)
Exit /B
|
|
------- Последний раз редактировалось megaloman, 14-05-2020 в 18:10. Отправлено: 17:53, 14-05-2020 | #36 |
Ветеран Сообщения: 1754
|
Прямой перебор по индексу:
$y = 6 # длина комбинации $x = 0..9 # количество элементов [array] $code = "for (`$c0 = 0; `$c0 -le $($y - 1); `$c0++) {" for ($i = 1; $i -le ($y - 1); $i++) { $code += "for (`$c$i = 0; `$c$i -le $($x.count-1); `$c$i++) {" } $res = for ($i = 0; $i -le ($y - 1); $i++) { "`$(`$c$i)" } $code += '"' + ($res -join '') + '"' $code += "}" * $y $code = $code -join "`n" iex $($code) | sc test.txt # 600000 записей Наверное со стримрайтером будет быстрее. |
Отправлено: 02:37, 15-05-2020 | #37 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
Ошибка в первом for: Цитата Foreigner:
Кстати, что бы не писать все время -1, можно исользовать -lt: Теперь получится верное количество. На моем олд пк результат 43 сек. |
||
Последний раз редактировалось Fors1k, 15-05-2020 в 03:57. Отправлено: 03:44, 15-05-2020 | #38 |
Ветеран Сообщения: 1754
|
Fors1k_m,
Вы код поправьте. Выдает ворох ошибок:
C:\Users\user\Desktop\3.ps1:16 знак:22 + $file.Writeline("$a$b$c$d$e$f");$i++ + ~ Отсутствует '')'' в списке параметров функции. C:\Users\user\Desktop\3.ps1:16 знак:24 + $file.Writeline("$a$b$c$d$e$f");$i++ + ~~~~~~~~~~~~~~~~~ Непредвиденная лексема "$b$c$d$e$f");$i++ }}}}}}$file.Close() }).TotalSeconds "Комбинаций:" в выражении или операторе. C:\Users\user\Desktop\3.ps1:16 знак:26 + $file.Writeline("$a$b$c$d$e$f");$i++ + ~~~~~~~~~~~~~~~ Непредвиденная лексема "$c$d$e$f");$i++ }}}}}}$file.Close() }).TotalSeconds "Комбинаций:" в выражении или операторе. C:\Users\user\Desktop\3.ps1:16 знак:28 + $file.Writeline("$a$b$c$d$e$f");$i++ + ~~~~~~~~~~~~~ Непредвиденная лексема "$d$e$f");$i++ }}}}}}$file.Close() }).TotalSeconds "Комбинаций:" в выражении или операторе. C:\Users\user\Desktop\3.ps1:16 знак:30 + $file.Writeline("$a$b$c$d$e$f");$i++ + ~~~~~~~~~~~ Непредвиденная лексема "$e$f");$i++ }}}}}}$file.Close() }).TotalSeconds "Комбинаций:" в выражении или операторе. C:\Users\user\Desktop\3.ps1:16 знак:32 + $file.Writeline("$a$b$c$d$e$f");$i++ + ~~~~~~~~~ Непредвиденная лексема "$f");$i++ }}}}}}$file.Close() }).TotalSeconds "Комбинаций:" в выражении или операторе. C:\Users\user\Desktop\3.ps1:16 знак:34 + $file.Writeline("$a$b$c$d$e$f");$i++ + ~~~~~~~ Непредвиденная лексема "");$i++ }}}}}}$file.Close() }).TotalSeconds "" в выражении или операторе. C:\Users\user\Desktop\3.ps1:20 знак:2 + "Комбинаций: $i" + ~~~~~~~~~~~ Непредвиденная лексема "Комбинаций:" в выражении или операторе. C:\Users\user\Desktop\3.ps1:20 знак:16 + "Комбинаций: $i" + ~ В строке отсутствует завершающий символ: ". + CategoryInfo : ParserError: (:) [], ParseException + FullyQualifiedErrorId : MissingEndParenthesisInFunctionParameterList 0 144 > |
Отправлено: 09:03, 15-05-2020 | #39 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
У megaloman тоже работает: Цитата megaloman:
|
||
Последний раз редактировалось Fors1k, 15-05-2020 в 11:25. Отправлено: 09:54, 15-05-2020 | #40 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Доступ - Вопрос по безопасности сохранённых паролей в IE 10. | Crysiser | Microsoft Windows 8 и 8.1 | 5 | 30-06-2016 14:21 | |
2010 - макрос для генерации значений по условиям | Elizavetta | Microsoft Office (Word, Excel, Outlook и т.д.) | 12 | 03-12-2015 12:21 | |
Вопросы по скрипту Lightbox | maasja | Вебмастеру | 14 | 04-02-2011 12:39 | |
fpdf класс для генерации pdf с помощью php | zvezda_t | Вебмастеру | 0 | 29-09-2010 09:06 | |
Вопрос - Программы для генерации и хранения паролей | SashaKl | Защита компьютерных систем | 13 | 08-10-2009 15:44 |
|