Pour tous ceux qui lisent ceci: ne lisez PAS les mots de passe avec écho activé et noir sur noir. Le mot de passe est toujours transmis, et si le terminal ne connaît pas les directives du terminal que vous avez utilisées, les caractères résonneront visiblement. Désactivez l'écho. Utilisez termios, stty, read -s, tout ce qu'il fait.
Alexios
C'est pourquoi j'ai écrit que ce n'est pas une solution;).
Grzegorz Wierzowiecki
En effet! Parfois, les gens survolent les questions et arrivent à des conclusions erronées. :)
Génial. Ce n'est pas écrit dans mon man read, je n'ai pas vérifié help read. Bon à savoir.
Grzegorz Wierzowiecki
3
@GrzegorzWierzowiecki: Vous consultez le mauvais manuel. vous devez lire le manuel de bash ie man bashet là vous pouvez trouver l'option -sSilent mode. If input is coming from a terminal, characters are not echoed.
pradeepchhetri
5
J'avais toujours l'habitude stty -echode désactiver l'écho, puis de lire et de faire ensuite stty echo(en savoir plus en regardant man of stty- ie man stty). Ceci est plus utile du point de vue des programmeurs car vous pouvez désactiver l'écho puis lire un mot de passe à partir d'un langage de programmation tel que Java, C (++), Python, etc. avec leurs "lecteurs" stdin standard.
En bash, l'utilisation pourrait ressembler à ceci:
echo -n "USERNAME: "; read uname
echo -n "PASSWORD: "; stty -echo; read passwd; stty echo; echo
program $uname $passwd
passwd=# get rid of passwd
Python, par exemple, ressemblerait à:
from sys import stdout
from os import system as term
uname = raw_input("USERNAME: ")# read input from stdin until [Enter] in 2
stdout.write("PASSWORD: ")
term("stty -echo")# turn echo off
try:
passwd = raw_input()
except KeyboardInterrupt:# ctrl+c pressed
raise SystemExit("Password attempt interrupted")
except EOFError:# ctrl+d pressed
raise SystemExit("Password attempt interrupted")
finally:
term("stty echo")# turn echo on again
print "username:", uname
print "password:","*"* len(passwd)
J'ai dû le faire plusieurs fois en Python, donc je le sais assez bien de ce point de vue. Cependant, ce n'est pas très difficile à traduire dans d'autres langues.
termios
,stty
,read -s
, tout ce qu'il fait.Réponses:
De
help read
:la source
man read
, je n'ai pas vérifiéhelp read
. Bon à savoir.man bash
et là vous pouvez trouver l'option -sSilent mode. If input is coming from a terminal, characters are not echoed.
J'avais toujours l'habitude
stty -echo
de désactiver l'écho, puis de lire et de faire ensuitestty echo
(en savoir plus en regardant man ofstty
- ieman stty
). Ceci est plus utile du point de vue des programmeurs car vous pouvez désactiver l'écho puis lire un mot de passe à partir d'un langage de programmation tel que Java, C (++), Python, etc. avec leurs "lecteurs" stdin standard.En bash, l'utilisation pourrait ressembler à ceci:
Python, par exemple, ressemblerait à:
J'ai dû le faire plusieurs fois en Python, donc je le sais assez bien de ce point de vue. Cependant, ce n'est pas très difficile à traduire dans d'autres langues.
la source
Votre question se lit un peu différemment "comme des outils ???" donc je ne sais pas exactement si cela fonctionnera pour vous:
la source