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

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


Ну и совсем напоследок, абсолютный победитель нашего конкурса генераторов прямого перебора :
Код: Выделить весь код
param(
    $pathOut = 'C:\temp\test.txt',
    $Symbols = 'abcdefghij',
    $Length  = 6
)cls

function Get-Combinations($pathOut,$Symbols,$Length){$cmd=@"
using System;using System.IO;
public class Combiner{
    public static string Combinations(string[] sym, string writePath){
        using (StreamWriter fs=new StreamWriter(writePath, false, System.Text.Encoding.Default)){
            foreach (string i in sym){//do`nfs.WriteLine (i/*i*/);}//end
        }return "Done!";}}
"@;[string[]]$sym=$Symbols.ToCharArray()
for($i=1;$i -lt $Length;$i++){$cmd=$cmd -Replace '//do', "`nforeach (string i$i in sym){//do"
$cmd=$cmd -Replace '//end', "}//end";$cmd=$cmd.Replace('/*i*/', "+i$i/*i*/")
}Add-Type $cmd;[Combiner]::Combinations($sym,$pathOut)}


(Measure-Command{

    Get-Combinations $pathOut $Symbols $Length

}).TotalSeconds
TotalSeconds : 0,2987353
еще
'abcdefghij0123' = 1,978599
'0123456789abcdefghij' = 17,4350418

Последний раз редактировалось Fors1k, 17-05-2020 в 18:24.

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

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



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

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


Ветеран


Contributor


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

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


Из любопытства сравнил на своём ноуте:
скрипт PS Fors1k_m
скрипт PS YuS_2
скрипт CMD Megaloman
макрос VBA Excel
скрипт Vbs

Код: Выделить весь код
6-0123456789
Fors1k_m	PS	 1.2s
Megaloman	vba Exc	 4.3s	
YuS_2		PS	 4.7s 
Megaloman	vbs	 9.3s	
Megaloman	CMD	43s	

6-0123456789abcdef
Fors1k_m	PS	 10.6s
Megaloman	vba Exc	 38s	
YuS_2		PS	124s 
Megaloman	vbs	151s
VBS (vba) прямой перебор
Код: Выделить весь код
'Sub rrr2()
    Symb = "abcdefghij"
    Symb = "0123456789abcdef"
'    Symb = "0123456789"
    N = 6
    FileOut = "Z:\Box_Out\6-0123456789abcdef_vbs_line.txt"
    
    T = Timer
    
    NS = Len(Symb)
    ReDim Smb(NS - 1)
    
    For i = 1 To NS
        Smb(i - 1) = Mid(Symb, i, 1)
    Next
    
    Set F = CreateObject("Scripting.FileSystemObject").CreateTextFile(FileOut, True)
    Call SortLine(N, Smb, F, 0, "")
    F.Close
    
    MsgBox Timer - T
'End Sub
Sub SortLine(ii, SS, F, NN, sOut)
    NN1 = NN + 1
    
    If NN1 = ii Then
        For Each i In SS
            sOut1 = sOut1 + sOut + i + vbCrLf
        Next
        F.Write sOut1
    Else
        For Each i In SS
            sOut1 = sOut + i
            Call SortLine(ii, SS, F, NN1, sOut1)
        Next
    End If
End Sub
и, дополнительно,
VBS генератор строк с уникальными символами
Код: Выделить весь код
'Sub rrr()
    Symb = "0123456789abcdef"
    N = 6
    FileOut = "Z:\Box_Out\vbs_uni_6-0123456789abcdef.txt"
    
    T = Timer
    
    NS = Len(Symb)
    For i = 1 To NS
        Smb = Smb + vbTab + Mid(Symb, i, 1)
    Next
    
    Set F = CreateObject("Scripting.FileSystemObject").CreateTextFile(FileOut, True)
    Call Sort(N, Smb, F, 0, "")
    F.Close
    
    MsgBox Timer - T
'End Sub

Sub Sort(ii, SS, F, NN, sOut)
    MS = Split(Mid(SS, 2), vbTab)
    NN1 = NN + 1
    
    If NN1 = ii Then
        For Each i In MS
            sOut1 = sOut1 + sOut + i + vbCrLf
        Next
        F.Write sOut1
    Else
        For Each i In MS
            sOut1 = sOut + i
            SS1 = Replace(SS, vbTab + i, "")
            Call Sort(ii, SS1, F, NN1, sOut1)
        Next
    End If
End Sub

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

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

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


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Fors1k_m:
абсолютный победитель »
это да.
Цитата Fors1k_m:
TotalSeconds : 0,2987353 »
зависит от конфигурации железа и от версии PS...
при прочих равных, PS 5.1
TotalSeconds : 4,5936197
TotalSeconds : 1,049038
быстрее в 4,6 раз

для '0123456789abcdefghij'
TotalSeconds : 306,0904845
TotalSeconds : 42,464878
быстрее в 7,2 раз

т.е. с увеличением числа символов целевого набора, разница существенно возрастает...
а по сути:
64000000 - 42,5сек
считаем для 36 - 6:
2176782336 - 1445 сек/60= 24 мин.
уже более-менее вменяемый результат, который можно ещё ускорить, если использовать железо получше и PS v7.0

для 10^6 в PS 7.0
TotalSeconds : 3,4414547
TotalSeconds : 0,5906468

для 64000000 в PS 7.0
TotalSeconds : 214,1145746
TotalSeconds : 25,2777355

- как-то так...
файл, кстати, получается 488,2Мб

Цитата megaloman:
Из любопытства сравнил на своём ноуте: »
а powershell какой версии? Лучше для сравнения с vbs использовать 7.0

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


Последний раз редактировалось YuS_2, 17-05-2020 в 19:27.


Отправлено: 19:07, 17-05-2020 | #53


Ветеран


Contributor


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

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


YuS_2,
Цитата YuS_2:
а powershell какой версии? »
5.1.14409.1005
Цитата YuS_2:
Лучше для сравнения с vbs использовать 7.0 »
Подозреваю, разница будет еще больше.

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


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


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата megaloman:
Подозреваю, разница будет еще больше. »
можно сравнить, выше добавил тест для 20^6 и PS 7.0, на том же железе...

---------------
вот, собственно, практический результат для задачи из шапки:
36^6, PS v7.0, скрипт
TotalSeconds : 888,1523298
файл - 16,2Гб

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


Последний раз редактировалось YuS_2, 17-05-2020 в 20:07.


Отправлено: 19:23, 17-05-2020 | #55


Аватара для Fors1k

Старожил


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

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


Цитата YuS_2:
зависит от конфигурации железа »
Мое железо 2008г выпуска.
Интересно увидеть результат у кого-нибудь на современном пк.
Цитата YuS_2:
если использовать PS v7.0 »
Скачал из интереса PS v7. Результат и правда изменился:

10^6 = 2,1835635
36^6 = 391,1104797

VBS (vba) от megaloman, на моем железе:
10^6 = 3,387438

Последний раз редактировалось Fors1k, 17-05-2020 в 20:53.


Отправлено: 20:40, 17-05-2020 | #56


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Fors1k_m:
10^6 = 2,1835635 »
не сходится, должно быть гораздо быстрее... у меня 0,5 сек. Ваш скрипт...

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


Отправлено: 20:53, 17-05-2020 | #57


Аватара для Fors1k

Старожил


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

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


Цитата YuS_2:
не сходится »
Похоже, результат замера для какого-то другого количества символов скопировал)
Запустил еще раз:
10^6 = 0,2484363

Отправлено: 21:00, 17-05-2020 | #58



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




 
Переход