Topic: Piccolo script di login  (Letto 1781 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Markon

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 4.104
  • Punti reputazione: 5
    • Mostra profilo
    • Neolithic
Piccolo script di login
« il: Luglio 17, 2007, 23:37 »
Salve a tutti ragazzi, tempo fa ho creato un piccolo programmino per effettuare il login. In pratica è composto da due script: uno che apre un file .dbm e ci scrive dentro gli utenti e le password, l'altro che gestisce il login.

Se avete suggerimenti fate pure :)

#! /usr/bin/python

# File: dbm-esempio.py


import dbm, base64, md5

"""Bisogna inserire SOLO UNA volta la password che sara' poi salvata nel database"""

m = md5.new()
m.update(raw_input("Scegli una password:\n"))
s = md5.new()
s.update(raw_input("Scegli una password:\n"))
t = md5.new()
t.update(raw_input("Scegli una password:\n"))

db = dbm.open("dbm", "c")

db["Marco"] = m.digest()
db["Gennaro"] = s.digest()
db["Antonio"] = t.digest()

db.close()

Questo gestisce il login:

#! /usr/bin/python

# Questo e' il file in cui e' racchiuso il codice vero e proprio del "login"

import dbm, base64, md5




def Utenti():
#Bisogna aprire il file/database dove si trovano le password

db = dbm.open("dbm", "r")

#stampa la lunghezza del dizionario e il nome degli utenti PASS: cacca, pipi, cane
print "Ci  sono %d utenti: %s" % (len(db), ", ".join(db.keys( )))
utente= ""
i = 0
password = ""
#possiamo provare fino all'infinito il nome utente
while utente not in db.keys():
utente = raw_input("Inserire nome utente:\n>")
if db.has_key(utente) != True:
print "Nome utente errato"
# possiamo provare SOLO fino a tre volte la password, che corrisponde al valore del nome utente nel dizionario

while password != db.get(utente) and i != 3:

#La password che si trova nel database e' in hash, per cui bisogna convertire la nostra stringa inserita da linea di comando in hash (le password sono custodite in hash nel database 'db')

hash = md5.new()
hash.update(raw_input("Inserisci la password:\n>"))
password = hash.digest()
if password != db.get(utente):

i = i + 1
print "Errato"
if -i + 3 > 1:
print "Ti restano", -1 +3, "tentativi"
elif -i +3 == 1:
print "Ti resta un tentativo"
elif -i + 3 == 0:
print "login fallito"
else:
print "Benvenuto/a  " + utente
Utenti()

Che ne dite?
Se avete suggerimenti, avete qualche errore da farmi notare..
Fate pure :)
Ciao :)

Offline manzo

  • python neanderthalensis
  • *
  • moderatore
  • Post: 478
  • Punti reputazione: 1
    • Mostra profilo
Re: Piccolo script di login
« Risposta #1 il: Luglio 18, 2007, 09:39 »
beh, anziche' usare tre oggetti md5 distinti, io farei una funzione che accetta la password e la salva criptata.

#! /usr/bin/python
# File: dbm-esempio.py

import dbm, base64, md5

def criptaesalva(user,pwd,db):
  m=md5.new(pwd)
  db[user]=m.digest()

db = dbm.open("dbm", "c")
for nome in ("Marco","Gennaro","Antonio"):
  criptaesalva(nome,raw_input("scegli una password"),db)
db.close()
« Ultima modifica: Luglio 18, 2007, 09:46 da manzo »

Offline Markon

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 4.104
  • Punti reputazione: 5
    • Mostra profilo
    • Neolithic
Re: Piccolo script di login
« Risposta #2 il: Luglio 18, 2007, 09:56 »
E mica male come idea? :) anzi!

Bravo :) non avevo pensato di fare una funzione, stavo pensando di fare un ciclo però...