ich herauszufinden versuche, wie ein Kennwort zu veranlassen, und haben die Benutzer Eingang Echo zurück als Sternchen (********
)Wie haben Passwort hallte als Sternchen
Also vor kurzem habe ich auf das Projekt übernahm eine der Schaffung Remote-Server, der mit dem Socket-Modul in Python verbunden werden könnte. Es ist noch nicht fertig, da ich gerade dabei bin, die Konsole zur Verbindung mit dem Server zu benutzen.
Ich versuche ein Login-Fenster zu erstellen, in dem ein Benutzer aufgefordert wird, seinen Benutzernamen und sein Passwort einzugeben. Wenn das Passwort eingegeben wird, suche ich nach Sternchen, wie zB Passworteingabe (zB - Sekr3t wird echo wie: * * * * * *).
Nach Tagen der Forschung ist ich fast fertig, aber es gibt immer noch einen letzten Fehler, der mich verrückt macht (ich bin völlig unfähig, es zu lösen). Hinweis - Ich weiß, dass es ein getpass-Modul gibt, mit dem man dies leichter ersetzen könnte, aber nichts Echo ist nicht genau das, wonach ich suche.
Hier ist das Passwort Login-Code ich so weit, und ich kann nicht herausfinden, warum es Sternchen nicht echo:
import msvcrt
import sys
def login(prompt = '> '):
write = sys.stdout.write
for x in prompt:
msvcrt.putch(x)
passw = ""
while 1:
x = msvcrt.getch()
if x == '\r' or x == '\n':
break
if x == '\b':
# position of my error
passw = passw[:-1]
else:
write('*')
passw = passw + x
msvcrt.putch('\r')
msvcrt.putch('\n')
return passw
>
Wenn Sie den Code lesen und/oder lief es durch etwas wie IDLE, Sie könnten feststellen, dass wenn die Benutzer-Back-Space's, die gespeicherten Daten um ein Zeichen gelöscht werden, aber die Sterne gedruckt nicht sind. h. - Sekr3t + Rückschritt = Sekr3, doch * * * * * * wird als Echo zurückgelassen. Jede Hilfe, wie man das letzte Sternchen löscht, wenn Backspace eingegeben wird, würde sehr geschätzt werden. Beachten Sie auch, dass ein Großteil dieses Codes vom getpass-Modul stammt. Ich weiß, dass es keine großartige Erklärung ist und wahrscheinlich nicht so toll, aber ich lerne immer noch - bitte, ertragen Sie mit mir.
Sie wirklich in Betracht ziehen sollte mit [ 'getpass()'] (http://docs.python.org/library/getpass.html#getpass. getpass). Ich merke, dass du das schon gefunden hast, aber nichts widerspiegelt ** verbessert die Sicherheit **. – ThiefMaster
@ThiefMaster Ich kann sehen, wie es die Sicherheit verbessern würde, aber die Anwendung ist hauptsächlich für einige meiner Freunde in einem meiner Gaming-Netzwerke, die nicht sehr Computer-geschickt sind, also versuche ich es irgendwo dazwischen sicher zu machen und benutzerfreundlich - deshalb entschied ich mich zu versuchen, Sternchen im Gegensatz zu nichts zu haben. –
Schauen Sie sich das Modul 'curses' an –