411 Stimmen

Eingabe eines versteckten Passworts

Sie wissen, wie in Linux, wenn Sie versuchen, einige Sudo Zeug es fordert Sie auf, das Passwort eingeben und, wie Sie tippen, nichts im Terminal-Fenster angezeigt wird (das Passwort wird nicht angezeigt)?

Gibt es eine Möglichkeit, dies in Python zu tun? Ich arbeite an einem Skript, das so sensible Informationen benötigt und möchte, dass sie bei der Eingabe ausgeblendet werden.

Mit anderen Worten, ich möchte das Kennwort vom Benutzer abfragen, ohne das Kennwort anzuzeigen.

570voto

Sven Marnach Punkte 525472

Utilice getpass.getpass() :

from getpass import getpass
password = getpass()

Ein optionaler Prompt kann als Parameter übergeben werden; der Standardwert ist "Password: " .

Beachten Sie, dass diese Funktion ein geeignetes Terminal voraussetzt, damit sie das Echo der eingegebenen Zeichen ausschalten kann - siehe GetPassWarning": Kann das Echo auf dem Terminal nicht kontrollieren", wenn es von IDLE aus ausgeführt wird für weitere Einzelheiten.

207voto

Nafscript Punkte 4771
import getpass

pswd = getpass.getpass('Password:')

getpass funktioniert unter Linux, Windows und Mac.

21voto

Ahmed ALaa Punkte 217

Mit diesem Code wird anstelle jedes Buchstabens ein Sternchen gedruckt.

import sys
import msvcrt

passwor = ''
while True:
    x = msvcrt.getch()
    if x == '\r':
        break
    sys.stdout.write('*')
    passwor +=x

print '\n'+passwor

4voto

Mostafa Hassan Punkte 169

Aktualisierung der Antwort von @Ahmed ALaa

# import msvcrt
import getch

def getPass():
    passwor = ''
    while True:
        x = getch.getch()
        # x = msvcrt.getch().decode("utf-8")
        if x == '\r' or x == '\n':
            break
        print('*', end='', flush=True)
        passwor +=x
    return passwor

print("\nout=", getPass())

msvcrt uns nur für Windows, aber getch von PyPI sollte für beide funktionieren (ich habe nur mit Linux getestet). Sie können die beiden Zeilen auch kommentieren/entkommentieren, damit es unter Windows funktioniert.

4voto

GaecKo Punkte 33

Sie können auch das Modul pwinput verwenden, das sowohl unter Windows als auch unter Linux funktioniert. Es ersetzt das Zeichen durch '*' (standardmäßig) und die Rücktaste funktioniert.

import pwinput

password = pwinput.pwinput(prompt='Password: ')

Optional können Sie eine andere mask Charakter auch.

import pwinput

password = pwinput.pwinput(prompt='Password: ', mask='')

Siehe die pwinput Dokumentation für weitere Informationen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X