Wie lese ich das Passwort mit echo "*" im Python-Konsolenprogramm?

8

Ich schreibe ein Konsolenprogramm mit Python unter Windows.
Der Benutzer muss sich anmelden, um das Programm zu verwenden, wenn er sein Passwort eingibt, möchte ich, dass sie als "*" wiedergegeben werden, während ich die Eingaben des Benutzers abrufen kann.
Ich habe in der Standardbibliothek ein Modul namens getpass gefunden, aber es wird bei der Eingabe (linux like) kein Echo geben.
Danke.

    
wong2 20.10.2011, 15:42
quelle

3 Antworten

7

Das getpass Modul ist in Python geschrieben. Sie können es leicht ändern, um dies zu tun. Tatsächlich ist hier eine modifizierte Version von getpass.win_getpass() , die Sie einfach in Ihren Code einfügen können:

%Vor%

Vielleicht möchten Sie dies jedoch noch einmal überdenken. Der Linux-Weg ist besser; Auch wenn man nur die Anzahl der Zeichen in einem Passwort kennt, ist dies ein wichtiger Hinweis für jemanden, der es knacken möchte.

    
kindall 20.10.2011, 15:51
quelle
4

kindalls Antwort ist nahe, aber es gibt Probleme mit der Rücktaste, die die Sternchen nicht löscht, sowie der Rücktaste, die über die Eingabeaufforderung zurückgehen kann.

Versuchen Sie:

%Vor%

Hinweis mscvrt.putwch funktioniert nicht mit Python 2.x, Sie müssen stattdessen mscvrt.putch verwenden.

    
Joseph Webber 21.05.2013 13:12
quelle
0

Sie können das Modul getpass verwenden. Dies beantwortet die Frage nicht genau, da die getpass-Funktion verwendet wird gibt außer der Eingabeaufforderung nichts an die Konsole aus. Der Grund dafür ist, dass es eine zusätzliche Sicherheitsschicht ist. Wenn jemand über deine Schulter wacht, werden sie nicht in der Lage sein herauszufinden, wie lange dein Passwort ist.

Hier ist ein Beispiel, wie man es benutzt:

%Vor%

In diesem Beispiel wird "Geben Sie Ihr Passwort ein:" angezeigt und Sie können Ihr Passwort eingeben.

    
Rudolf Olah 20.10.2011 15:49
quelle

Tags und Links