Script para gerar senhas em massa com letras maiúsculas e minúsculas e números

1

Deve ser simples de escrever, mas eu prefiro economizar tempo usando uma solução existente ...

Alguém sabe de um script que irá gerar senhas de um determinado comprimento, de modo que cada senha terá pelo menos um caractere maiúsculo, um minúsculo e um número? Cada script que eu encontrei até agora usará letras maiúsculas / minúsculas / números como o conjunto de caracteres, mas não garante que pelo menos um de cada esteja na saída.

Eu preciso gerar cerca de 3.000 dessas senhas iniciais para algum trabalho de criação de contas em massa.

    
por DrStalker 01.12.2009 / 04:53

2 respostas

5

Use o pwgen para fazer isso:

pwgen -cn 8 3000

Isso gerará 3000 senhas de 8 caracteres com pelo menos uma letra maiúscula e pelo menos um número.

    
por 01.12.2009 / 05:41
1

um vbscript que eu usei ainda é encontrado na web aqui (ei e é mais recente do que o que eu tenho). Um dia desses eu vou conseguir convertê-lo em powershell. Vou postar abaixo para poupar o trabalho de revisá-lo:

'==========================================================================
'
' NAME: RandomPasswordGenerator.vbs
'
' AUTHOR: Mark D. MacLachlan , The Spider's Parlor
' URL: http://www.thespidersparlor.com
' DATE  : 7/29/2004
' MODIFICATIONS:
'         9/2/2008 Added dictionary object to ensure 
'                  uniqueness of passwords
'
' COMMENT: Generates Random Passwords meeting "Complex" Requirements
'          By default will generate a 6 digit password.
'          Edit line passLen = 6 to change length
'==========================================================================
Option Explicit

Dim pGenNum, newpass, passList, inFlag, pgLength, x, fso, ts, passLen
Const ForWriting = 2
passLen = 6

'Give inFlag (input Flag) an initial value to ensure we run once
inFlag = "Seed"

Do While inFlag <> pGenNum
    pGenNum = InputBox("How many passwords would you like to create?" & vbCrLf & _ 
    "Enter a Numeric Value" & vbCrLf & _
    "Blank Entry Will Cancel Script","Enter Number of Passwords to Create")

    'Quit if no entry
    If pGenNum = "" Then WScript.Quit

    'Now clear inFlag so we can compare it to the pGenInput going forward
    inFlag = ""
    pgLength = Len(pGenNum)
    'Enumerate each character to ensure we only have numbers
    For x = 1 To pgLength
        If Asc(Mid(pGenNum,x,1)) < 48 Or Asc(Mid(pGenNum,x,1)) > 57 Then
            inFlag = ""
        Else
            'Build inFlag one character at a time if it is a number. 
            inFlag = inFlag & Mid(pGenNum,x,1)
        End If
    Next
    'We made it through each character.  If not equal prompt for a number.
    If inFlag <> pGenNum Then inFlag = ""
Loop

'Generate the number of required passwords.
'Use a dictionary object to ensure uniqueness.
Dim objDict
Set objDict = CreateObject("Scripting.Dictionary")
Do Until objDict.Count = CInt(pGenNum)
    newpass = generatePassword(passLen)
    If Not objDict.Exists(newpass) Then
           objDict.Add newpass, "Unique Password"
        passList = passList & newpass & vbCrLf
    End If 
Loop

'Now save it all to a text file.
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.CreateTextFile ("PasswordList.txt", ForWriting)
ts.write passList
MsgBox "Passwords saved to PasswordList.txt",,"Passwords Generated"
set ts = nothing
set fso = nothing



Function generatePassword(PASSWORD_LENGTH)

Dim NUMLOWER, NUMUPPER, LOWERBOUND, UPPERBOUND, LOWERBOUND1, UPPERBOUND1, SYMLOWER, SYMUPPER
Dim newPassword, count, pwd 
Dim pCheckComplex, pCheckComplexUp, pCheckComplexLow, pCheckComplexNum, pCheckComplexSym, pCheckAnswer


 NUMLOWER    = 48  ' 48 = 0
 NUMUPPER    = 57  ' 57 = 9
 LOWERBOUND  = 65  ' 65 = A
 UPPERBOUND  = 90  ' 90 = Z
 LOWERBOUND1 = 97  ' 97 = a
 UPPERBOUND1 = 122 ' 122 = z
 SYMLOWER    = 33  ' 33 = !
 SYMUPPER    = 46  ' 46 = .
 pCheckComplexUp  = 0 ' used later to check number of character types in password
 pCheckComplexLow = 0 ' used later to check number of character types in password
 pCheckComplexNum = 0 ' used later to check number of character types in password
 pCheckComplexSym = 0 ' used later to check number of character types in password


 ' initialize the random number generator
 Randomize()

 newPassword = ""
 count = 0
 DO UNTIL count = PASSWORD_LENGTH
   ' generate a num between 2 and 10 

 ' if num <= 2 create a symbol 
   If Int( ( 10 - 2 + 1 ) * Rnd + 2 ) <= 2 Then
    pwd = Int( ( SYMUPPER - SYMLOWER + 1 ) * Rnd + SYMLOWER )

   ' if num is between 3 and 5 create a lowercase
   Elseif Int( ( 10 - 2 + 1 ) * Rnd + 2 ) > 2 And  Int( ( 10 - 2 + 1 ) * Rnd + 2 ) <= 5 Then
    pwd = Int( ( UPPERBOUND1 - LOWERBOUND1 + 1 ) * Rnd + LOWERBOUND1 )

    ' if num is 6 or 7 generate an uppercase
   Elseif Int( ( 10 - 2 + 1 ) * Rnd + 2 ) > 5 And  Int( ( 10 - 2 + 1 ) * Rnd + 2 ) <= 7 Then
    pwd = Int( ( UPPERBOUND - LOWERBOUND + 1 ) * Rnd + LOWERBOUND ) 

   Else
       pwd = Int( ( NUMUPPER - NUMLOWER + 1 ) * Rnd + NUMLOWER )
   End If

  newPassword = newPassword + Chr( pwd )

  count = count + 1

  'Check to make sure that a proper mix of characters has been created.  If not discard the password.
  If count = (PASSWORD_LENGTH) Then
      For pCheckComplex = 1 To PASSWORD_LENGTH
          'Check for uppercase
          If Asc(Mid(newPassword,pCheckComplex,1)) >64 And Asc(Mid(newPassword,pCheckComplex,1))< 90 Then
                  pCheckComplexUp = 1 
          'Check for lowercase
          ElseIf Asc(Mid(newPassword,pCheckComplex,1)) >96 And Asc(Mid(newPassword,pCheckComplex,1))< 123 Then
                  pCheckComplexLow = 1 
          'Check for numbers
          ElseIf Asc(Mid(newPassword,pCheckComplex,1)) >47 And Asc(Mid(newPassword,pCheckComplex,1))< 58 Then
                  pCheckComplexNum = 1
          'Check for symbols
          ElseIf Asc(Mid(newPassword,pCheckComplex,1)) >32 And Asc(Mid(newPassword,pCheckComplex,1))< 47 Then
                  pCheckComplexSym = 1
          End If
      Next

      'Add up the number of character sets.  We require 3 or 4 for a complex password.
      pCheckAnswer = pCheckComplexUp+pCheckComplexLow+pCheckComplexNum+pCheckComplexSym

      If pCheckAnswer < 3 Then
          newPassword = ""
          count = 0
      End If
  End If
 Loop
'The password is good so return it
 generatePassword = newPassword
End Function
    
por 01.12.2009 / 06:05