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

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

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

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


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

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


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

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

 

Ветеран


Contributor


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

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


У меня тоже был ворох ошибок, обновил PowerShell до 5.1

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 10:08, 15-05-2020 | #41



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

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


Ветеран


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

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


Изображения
Тип файла: png ss.png
(51.1 Kb, 5 просмотров)


megaloman:
Цитата:
обновил PowerShell до 5.1
Код: Выделить весь код
$host.version.tostring()
5.1.18362.752
Код: Выделить весь код
$host.version.tostring()
7.0.0

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


Отправлено: 11:57, 15-05-2020 | #42


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Foreigner:
Прямой перебор по индексу: »
надо не числа, а символы
для чисел, есть более быстродействующее решение...

Цитата megaloman:
обновил PowerShell до 5.1 »
а ещё лучше, установить параллельно powershell core v 7.0
У него много оптимизаций было... и циклы там работают быстрее, примерно в 2 раза

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

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

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


Ветеран


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

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


Цитата YuS_2:
надо не числа, а символы »
А какая разница? Индекс он что для чисел, что для символов... число
А то, что есть способы быстрее, то кто бы спорил.

Отправлено: 13:36, 15-05-2020 | #44


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Foreigner:
А какая разница? Индекс он что для чисел, что для символов... »
Если производится замер быстродействия, то он будет некорректен, ибо работа с символами приводит к замедлению... да и топик сам не про числа-индексы ведь.
Тем не менее, Ваш способ достаточно интересный, возьму "на вооружение"

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


Отправлено: 16:59, 15-05-2020 | #45


Ветеран


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

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


Цитата YuS_2:
ибо работа с символами приводит к замедлению... »
В данном случае скрипт работает только с индексами массива, а они [int]
Запустите с буквенно-цифровым вариантом, разницы нет, зависит только от количества циклов:
Скрытый текст

Код: Выделить весь код
$cmb = 4
$arr = 'a','b','c','d',2,0

$code =
for ($i = 0; $i -le ($cmb - 1); $i++)
{
    "for (`$c$i = 0; `$c$i -le $($arr.Length - 1); `$c$i++) {"
}

$res =
for ($i = 0; $i -le ($cmb - 1); $i++)
{
    "`$(`$arr[`$c$i])"
}

$code += '"' + ($res -join '') + '"'
$code += "}" * $cmb
$code = $code -join "`n"

# $code   # проверка сгенерированного кода

Invoke-Expression $($code) | Set-Content test.txt

PS. Не претендую на самый быстрый и логически правильный вариант
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:04, 15-05-2020 | #46


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Foreigner:
Запустите с буквенно-цифровым вариантом, разницы нет »
Совсем другое дело...

Вот ещё вариант ... правда он чуть медленнее, хоть и с одним циклом всего.
Код: Выделить весь код
param (
	[string]$n = 'abcdefghij',
	[int]$m = 6
)

function combinations ([int]$x, [string]$y, [int]$lim) {
	$chararr = $y.tochararray()
	for ($j=0;$j -lt $lim;$j++){
		$k = [string[]]"$j".padleft($x,'0').tochararray()
		-join $chararr[$k]
	}
}

$z = [math]::pow($n.length,$m)

combinations $m $n $z |set-content out_test.txt

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

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

Отправлено: 04:57, 16-05-2020 | #47


Аватара для YuS_2

Crazy


Contributor


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

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


Ну и напоследок, победитель нашего конкурса генераторов прямого перебора :
Код: Выделить весь код
param(
	[string]$str = 'abcdefghij',
	[int] $lim = 6,
	[string]$path = '.\arrangement_wr_csharp_2.txt'
)

add-type @"
using System;
using System.Collections.Generic;
public class Arrangement
{
	static String Convert(string sym, int num, int tLen) {
		var sym0 = sym[0];
		var len = sym.Length;
		var res = "";
		int ind;
		while (num > 0) {
			ind = num%len;
			num = num/len;
			res = sym[ind] + res;
		}
		return res.PadLeft(tLen, sym0);
	}
	public static IEnumerable<String> ArrangWithRep(string sym, int len){
		for (var i = 0; i < Math.Pow(sym.Length, len); i++)
		yield return Convert(sym, i, len);
	}
}
"@
measure-command{
$file = new-object io.streamwriter ([io.file]::open($path,'Create'))
foreach ($item in ([arrangement]::arrangwithrep($str,$lim))){
	$file.writeline($item)
}
$file.close()
} | out-file time_arrangement_wr_csharp_2.txt
TotalSeconds : 4,6773432

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

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

Отправлено: 17:05, 16-05-2020 | #48


Ветеран


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

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


YuS_2, подозреваю, что на чистом C, без .Net, будет ещё шустрее.

Отправлено: 22:45, 16-05-2020 | #49


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Iska:
на чистом C, без .Net, будет ещё шустрее. »
сложно сказать... тут ведь скрипты из шелл-ов сравниваем...

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


Отправлено: 08:06, 17-05-2020 | #50



Компьютерный форум 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




 
Переход