Главная > Заметки, Powershell > Формирование случайного пароля при помощи Powershell

Формирование случайного пароля при помощи Powershell

Существует масса способов сгенерировать пароль. Есть специальные программы для создания паролей и даже онлайн генератор паролей 🙂 Мне недавно попался простой и элегантный способ генерирования пароля через Powershell.

Заключается он в использовании метода GeneratePassword(), принадлежащего классу System.Web.Security.Membership.

Способ прост до безобразия:

$Assembly = Add-Type -AssemblyName System.Web

[System.Web.Security.Membership]::GeneratePassword(12,5)

Метод GeneratePassword() принимает два аргумента, первый из которых задаёт длину будущего пароля, а второй – минимальное количество не буквенно-цифровых символов в этом пароле (к таким символам относятся следующие символы: !, @, #, $, %, ^,&, *, (, ), _, -, +, =, [, {, ], }, ;, :, <, >, |, ., /, ?).

Изменяя эти два значения можно сделать более универсальную функцию для создания паролей разной длины и сложности, в простейшем случае вот так:

Function Get-Password
{
   param
   (
        # Минимальная длина и сложность пароля
        [int]$Minimum = 10,
        # Максимальная длина пароля
        [int]$Maximum = 25
   )
    
   $Assembly = Add-Type -AssemblyName System.Web

   # Длина пароля
   $PasswordLength = Get-Random -Minimum $Minimum -Maximum $Maximum

   System.Web.Security.Membership]::GeneratePassword($PasswordLength, $Minimum)
}

Вызывать можно так:

Get-Password
Get-Password -Minimum 2 -Maximum 15

Правда созданные таким способом пароли получатся совсем уж нечитабельные:

=#=X(>CI%-yt9[A+XzW?

_$A:*z{!+gzeLU5-.DI@

B>M&i@.I}C6*q$^}Xq*x

!{-?}/6]#%^

x4v*#vJx#!9?@}V*zxP]l_

%].)!(/-=Q*

@:.9#r!#{^.|J

=F|J^}Ge$(=@!OBvnV#

)?LZr

Как известно скорость подбора пароля   пропорциональна температуре паяльника, но при утере такого пароля вспомнить его не поможет даже паяльник вставленный в… ухо 🙂

А если серьёзно, то, конечно, вряд-ли кто-то будет пользоваться таким способом генерирования паролей для вконтактика, асечки различных сервисов (хотя при желании можно эту функцию сконвертировать в exe-файл и получить вполне работающий генератор паролей),  но в скриптах автоматического сброса пароля или создания нового пользователя в AD вполне может подойти.

Реклама
Рубрики:Заметки, Powershell Метки: ,
  1. Дмитрий
    20/03/2015 в 08:48

    Лучше использовать такой метод: get-random -count 11 -input (48..57 + 65..90+ 48..57 + 97..122) | % -begin { $pass = $null } -process {$pass += [char]$_} -end {$pass}

    • Vladimir
      19/07/2017 в 14:26

      Метод хороший, но не будет работать в скрипте больше одного раза 🙂

  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: