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

Собственно, вот код скрипта.

Write-Host("Программа для генерации паролей. Версия 0.1")
$Complexity = Read-Host ″Пароль со спецсимволами?″

if ($Complexity -eq "1"){
    $NonAlfaNumeric = Read-Host ″Количество нестандартных символов″
}

$PassLength = Read-Host ″Длина пароля (1-128)″
$PassNumber = Read-Host ″Количество паролей″
if ($Complexity -eq "1"){
    Add-Type -AssemblyName System.Web
    1..$PassNumber | ForEach-Object -process {
        [System.Web.Security.Membership]::GeneratePassword($PassLength,$NonAlfaNumeric)
    }
}else{
    1..$PassNumber | ForEach-Object -process {
        $PassResult = -join (1..$PassLength | % { [char[]]'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' | Get-Random })
        $PassResult
    }
}
Pause

Написан он практически на коленке, некоторые части я позаимствовал из других примеров. Но свою задачу скрипт выполняет.

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

Затем идет генерация пароля согласно выбранным параметрам. В случае паролей со спецсимволами используется встроенный командлет PowerShell под названием GeneratePassword. Во втором случае пароль генерируется из массива заранее заданных символов.

Подобный скрипт ты можешь использовать как отдельно, так и в составе более сложных сценариев. К примеру, если тебе понадобится создать сотню пользователей Active Directory, то ты сможешь вызывать его как функцию.

3 комментария

  1. dalvinhack

    20.03.2017 at 20:14

    Не работает.

    + CategoryInfo : ParserError: (CloseBraceToken:TokenId) [], ParseException
    + FullyQualifiedErrorId : MissingEndCurlyBrace

  2. pixelw

    27.03.2017 at 19:24

    Спасибо! Работает. Сохранил себе на флешку! У кого не работает запустите батник enableScript.bat с внутренним содержанием (powershell -Command Set-ExecutionPolicy RemoteSigned).

  3. Vindwo

    01.05.2017 at 21:26

    Почему не с помощью CryptGenRandom()?

Оставить мнение

Check Also

WTF is APT? Продвинутые атаки, хитрости и методы защиты

Наверняка ты уже читал о масштабных сетевых атаках, от которых пострадали банки, крупные п…