#include <Array.au3>
$aMasks = StringSplit("l,u,n,lu,nu,lun",",")
For $i = 1 To $aMasks[0]
$aPass = _Generate(10,$aMasks[$i])
If @error Then
MsgBox(16,"Ошибка","Код ошибки: "&@error&@CRLF&"Mask: "&$aMasks[$i])
Else
_ArrayDisplay($aPass,"Mask: "&$aMasks[$i])
EndIf
Next
Func _Generate($iCol, $sMask = "lun", $iSec = 2, $iLen = 4)
If Not IsNumber($iCol) Or $iCol < 1 Then Return SetError(1,0,0)
If Not IsString($sMask) Or Not StringRegExp($sMask,"[lun]+",0) Then Return SetError(2,0,0)
If Not IsNumber($iSec) Or $iSec < 1 Then Return SetError(3,0,0)
If Not IsNumber($iLen) Or $iLen < 1 Then Return SetError(4,0,0)
Local $i, $j, $x, $pass = "", $return = "", $s = ""
If StringInStr($sMask,"l") Then $s &= "qwertyuiopasdfghjklzxcvbnm"
If StringInStr($sMask,"u") Then $s &= "QWERTYUIOPASDFGHJKLZXCVBNM"
If StringInStr($sMask,"n") Then $s &= "1234567890"
$s = StringSplit($s,"")
For $x = 0 To $iCol-1
Do
$pass = ""
For $i = 1 To $iSec
For $j = 1 To $iLen
$pass &= $s[Random(1,$s[0],1)]
Next
If $i <> $iSec Then $pass &= "-"
Next
Until Not StringInStr($return,$pass)
$return &= $pass
If $x <> $iCol-1 Then $return &= "|"
Next
Return StringSplit($return,"|")
EndFunc