managepassword.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import os
  2. import crypt
  3. import random
  4. #from configurazione.views import *
  5. def GeneraPassword(chiave=None,salt=None):
  6. ''' genera una password md5
  7. nel caso sia fornito il 'salt', la chiave viene generata con questo valore,
  8. altrimenti, viene generata utilizzando la funzione os.getpid()'''
  9. if not salt:
  10. return crypt.crypt(chiave,"$1$"+str(os.getpid()) +"$")
  11. return crypt.crypt(chiave,salt)
  12. '''
  13. generazione della password
  14. viene pescata la stringa dalla configurazione (mail_default_password)
  15. il valore di ritorno contiene le indicazioni per generare la password.
  16. il formato e' il seguente:
  17. la stringa e' formata da 2 parti divise da uno /
  18. la parte di sinistra e' formata cosi':
  19. # Singola lettera
  20. a: lettere minuscole
  21. A: lettere maiuscole
  22. n: numeri
  23. s: simboli
  24. # Frasi
  25. c: citta'
  26. o: colore
  27. p: parole
  28. dopo lo slash prevediamo per il momento di mettere solo:
  29. r: la password e' randomizzata
  30. '''
  31. class myPassword:
  32. def __init__(self,password_schema):
  33. #self.formato = getConfigurazione(password_schema)
  34. self.formato = password_schema
  35. self.stringa,self.opzioni = self.formato.split('/')
  36. self.risultato=[]
  37. def parse(self):
  38. self.risultato = []
  39. for i in self.stringa:
  40. print('lettera:',i)
  41. if 'a' in i:
  42. print('a',i)
  43. self.risultato.append(self.get_alfa())
  44. if 'n' in i:
  45. print('n',i)
  46. self.risultato.append(self.get_int())
  47. if 'A' in i:
  48. print('A',i)
  49. self.risultato.append(self.get_upper())
  50. if 's' in i:
  51. self.risultato.append(self.get_simble())
  52. if 'c' in i:
  53. #citta'
  54. pass
  55. for i in self.opzioni:
  56. if 'r' in i:
  57. self.get_shuffle()
  58. def get_alfa(self):
  59. stringa="abcdefghikjlmnopqrstuvwxyz"
  60. return stringa[int(random.randrange(len(stringa)))]
  61. def get_upper(self):
  62. stringa="abcdefghikjlmnopqrstuvwxyz"
  63. return stringa[int(random.randrange(len(stringa)))].upper()
  64. def get_int(self):
  65. return str(int(random.randrange(10)))
  66. def get_simble(self):
  67. stringa=",.-;:_@#!$%&/()=?^'\"[]{}"
  68. return stringa[int(random.randrange(len(stringa)))]
  69. def get_shuffle(self):
  70. print(self.risultato)
  71. random.shuffle(self.risultato)
  72. def getPassword(self):
  73. return "".join(self.risultato)
  74. if __name__ == '__main__':
  75. x = GeneraPassword('aaasnnn/r')
  76. print("password generata: ",x)