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)