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

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

Ответить
Настройки темы
CMD/BAT - Вопрос по скрипту для генерации паролей.

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


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

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


Изменения
Автор: SoulGood
Дата: 12-05-2020
Доброго времени всем.
Подскажите пожалуйста, как будет выглядеть код батника, если необходимо сгенерировать все возможные пароли без повторов, содержащие данный набор символов и букв:
0123456789abcdefghijklmnopqrstuvwxyz
Длина пароля - 6 букв и цифр.
С сохранением всех сгенерированных паролей в файл.
Перепробовал не один батник. Но то, генерация рандомная по кол-ву цифр, то скрипт генерирует по одному паролю.

Отправлено: 15:34, 12-05-2020

 

Аватара для Fors1k

Старожил


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

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


Цитата Busla:
Цитата YuS_2:
1947792 - число комбинаций... »
вы посчитали размещение без повторений »
Это результат расчета количества сочетаний.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:27, 13-05-2020 | #21



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

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


Ветеран


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

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


Busla, а вот тут вопрос — как именно трактовать авторское:
Цитата SoulGood:
без повторов »
.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:30, 13-05-2020 | #22


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Fors1k_m:
Почему 1000 в секунду? »
, где-то попалась на глаза цифра, вот и подумалось...

Цитата Fors1k_m:
так как набор символов неисчерпаем »
Хмм, это чего? набор из 36 символов - что тут неисчерпаемого, поясните?

Цитата megaloman:
надо посчитать, сколько чисел содержится в диапазоне от 000000 до 999999. »
Цитата megaloman:
Считаем: раз два три четыре пять .... МИЛЬЁН! (если приплюсовать 000000) »
комбинаторика - раздел математики, следовательно наука точная. Если результаты не сходятся, значит в наличии ошибка... либо в формулах (что маловероятно, ибо доказываются), либо в расчетах (что гораздо более вероятно).
При анализе, достаточно ясно вырисовывается картинка, что за основу расчетов была взята формула не предполагающая наличие повторов символов, в этом моя ошибка.
В общем, формула выбрана неверно, следовательно, количество допустимых сочетаний комбинаций будет ещё больше...
Смотрим:
Код: Выделить весь код
function get-factorial([int]$num = 1) {
	switch ($num -le 1) {
		$true { $num }
		$false {$num*(get-factorial(--$num))}
	}
}

$n = '0123456789abcdefghijklmnopqrstuvwxyz'
$m = 6

# количество уникальных сочетаний C = n!/m!*(n-m)!
$C = (get-factorial $n.length)/((get-factorial $m)*(get-factorial ($n.length - $m)))
$C

# количество неуникальных сочетаний C = (n+m-1)!/m!*(n-1)!
$Cr = (get-factorial ($n.length + $m - 1))/((get-factorial $m)*(get-factorial ($n.length - 1)))
$Cr

# количество уникальных размещений A = n!/(n-m)!
$A = (get-factorial $n.length)/(get-factorial ($n.length - $m))
$A

# количество неуникальных размещений A = n^m
$Ar = [math]::pow($n.length,$m)
$Ar
И получаем 2176782336 - неуникальных размещений.
Козьма Прутков, конечно же, совершенно прав.

Цитата megaloman:
Кстати, если длина строки =2 (00 - 99) Ваш скрипт декларирует 90. - что-то в консерватории надо менять. »
Поменяем и получим то, что и должно быть - 100, просто находили мы не то, что следовало из-за ошибочного выбора формулы...

Цитата Busla:
прав, вы посчитали размещение без повторений »
совершенно верно... пока писал ответ с перерывами на обед, тут уже всё разжевали без меня...
Ну да и пусть тоже будет...

Цитата Iska:
как именно трактовать авторское »
в самом широком смысле, то есть - как душе угодно
Поэтому, видимо и требуются все варианты...

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 13-05-2020 в 12:23.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:08, 13-05-2020 | #23


Аватара для Fors1k

Старожил


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

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


Цитата Iska:
как именно трактовать »
Так как речь идет о паролях, то по логике подразумевается уникальность(отсутствие повторов) самих паролей, что бы пароль от аккаунта Пети на подошел к аккаунту Коли.

Так, например, код из поста 5
Цитата Foreigner:
все комбинации перебора строки»
Код: Выделить весь код
0..99 | foreach { (New-Guid).Guid.Substring(0,6) }
сработает неверно для имеющейся задачи, так как выдаст неуникальные значения:
Код: Выделить весь код
$pass=0..1296 | foreach { (New-Guid).Guid.Substring(0,2) }
cls
"Повторов: "+($pass.Count-($pass|sort -U).count)

#~Повторов: 1042
Повторы символов внутри пароля не влияют на его уникальность(ab != aa).

Цитата YuS_2:
Хмм, это чего? набор из 36 символов - что тут неисчерпаемого, поясните? »
Исчерпаемый пул:
Набор символов - материальные шары в корзине. Если мы взяли шар с буквой 'a' в качестве первого символа, то в корзине его больше нет, и на месте второго символа он уже не окажется.
Так мы получим 1 402 410 240 вариантов.

Неисчерпаемый пул:
Набор символов - набор символов в переменной. Если мы взяли букву 'a' в качестве первого символа, то из переменной она никуда не пропадает, следовательно имеет возможность оказаться на месте и второго символа.
Так мы получим 2 176 782 336 вариантов.

Последний раз редактировалось Fors1k, 13-05-2020 в 12:41.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:16, 13-05-2020 | #24


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Fors1k_m:
Неисчерпаемый пул »
Мысль понял, спасибо.

-------
scio me nihil scire. Ѫ


Отправлено: 12:35, 13-05-2020 | #25


Ветеран


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

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


Fors1k_m
Цитата:
Код: Выделить весь код
$pass=0..1296 | foreach { (New-Guid).Guid.Substring(0,2) }
А если в подстроку взять только первый символ, как скоро он повторится?


Код: Выделить весь код
0..1296 | % { (New-Guid).Guid.Substring(0,6) } | group | ? Count -gt 1
Не возвращает ни одной группы. Потому, что они все, 1297 групп, из одного элемента

Последний раз редактировалось Foreigner, 13-05-2020 в 13:16.


Отправлено: 12:52, 13-05-2020 | #26


Аватара для Fors1k

Старожил


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

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


Цитата Foreigner:
Код: Выделить весь код
0..1296 | % { (New-Guid).Guid.Substring(0,6) } | group | ? Count -gt 1
Не возвращает ни одной группы. Потому, что они все, 1297 групп, из одного элемента »
1296 - это максимальное количество вариантов для комбинации из двух символов.(Код для проверки)

Так что либо нужно считать для комбинаций из двух:
Код: Выделить весь код
cls;0..1296 | % { (New-Guid).Guid.Substring(0,2) } | group | ? Count -gt 1
Либо для комбинации из шести добавьте хотя бы один нолик количеству вариантов:
Код: Выделить весь код
cls;0..12960 | % { (New-Guid).Guid.Substring(0,6) } | group | ? Count -gt 1

Отправлено: 13:25, 13-05-2020 | #27


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


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

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


Код: Выделить весь код
cls;0..12960 | % { (New-Guid).Guid.Substring(0,6) } | group | ? Count -gt 1
Код: Выделить весь код
Count Name                      Group
----- ----                      -----
    2 14a6c0                    {14a6c0, 14a6c0}
    2 6c8ceb                    {6c8ceb, 6c8ceb}
    2 f75d25                    {f75d25, f75d25}
    2 4d6e03                    {4d6e03, 4d6e03}
У меня вышло 4 повтора.

Отправлено: 13:30, 13-05-2020 | #28


Ветеран


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

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


Цитата Fors1k_m:
1296 - это максимальное количество вариантов для комбинации из двух символов »
Это не перебор символов, из множества а их генерация. Естественно, что они могут повторяться. К тому же это лишь подстрока GUID (32 символа без дефисов).
12961 вариант из шести символов выдал три повтора, две сотых процента. Но это важно вообще? Возьми из массива только уникальные елементы.

Отправлено: 13:57, 13-05-2020 | #29


Ветеран


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

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


Pади интереса:
Код: Выделить весь код
0..12960 | % { (get-random $([char[]]'0123456789abcdefghijklmnopqrstuvwxyz') -count 6) -join '' } | group | ? count -gt 1
Не выдал повторов с шести попыток.

Отправлено: 14:19, 13-05-2020 | #30



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - Вопрос по безопасности сохранённых паролей в 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




 
Переход