Nhập mật khẩu mã Python

Mật khẩu đặc biệt có vấn đề đối với các lập trình viên. Bạn không được phép lưu trữ chúng mà không mã hóa chúng và bạn không được tiết lộ những gì đã được nhập khi người dùng của bạn nhập một. Điều này trở nên đặc biệt quan trọng đối với tôi khi tôi quyết định muốn tăng cường bảo mật cho máy tính xách tay của mình. Tôi mã hóa thư mục chính của mình—nhưng khi tôi đăng nhập, bất kỳ mật khẩu nào được lưu dưới dạng văn bản thuần túy trong tệp cấu hình đều có khả năng bị lộ trước những con mắt tò mò

Cụ thể, tôi sử dụng một ứng dụng có tên là Mutt làm ứng dụng email khách của mình. Nó cho phép tôi đọc và soạn email trong thiết bị đầu cuối Linux của mình, nhưng thông thường, nó sẽ yêu cầu mật khẩu trong tệp cấu hình của nó. Tôi đã hạn chế quyền đối với tệp cấu hình Mutt của mình để chỉ tôi mới có thể xem tệp đó, nhưng tôi là người dùng duy nhất trên máy tính xách tay của mình, vì vậy tôi không thực sự lo lắng về việc người dùng đã được xác thực vô tình nhìn vào cấu hình của tôi. Thay vào đó, tôi muốn bảo vệ bản thân khỏi việc đăng cấu hình của mình lên mạng một cách đãng trí, để khoe khoang quyền hoặc kiểm soát phiên bản, với mật khẩu của tôi bị lộ. Ngoài ra, mặc dù tôi không mong muốn có những vị khách không mời trên hệ thống của mình, nhưng tôi muốn đảm bảo rằng kẻ xâm nhập không thể lấy được mật khẩu của tôi chỉ bằng cách chạy

$ ./test.py
Enter password: my-Complex-Passphrase

8 trên cấu hình của tôi

Python GnuPG

Thêm tài nguyên Python

  • IDE là gì?
  • bảng ăn gian. Trăn 3. 7 cho người mới bắt đầu
  • Khung GUI Python hàng đầu
  • Tải xuống. 7 thư viện PyPI thiết yếu
  • Nhà phát triển mũ đỏ
  • Nội dung Python mới nhất

Mô-đun Python

$ ./test.py
Enter password: my-Complex-Passphrase

9 là trình bao bọc Python cho ứng dụng

$ ./test.py
Enter password: my-Complex-Passphrase

0. Tên của mô-đun là

$ ./test.py
Enter password: my-Complex-Passphrase

9, bạn không được nhầm lẫn với mô-đun có tên là

$ ./test.py
Enter password: my-Complex-Passphrase

2

GnuPG [GPG] là hệ thống mã hóa mặc định cho Linux và tôi đã sử dụng hệ thống này từ năm 2009 trở đi. Tôi cảm thấy thoải mái với nó và có mức độ tin tưởng cao vào tính bảo mật của nó

Tôi quyết định rằng cách tốt nhất để lấy mật khẩu của mình vào Mutt là lưu trữ mật khẩu của mình trong tệp GPG được mã hóa, tạo lời nhắc cho mật khẩu GPG của tôi để mở khóa tệp được mã hóa và giao mật khẩu cho Mutt [thực ra là lệnh

$ ./test.py
Enter password: my-Complex-Passphrase

3,

Nhận đầu vào của người dùng bằng Python khá dễ dàng. Bạn thực hiện cuộc gọi tới

$ ./test.py
Enter password: my-Complex-Passphrase

4 và bất kỳ loại người dùng nào được lưu trữ dưới dạng biến

print["Enter password: "]
myinput = input[]

print["You entered: ", myinput]

Vấn đề của tôi là khi tôi nhập mật khẩu vào thiết bị đầu cuối theo lời nhắc mật khẩu của mình, mọi thứ tôi nhập đều hiển thị cho bất kỳ ai nhìn qua vai tôi hoặc cuộn qua lịch sử thiết bị đầu cuối của tôi

$ ./test.py
Enter password: my-Complex-Passphrase

Nhập mật khẩu vô hình với getpass

Như thường lệ, có một mô-đun Python đã giải quyết được vấn đề của tôi. Mô-đun này là

$ ./test.py
Enter password: my-Complex-Passphrase

5 và từ quan điểm của người dùng, nó hoạt động giống hệt như

$ ./test.py
Enter password: my-Complex-Passphrase

4 ngoại trừ việc không hiển thị những gì người dùng đang nhập

Bạn có thể cài đặt cả hai mô-đun với pip

________số 8

Đây là tập lệnh Python của tôi để tạo lời nhắc mật khẩu

#!/usr/bin/env python
# by Seth Kenlon
# GPLv3

# install deps:
# python3 -m pip install --user python-gnupg getpass4

import gnupg
import getpass
from pathlib import Path

def get_api_pass[]:
    homedir = str[Path.home[]]
    gpg = gnupg.GPG[gnupghome=os.path.join[homedir,".gnupg"], use_agent=True]
    passwd = getpass.getpass[prompt="Enter your GnuPG password: ", stream=None]

    with open[os.path.join[homedir,'.mutt','pass.gpg'], 'rb'] as f:
        apipass = [gpg.decrypt_file[f, passphrase=passwd]]

    f.close[]

    return str[apipass]
   
if __name__ == "__main__":
    apipass = get_api_pass[]
    print[apipass]

Lưu tệp dưới dạng

$ ./test.py
Enter password: my-Complex-Passphrase

7 nếu bạn muốn dùng thử. Nếu bạn đang sử dụng

$ ./test.py
Enter password: my-Complex-Passphrase

3 và muốn sử dụng giải pháp này để nhập mật khẩu của riêng mình, thì hãy lưu nó vào một số vị trí mà bạn có thể trỏ

$ ./test.py
Enter password: my-Complex-Passphrase

3 tới trong tệp

$ python -m pip install --user \
python-gnupg getpass4

0 của mình [tôi sử dụng

$ python -m pip install --user \
python-gnupg getpass4

1]

Kiểm tra lời nhắc mật khẩu

Để xem tập lệnh đang hoạt động, trước tiên bạn phải tạo một tệp được mã hóa [Tôi cho rằng bạn đã thiết lập GPG]

$ ./test.py
Enter password: my-Complex-Passphrase

5

Bây giờ hãy chạy tập lệnh Python

$ ./test.py
Enter password: my-Complex-Passphrase

6

Không có gì hiển thị khi bạn nhập, nhưng miễn là bạn nhập chính xác cụm mật khẩu GPG của mình, bạn sẽ thấy thông báo kiểm tra

Tích hợp lời nhắc mật khẩu với offlineimap

Tôi cần tích hợp lời nhắc mới của mình với lệnh

$ ./test.py
Enter password: my-Complex-Passphrase

3. Tôi đã chọn Python cho tập lệnh này vì tôi biết rằng

$ ./test.py
Enter password: my-Complex-Passphrase

3 có thể gọi các ứng dụng Python. Nếu bạn là người dùng

$ ./test.py
Enter password: my-Complex-Passphrase

3, bạn sẽ đánh giá cao rằng yêu cầu "tích hợp" duy nhất là thay đổi hai dòng trong tệp

$ python -m pip install --user \
python-gnupg getpass4

0 của bạn

Đầu tiên, thêm một dòng tham chiếu tệp Python

$ ./test.py
Enter password: my-Complex-Passphrase

1

Và sau đó thay thế dòng

$ python -m pip install --user \
python-gnupg getpass4

6 trong

$ python -m pip install --user \
python-gnupg getpass4

0 bằng một lệnh gọi hàm

$ python -m pip install --user \
python-gnupg getpass4

8 trong

$ ./test.py
Enter password: my-Complex-Passphrase

7

$ ./test.py
Enter password: my-Complex-Passphrase

6

Không còn mật khẩu trong tệp cấu hình của bạn

vấn đề an ninh

Đôi khi bạn cảm thấy gần như hoang tưởng khi nghĩ về những chi tiết vụn vặt về bảo mật trên máy tính cá nhân của mình. Cấu hình SSH của bạn có thực sự cần giới hạn ở mức 600 không?

Tuy nhiên, biết rằng tôi không có dữ liệu nhạy cảm được giấu kín trong các tệp cấu hình của mình giúp tôi dễ dàng chuyển các tệp vào kho lưu trữ Git công khai, sao chép và dán các đoạn mã vào các diễn đàn hỗ trợ và chia sẻ kiến ​​thức của mình dưới dạng . Chỉ riêng điều đó, bảo mật được cải thiện đã giúp cuộc sống của tôi dễ dàng hơn. Và với rất nhiều mô-đun Python tuyệt vời có sẵn để trợ giúp, thật dễ dàng để thực hiện

Đọc gì tiếp theo

Không bao giờ quên mật khẩu của bạn với thuật toán mã hóa Python này

Thuật toán độc đáo này sử dụng Python và Chia sẻ bí mật của Shamir bảo vệ mật khẩu chính của bạn khỏi tin tặc và sự lãng quên của chính bạn

Moshe Zadka

[Phóng viên]

11 Tháng Sáu, 2020

Tạo mật khẩu ngẫu nhiên với tập lệnh Bash này

Loại bỏ rắc rối khi chọn mật khẩu với tập lệnh Bash đơn giản này

Greg Pittman

19 Tháng Mười Một, 2019

thẻ

An ninh và sự riêng tư

con trăn

Seth Kenlon

Seth Kenlon là một người đam mê UNIX, người ủng hộ văn hóa tự do, nghệ sĩ đa phương tiện độc lập và mọt sách D&D. Anh ấy đã làm việc trong ngành công nghiệp điện ảnh và máy tính, thường là cùng một lúc

Làm cách nào để chèn mật khẩu trong Python?

Sử dụng hàm getpass[] để nhắc mật khẩu người dùng . Dữ liệu đầu vào được mặc định là “Mật khẩu. ” được trả lại cho người gọi dưới dạng một chuỗi.

Làm cách nào để viết chương trình nhập tên người dùng và mật khẩu trong Python?

Đây là mã của tôi dưới đây. username = 'Polly1220' password = 'Bob' userInput = input["Tên người dùng của bạn là gì?\ n"] if userInput == username. a=input["Mật khẩu?\ n"] nếu a == mật khẩu. print["Chào mừng. "] khác. print["Đó là mật khẩu sai. "] khác. print["Đó là tên người dùng sai. "]

Chủ Đề