Hướng dẫn password manager python tkinter - quản lý mật khẩu python tkinter

Chỉnh sửa: Câu hỏi sửa đổi của bạn cho thấy rõ rằng bạn lo ngại về việc những người chỉnh sửa mã để bỏ qua kiểm tra mật khẩu. Vâng, điều đó là hoàn toàn có thể. Bạn có thể cung cấp mã của mình ở dạng .pyc, nhưng điều đó sẽ không nhất thiết ngăn ai đó phân hủy và thay đổi nó. Thật không may, Python không được thiết kế để ngăn chặn sự thay đổi mã. Điều tốt nhất bạn có thể làm là thực hiện một số loại giao dịch xác thực với một máy chủ an toàn, do đó, bất kể ai đó thay đổi mã, họ không thể bỏ qua bước đó. Tùy thuộc vào ứng dụng chính xác của bạn, điều đó có thể là quá mức cần thiết.

Nội dung chính ShowShow

  • Python gnupg
  • Nhập mật khẩu vô hình với GetPass
  • Kiểm tra dấu nhắc mật khẩu
  • Tích hợp lời nhắc mật khẩu với OfflineImap
  • Vấn đề bảo mật
  • Làm thế nào để bạn nhập mật khẩu trong Python?
  • Làm thế nào để bạn thêm tên người dùng và mật khẩu trong Python?
  • Làm cách nào để mật khẩu bảo vệ một tệp văn bản trong Python?
  • Làm cách nào để đặt mật khẩu vào tệp của mình?

Vấn đề làm thế nào để quản lý xác thực mật khẩu là một vấn đề bảo mật khó khăn mà mọi người dành toàn bộ sự nghiệp. Tuy nhiên, đây là một số thông tin về nó, giả định rằng bạn đang cố gắng thực hiện xác thực mật khẩu của riêng mình từ đầu:

Ngay cả đối với bảo vệ mật khẩu thông thường, như một nguyên tắc chung, mật khẩu người dùng không được lưu trữ ở dạng bản rõ. Thay vào đó, thường thì hàm băm một chiều đáng tin cậy được sử dụng để tạo một mẫu bit không giống với mật khẩu. Khi một mật khẩu được nhập, hàm băm tương tự được áp dụng và các mẫu bit được so sánh. Nếu chúng giống nhau, khả năng khá cao là mật khẩu được nhập chính xác.

Những gì cấu thành hàm băm "đáng tin cậy" là khó khăn. Một số được sử dụng phổ biến, và một số hàm băm phổ biến dễ bị khai thác đã biết.

Noelkd cung cấp một số mã thể hiện phương pháp này, mặc dù MD5, mà mã của anh ta sử dụng, là [tôi tin] một mã đã bị xâm phạm đến mức có những lựa chọn tốt hơn ngoài kia. Bài viết này cũng cung cấp một số mã để làm một cái gì đó tương tự:

Xác thực người dùng và mật khẩu trong Python

Nếu mối quan tâm của bạn là lưu trữ mật khẩu thực tế mà bạn phải chuyển đến cơ sở dữ liệu SQLite ở Plaintext, thì đó là một vấn đề khác. Hầu hết thời gian, tôi đã thấy các mật khẩu như vậy được lưu trữ trong bản rõ trong các tập lệnh hoặc tệp cấu hình và ứng dụng được cấu trúc theo cách ảnh hưởng đến mật khẩu đó là vấn đề rủi ro khiêm tốn.

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 nên lưu trữ chúng mà không mã hóa chúng và bạn không nên tiết lộ những gì đã được gõ khi người dùng của bạn vào. Đ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 trên máy tính xách tay của mình. Tôi mã hóa thư mục 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 trữ dưới dạng văn bản thuần túy trong tệp cấu hình có khả năng tiếp xúc với mắt tò mò.

Cụ thể, tôi sử dụng một ứng dụng có tên MUTT làm ứng dụng email của tôi. 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ó mong đợi một mật khẩu trong tệp cấu hình của nó. Tôi đã hạn chế các quyền trên tệp cấu hình MUTT của mình để chỉ tôi mới có thể nhìn thấy nó, nhưng tôi là người dùng máy tính xách tay duy nhất của mình, vì vậy tôi không thực sự quan tâm đến việc người dùng được xác thực vô tình nhìn vào cấu hình của mình. Thay vào đó, tôi muốn bảo vệ bản thân khỏi việc đăng tải cấu hình của mình lên mạng, để có quyền khoe khoang hoặc kiểm soát phiên bản, với mật khẩu của tôi được phơi bày. Ngoài ra, mặc dù tôi không có kỳ vọng về khách không mong muốn trên hệ thống của mình, tôi đã muốn đảm bảo rằng kẻ xâm nhập không thể lấy mật khẩu của mình 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

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

Kiểm tra dấu nhắc mật khẩu

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

Vấn đề bảo mật

Làm thế nào để bạn nhập mật khẩu trong Python?

Làm thế nào để bạn thêm tên người dùng và mật khẩu trong Python?

Làm cách nào để mật khẩu bảo vệ một tệp văn bản trong Python?

Vấn đề của tôi là khi tôi gõ mật khẩu vào thiết bị đầu cuối để đáp ứng với 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 là

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

5 và theo quan điểm của người dùng, nó hoạt động chính xác giống như

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

4 ngoại trừ không hiển thị những gì người dùng đang gõ.

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

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

Đây là tập lệnh Python của tôi để tạo dấu 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 cho mục nhập mật khẩu của riêng bạn, thì hãy lưu nó vào một số vị trí bạn có thể trỏ

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

3 vào 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 dấu 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 & nbsp; [Tôi sẽ giả sử rằng bạn đã thiết lập GPG]:

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

5

Bây giờ 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 gõ, nhưng miễn là bạn nhập đúng 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ể thực hiện các cuộc gọi đến 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 "tích hợp" duy nhất cần thiế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 cuộc gọi đến 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 đề bảo mật

Đôi khi cảm thấy gần như hoang tưởng khi nghĩ về các chi tiết bảo mật trên máy tính cá nhân của bạn. Cấu hình SSH của bạn có thực sự cần được giới hạn ở 600 không? Có thực sự quan trọng là mật khẩu email của bạn nằm trong một tệp cấu hình không quan trọng được chôn trong một thư mục ẩn có tên, của tất cả mọi thứ,

#!/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]

0? Chắc là không.

Tuy nhiên, khi biết rằng tôi không có dữ liệu nhạy cảm được ẩn trong các tệp cấu hình của mình giúp tôi dễ dàng thực hiện các tệp vào kho công khai, sao chép và dán đoạn trích vào các diễn đàn hỗ trợ và chia sẻ kiến ​​thức của tôi trong biểu mẫu của các tập tin cấu hình thực tế, đã biết tốt. Đối với điều đó một mình, an ninh được cải thiện đã làm cho 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 để giúp đỡ, thật dễ dàng để thực hiện.

Công việc này được cấp phép theo giấy phép quốc tế Creative Commons Attribution-chia sẻ 4.0.

Làm thế nào để bạn nhập mật khẩu trong Python?

Sử dụng hàm getPass [] để nhắc mật khẩu người dùng Hàm getPass [] được sử dụng để nhắc cho người dùng sử dụng dấu nhắc chuỗi và đọc đầu vào từ người dùng làm mật khẩu. Đầu vào đọc mặc định cho mật khẩu của người dùng: Được trả lại cho người gọi dưới dạng chuỗi. The getpass[] function is used to prompt to users using the string prompt and reads the input from the user as Password. The input read defaults to “Password: ” is returned to the caller as a string. The getpass[] function is used to prompt to users using the string prompt and reads the input from the user as Password. The input read defaults to “Password: ” is returned to the caller as a string.

Làm thế nào để bạn thêm tên người dùng và mật khẩu trong Python?

Nhận tên người dùng và mật khẩu trong thời gian chạy bằng Python...

Pip Cài đặt GetPass. Python. Sao chép ..

Tên người dùng = getPass. GetUser [] Python. Sao chép ..

username = input ['nhập tên người dùng:'] python. Sao chép ..

Mật khẩu = GetPass. GetPass [] Python. Sao chép ..

Làm cách nào để mật khẩu bảo vệ một tệp văn bản trong Python?

Mã hóa tệp bằng cách sử dụng khóa được tạo...

Mở tệp chứa khóa ..

Khởi tạo đối tượng Fernet và lưu trữ nó trong biến Fernet ..

Đọc tệp gốc ..

Mã hóa tệp và lưu trữ nó vào một đối tượng ..

Sau đó viết dữ liệu được mã hóa vào cùng một tệp NBA.CSV ..

Làm cách nào để đặt mật khẩu vào tệp của mình?

Bảo vệ một tài liệu bằng mật khẩu...

Chuyển đến Tệp> Thông tin> Bảo vệ tài liệu> Mã hóa bằng mật khẩu ..

Nhập mật khẩu, sau đó nhập lại để xác nhận nó ..

Lưu tệp để đảm bảo mật khẩu có hiệu lực ..

Chủ Đề