Newsgroup: it.comp.sicurezza.windows
Titolo: Generatore di Passwords

Questo è il codice di un mio generatore di numeri casuali sfruttato per
generare password casuali.
'---------------------------------------------------------------------------
------
'Random Password Generator
'---------------------------------------------------------------------------
------
'Written By   Fabio Macor under GPL license
'17/09/2002
'E-mail 
fosforoD...@email.it
'---------------------------------------------------------------------------
------
'you have to insert the following components in the form
'textbox  name   NP    <---for number of password to generate
'textbox  name   NC    <---for number of chars in the passwords
'textbox  name   SEME  <---for the list of chars to use for generating PWD
'textbox  name   GENPWD<---Contains the generated PWD  , MULTILINE
'Timer1   Timer
'Command1 CommandButton
Dim currentA, CurrentB, OldA, OldB
Dim CurrPwd$
Dim PwdLen%
Dim pwdnum%
Dim tempcount%
Dim charlist$
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As
Long
Private Type POINTAPI
    x As Long
    y As Long
    End Type
    Dim a As POINTAPI
Public Function GetMousePos(Optional ByRef X_Value, Optional ByRef Y_Value)
    GetCursorPos a
    DoEvents
    X_Value = a.x
    Y_Value = a.y
End Function
Private Sub Command1_Click()
    PwdLen = nc.Text
    pwdnum = np.Text
    charlist = seme.Text
    currentA = 1
    CurrentB = 1
    OldA = 1
    OldB = 1
    PwdLen = nc.Text
    CurrPwd = ""
    pwdnumb = np.Text
    GenPwd.Text = ""
    tempcount = 1
    Command1.Enabled = False
    Timer1.Enabled = True
    MsgBox "Muovi il mouse fino a che non verranno generate tutte le
passwords"
End Sub
Private Sub Command2_Click()
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
Dim a As Long, b As Long
Dim asd
GetMousePos a, b
DoEvents
    currentA = a
    CurrentB = b
    If (currentA <> OldA) And (CurrentB <> OldB) Then
        Do
            Do
                GetMousePos a, b
                DoEvents
            Loop Until a <> 0 And b <> 0
            minkia = (((currentA * OldB + OldA) Mod CurrentB) * a) Mod b
        Loop Until minkia <> 0
        If minkia Mod Len(charlist) = 0 Then
            If a Mod 2 = 0 Then
                minkia = minkia + a
            Else
                minkia = minkia + b
            End If
        End If
        carattere = Mid(charlist, (minkia Mod Len(charlist)), 1)
        CurrPwd = CurrPwd & carattere
        DoEvents
        If Len(CurrPwd) = PwdLen Then
            GenPwd.Text = GenPwd.Text & CurrPwd & vbCrLf
            CurrPwd = ""
            tempcount = tempcount + 1
        End If
        If tempcount > pwdnum Then
            Timer1.Enabled = False
            tempcount = 1
            Command1.Enabled = True
        End If
    End If
    If currentA <> OldA Then OldA = currentA
    If CurrentB <> OldB Then OldB = CurrentB
End Sub
Private Sub Form_Load()
    charlist =
"abcdefghilmnopqrstuvwxyzABCDEFGHILMNOPQRSTUVWXYZ@#°?!$%&/0123456789"
    currentA = 1
    CurrentB = 1
    OldA = 1
    OldB = 1
    PwdLen = 6
    CurrPwd = ""
    pwdnumb = 5
    seme.Text = charlist
    nc.Text = PwdLen
    np.Text = pwdnumb
End Sub
Ditemi cosa ne pensate
Ciao
Fabio

 
- i nomi delle variabili dovrebbero essere sensati
- generando sequenze casuali di lettere e numeri puoi essere sicuro che 
la password verrà appuntata da qualche parte.
Avevo implementato una cosa simile che generava le password alternando 
vocali e consonanti in modo che il risultato fosse pronunciabile. Non è 
comunque molto sicuro (anche perchè un algoritmo brute force "furbo" 
potrebbe risparmiarsi un bel po' di tentativi conoscendo la regoletta), 
ma alcuni dei risultati erano esilaranti e li usiamo ancora adesso come 
nomi di file/directory/PC di prova.
-- 
Valter Minute
vmi...@inwind.it
 (the reply address of this message is invalid)


sui sistemi unix esiste un programma chiamato pwgen abbastanza
configurabile (ad es. puoi dirgli di generare password pronunciabili da
persone che non siano per forza klingon). magari esiste una versione
anche per win... o almeno per cygwin.
ciao
-- 
Seti@Home Java Applets
http://maruko.cjb.net/

anche per win... o almeno per cygwin.
Di pass generator per win ce ne sono a Bizzeffe, basta fare una
ricerca e anche molto cmplessi e configurabili
ciao
---------------
    beep beep Roby
PS: togliere Le XXX per rispondere via mail.
PS: delete XXX to mail reply

 Tcl/Tk chiamata, strano ma vero, tkapg)
Beh, diciamo che il fulcro della questione non era tanto se esistano o meno
altri generatori di password, ovviamente esistono , era l'algoritmo che
genera i numeri random.
Il mio cosa ne pensate si riferiva a quello.
Ciao
Fabio