412 votes

Obtenir la saisie d'un mot de passe caché

Vous savez comment, sous Linux, lorsque vous essayez un truc Sudo, on vous demande d'entrer le mot de passe et, lorsque vous tapez, rien ne s'affiche dans la fenêtre du terminal (le mot de passe n'est pas affiché) ?

Existe-t-il un moyen de faire cela en Python ? Je travaille sur un script qui nécessite des informations sensibles et j'aimerais qu'elles soient cachées lorsque je les tape.

En d'autres termes, je veux obtenir le mot de passe de l'utilisateur sans afficher le mot de passe.

1voto

Sagar Points 99

Voici mon code basé sur le code proposé par @Ahmed ALaa

Caractéristiques :

  • Fonctionne pour les mots de passe jusqu'à 64 caractères
  • Accepte l'entrée de l'espacement arrière
  • Sorties * caractère (DEC: 42 ; HEX: 0x2A) au lieu du caractère d'entrée

Démérites :

  • Fonctionne uniquement sous Windows

La fonction secure_password_input() renvoie le mot de passe sous la forme d'un string lorsqu'il est appelé. Il accepte un Invitation à saisir le mot de passe chaîne de caractères qui sera affichée à l'utilisateur pour qu'il tape le mot de passe

def secure_password_input(prompt=''):
    p_s = ''
    proxy_string = [' '] * 64
    while True:
        sys.stdout.write('\x0D' + prompt + ''.join(proxy_string))
        c = msvcrt.getch()
        if c == b'\r':
            break
        elif c == b'\x08':
            p_s = p_s[:-1]
            proxy_string[len(p_s)] = " "
        else:
            proxy_string[len(p_s)] = "*"
            p_s += c.decode()

    sys.stdout.write('\n')
    return p_s

-3voto

Dwi Wardana Points 87

15.7. getpass - Saisie d'un mot de passe portable

#!/usr/bin/python3
from getpass import getpass
passwd = getpass("password: ")
print(passwd)

En savoir plus aquí

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X