Tôi đang viết chương trình bảng điều khiển với Python trong Windows.
Người dùng cần phải đăng nhập để sử dụng chương trình, khi anh ấy nhập mật khẩu của mình, tôi muốn họ được lặp lại là "*", trong khi tôi có thể nhận được thông tin người dùng nhập vào.
Tôi tìm thấy trong thư viện chuẩn một mô-đun được gọi là getpass, nhưng nó sẽ không echo bất cứ điều gì khi bạn nhập (linux như).
Cảm ơn.Làm thế nào để đọc mật khẩu với echo "*" trong chương trình bảng điều khiển Python?
Trả lời
Mô-đun getpass
được viết bằng Python. Bạn có thể dễ dàng sửa đổi nó để làm điều này. Trong thực tế, đây là một phiên bản sửa đổi của getpass.win_getpass()
rằng bạn chỉ có thể dán vào mã của bạn:
import sys
def win_getpass(prompt='Password: ', stream=None):
"""Prompt for password with echo off, using Windows getch()."""
import msvcrt
for c in prompt:
msvcrt.putch(c)
pw = ""
while 1:
c = msvcrt.getch()
if c == '\r' or c == '\n':
break
if c == '\003':
raise KeyboardInterrupt
if c == '\b':
pw = pw[:-1]
msvcrt.putch('\b')
else:
pw = pw + c
msvcrt.putch("*")
msvcrt.putch('\r')
msvcrt.putch('\n')
return pw
Bạn có thể muốn xem xét lại này, tuy nhiên. Cách Linux tốt hơn; thậm chí chỉ biết số lượng ký tự trong mật khẩu là một gợi ý quan trọng đối với người muốn crack nó.
You can use the getpass
module. Điều này không chính xác trả lời câu hỏi vì hàm getpass không xuất ra bất kỳ thứ gì cho bàn điều khiển ngoại trừ lời nhắc. Lý do cho điều này là nó là một lớp bảo mật bổ sung. Nếu ai đó đang xem qua vai của bạn, họ sẽ không thể biết được mật khẩu của bạn là bao lâu.
Dưới đây là một ví dụ về cách sử dụng nó:
from getpass import getpass
getpass('Enter your password: ')
Ví dụ này sẽ hiển thị "Nhập mật khẩu của bạn:" và sau đó bạn có thể gõ vào mật khẩu của bạn.
'getpass' được đề cập trong câu hỏi gốc và bị từ chối vì không có dấu hoa thị. – kindall
Câu trả lời của kindall là gần, nhưng nó có vấn đề với backspace không xóa dấu hoa thị, cũng như backspace có thể quay trở lại ngoài dấu nhắc đầu vào.
Hãy thử:
def win_getpass(prompt='Password: ', stream=None):
"""Prompt for password with echo off, using Windows getch()."""
if sys.stdin is not sys.__stdin__:
return fallback_getpass(prompt, stream)
import msvcrt
for c in prompt:
msvcrt.putwch(c)
pw = ""
while 1:
c = msvcrt.getwch()
if c == '\r' or c == '\n':
break
if c == '\003':
raise KeyboardInterrupt
if c == '\b':
if pw == '':
pass
else:
pw = pw[:-1]
msvcrt.putwch('\b')
msvcrt.putwch(" ")
msvcrt.putwch('\b')
else:
pw = pw + c
msvcrt.putwch("*")
msvcrt.putwch('\r')
msvcrt.putwch('\n')
return pw
Note mscvrt.putwch không làm việc với python 2.x, bạn cần phải sử dụng mscvrt.putch để thay thế.
- 1. Làm thế nào để echo sao (*) khi đọc mật khẩu với `đọc`?
- 2. Đọc mật khẩu từ giao diện điều khiển trong Scala
- 3. Làm thế nào để chuyển đổi mật khẩu văn bản để băm mật khẩu trong wordpress
- 4. Làm thế nào để thực thi các chương trình bàn điều khiển con mà không hiển thị cửa sổ bảng điều khiển từ chương trình GUI Win32?
- 5. Làm thế nào để tạo bảng với các trường mật khẩu trong mysql?
- 6. Lưu trữ mật khẩu an toàn trong mã chương trình?
- 7. Đăng nhập DropNet DropBox, cách thực hiện chương trình trong ứng dụng bảng điều khiển?
- 8. Làm thế nào để echo để giao diện điều khiển trong Laravel và Artisan?
- 9. Làm thế nào để giao tiếp với trình điều khiển vi điều khiển Linux
- 10. Chương trình điều khiển Java
- 11. Chuyển đổi Chương trình Bảng điều khiển Java thành Webapp
- 12. Làm cách nào để tắt cảnh báo Caps Lock bằng điều khiển mật khẩu?
- 13. Làm thế nào để truy cập điều khiển mà là trong bảng điều khiển trong C#
- 14. Đọc đầu vào bảng điều khiển trong MonoDevelop
- 15. Đọc một mật khẩu từ std :: cin
- 16. Làm thế nào để đảo ngược mật khẩu lưu trữ với Python trên Linux?
- 17. Trình bao MongoDB: đọc một dòng từ bảng điều khiển
- 18. Làm cách nào để chạy một ứng dụng khác trong bảng điều khiển của chương trình C#?
- 19. Làm thế nào để không mã hóa mật khẩu?
- 20. Trong mô-đun python, selen. làm thế nào để sử dụng trình điều khiển firefox
- 21. Làm cách nào để đặt mật khẩu người dùng trong linux từ tập lệnh python?
- 22. Làm cách nào để nhập mật khẩu ssh bằng bash?
- 23. Làm thế nào để chạy các chương trình trong bảng điều khiển bên ngoài với văn bản siêu văn bản trong hệ thống Windows?
- 24. Trong erlang: Làm thế nào để mở rộng wxNotebook trong một bảng điều khiển?
- 25. Chương trình dòng lệnh VB.Net (bảng điều khiển) với tham số cho SharePoint
- 26. Làm thế nào để thay đổi mật khẩu người dùng Drupal theo lập trình?
- 27. Python: nhập khẩu vào đầu chương trình chính & PEP 8
- 28. Làm cách nào để kiểm tra xem chương trình có được chạy từ bảng điều khiển không?
- 29. C#: Làm cách nào để cài đặt chương trình giống hệt như chương trình và tính năng của bảng điều khiển?
- 30. Làm thế nào để phân lớp Điều khiển Điều hướng khi sử dụng bảng phân cảnh?
msvcrt.putch ('\ b') có vẻ như điều này không hoạt động – wong2