O módulo getpass

Embora não seja um grande problema para quem desenvolve aplicativos web ou que utilizem algum outro tipo de GUI (graphical user interface), quando escrevemos um aplicativo que irá operar somente em modo texto, ficamos na dúvida de como fazer para ler do teclado um campo como a senha do usuário. Se utilizarmos uma função como raw_input(), cada caractere que o usuário digitar irá aparecer, deixando assim a senha visível no terminal. Por exemplo:

username = raw_input('username: ')
password = raw_input('password: ')
print 'OK.'

Ao executar um programa que tenha as linhas de código acima para ler nome do usuário e senha do teclado, irá acontecer o seguinte:

username: teste
password: minhasenha123
OK.

Como podemos ver, fica muito ruim, afinal a senha do usuário fica exposta. A solução para que o usuário possa digitar sua senha sem que ela apareça (seja ecoada) na tela pode ser encontrada no módulo getpass [1]. Esse módulo fornece duas funções:

  • getpass(): apresenta ao usuário um prompt solicitando a sua senha e não ecoa na tela os caracteres digitados por ele.
  • getuser(): retorna o username do usuário atual no sistema (para Linux e Windows).

O uso de ambas as funções é bem simples. A função getpass() pode receber um argumento que é um texto que será apresentado ao usuário como prompt. Teste o seguinte código:

import getpass
username = getpass.getuser()
password = getpass.getpass('Digite sua senha: ')

Como você verá, será apresentado ao usuário a mensagem “Digite sua senha: “, com o cursor ao lado esperando pela entrada do usuário. Ao digitar a senha, o cursor permanece parado, não dando indicativo visual algum sobre a senha digitada.

É isso. Se precisar escrever um programa que leia do teclado a senha do usuário e não quer que ela seja ecoada, use o módulo getpass.

 

[1] http://docs.python.org/library/getpass.html

Anúncios

2 comentários sobre “O módulo getpass

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s