| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- import os
- import crypt
- import random
- #from configurazione.views import *
-
- def GeneraPassword(chiave=None,salt=None):
- ''' genera una password md5
- nel caso sia fornito il 'salt', la chiave viene generata con questo valore,
- altrimenti, viene generata utilizzando la funzione os.getpid()'''
- if not salt:
- return crypt.crypt(chiave,"$1$"+str(os.getpid()) +"$")
- return crypt.crypt(chiave,salt)
- '''
- generazione della password
- viene pescata la stringa dalla configurazione (mail_default_password)
- il valore di ritorno contiene le indicazioni per generare la password.
- il formato e' il seguente:
- la stringa e' formata da 2 parti divise da uno /
- la parte di sinistra e' formata cosi':
- # Singola lettera
- a: lettere minuscole
- A: lettere maiuscole
- n: numeri
- s: simboli
- # Frasi
- c: citta'
- o: colore
- p: parole
- dopo lo slash prevediamo per il momento di mettere solo:
- r: la password e' randomizzata
- '''
- class myPassword:
-
- def __init__(self,password_schema):
- #self.formato = getConfigurazione(password_schema)
- self.formato = password_schema
- self.stringa,self.opzioni = self.formato.split('/')
- self.risultato=[]
- def parse(self):
- self.risultato = []
- for i in self.stringa:
- print('lettera:',i)
- if 'a' in i:
- print('a',i)
- self.risultato.append(self.get_alfa())
- if 'n' in i:
- print('n',i)
- self.risultato.append(self.get_int())
- if 'A' in i:
- print('A',i)
- self.risultato.append(self.get_upper())
- if 's' in i:
- self.risultato.append(self.get_simble())
- if 'c' in i:
- #citta'
- pass
-
- for i in self.opzioni:
- if 'r' in i:
- self.get_shuffle()
- def get_alfa(self):
- stringa="abcdefghikjlmnopqrstuvwxyz"
- return stringa[int(random.randrange(len(stringa)))]
- def get_upper(self):
- stringa="abcdefghikjlmnopqrstuvwxyz"
- return stringa[int(random.randrange(len(stringa)))].upper()
- def get_int(self):
- return str(int(random.randrange(10)))
- def get_simble(self):
- stringa=",.-;:_@#!$%&/()=?^'\"[]{}"
- return stringa[int(random.randrange(len(stringa)))]
- def get_shuffle(self):
- print(self.risultato)
- random.shuffle(self.risultato)
- def getPassword(self):
- return "".join(self.risultato)
- if __name__ == '__main__':
- x = GeneraPassword('aaasnnn/r')
- print("password generata: ",x)
|