相关疑难解决方法(0)

在Python中获取命令行密码输入

你知道如何在Linux中尝试一些Sudo的东西它会告诉你输入密码,当你输入时,终端窗口中没有显示任何内容(密码没有显示)?

有没有办法在Python中做到这一点?我正在编写一个需要如此敏感信息的脚本,并希望在我输入时隐藏它.

换句话说,我想从用户那里获取密码而不显示密码.

python passwords command-line

204
推荐指数
4
解决办法
18万
查看次数

从stdin读取密码

场景:交互式CLI Python程序,需要密码.这也意味着,没有可能的GUI解决方案.

在bash中,我可以在不通过屏幕重新提示的情况下读取密码

read -s
Run Code Online (Sandbox Code Playgroud)

Python有类似的东西吗?也就是说,

password = raw_input('Password: ', dont_print_statement_back_to_screen)
Run Code Online (Sandbox Code Playgroud)

替代方法:在将类型字符发送回屏幕(又称浏览器样式)之前,将其替换为"*".

python passwords interactive prompt

178
推荐指数
2
解决办法
7万
查看次数

如何将密码回显为星号

我试图弄清楚如何提示输入密码,并将用户输入回显为星号(********)

最近,我开始创建一个可以连接到使用Python中的套接字模块的远程服务器的项目.它还没有完成,因为我正在使控制台用于连接服务器.

我正在尝试创建一个登录窗口,提示用户输入用户名和密码,但输入密码时我正在寻找要打印的星号,就像常见的密码输入一样(即 - Sekr3t被回复为:******).

经过几天的研究,我差不多完成了仍然有一个最后的错误,让我疯了(我完全无法解决它).注意 - 我知道有一个getpass模块可以用来替换它,更容易,但没有回声不是我正在寻找的.

这是我到目前为止的密码登录代码,我无法弄清楚为什么它不会回响星号:

import msvcrt
import sys

def login(prompt = '> '):
   write = sys.stdout.write

   for x in prompt:
       msvcrt.putch(x)
   passw = ""

   while 1:
       x = msvcrt.getch()
       if x == '\r' or x == '\n':
           break
       if x == '\b':
           # position of my error
           passw = passw[:-1]
       else:
           write('*')
           passw = passw + x
   msvcrt.putch('\r')
   msvcrt.putch('\n')
   return passw
Run Code Online (Sandbox Code Playgroud)

>

如果您通过代码阅读和/或通过IDLE之类的内容运行它,您可能会注意到当用户后退空间时,存储的数据被一个字符擦除,但打印的星号不是.ie - Sekr3t + backspace = Sekr3,但是******留下了回音.任何关于如何在输入退格时擦除最后一个星号的帮助将不胜感激.另请注意,很多此代码来自getpass模块.我知道这不是一个很好的解释,可能不是那么好的代码,但我还在学习 - 请耐心等待.

python passwords msvcrt getch echo

8
推荐指数
1
解决办法
9371
查看次数

标签 统计

passwords ×3

python ×3

command-line ×1

echo ×1

getch ×1

interactive ×1

msvcrt ×1

prompt ×1