/ / Kiểm tra bảo mật mật khẩu của bạn với Python

Kiểm tra bảo mật mật khẩu của bạn với Python

Dữ liệu là một tài sản quan trọng trong thế giới kỹ thuật số ngày nay. Hơn tám triệu người trở thành nạn nhân của tin tặc mỗi năm và hơn 2200 cuộc tấn công mạng diễn ra mỗi ngày. Với tỷ lệ tội phạm mạng đáng báo động như vậy, việc sử dụng các biện pháp tốt nhất để bảo vệ chống lại tin tặc trở thành ưu tiên hàng đầu. Một trong những khía cạnh quan trọng nhất của bất kỳ tài khoản nào là mật khẩu của nó.


Nếu tin tặc xâm phạm mật khẩu của bạn, họ có thể truy cập vào thông tin cá nhân của bạn và thậm chí cả tài khoản ngân hàng của bạn chỉ trong vài phút. Mặc dù điều này nghe có vẻ đáng sợ, nhưng bạn có thể tìm hiểu cách bảo mật mật khẩu của mình bằng cách sử dụng các phương pháp hay nhất bằng cách xây dựng chương trình Python của riêng bạn để kiểm tra độ mạnh của nó.


Các quy tắc khác nhau để đặt mật khẩu mạnh

Một số quy tắc mật khẩu mạnh mà bạn có thể cân nhắc thực hiện là:

  1. Mật khẩu phải dài ít nhất 12 ký tự. Mật khẩu càng dài thì càng ít có khả năng bị tấn công brute force xâm phạm nó.
  2. Mật khẩu phải chứa sự kết hợp của chữ thường, chữ hoa, số và ký tự đặc biệt.
  3. Tránh lặp lại các ký tự trong mật khẩu.
  4. Nó không được chứa các chi tiết cá nhân như tên, số điện thoại hoặc bất cứ thứ gì mà ai đó có thể dễ dàng đoán ra.
  5. Nó không nên là một từ phổ biến trong từ điển, mặc dù bạn có thể sử dụng các từ trong cụm từ mật khẩu dài hơn.
  6. Mật khẩu không được giống nhau cho nhiều tài khoản. Bạn có thể thiết lập trình quản lý mật khẩu để tự động điền các mật khẩu khác nhau cho nhiều trang web khác nhau mà không cần nhớ từng mật khẩu.

Có nhiều cách khác nhau để tạo một mật khẩu không thể phá vỡ mà bạn có thể nhớ. Một số trong số họ đang sử dụng các bài đồng dao, trích dẫn từ phim ảnh, biệt ngữ trong ngành, v.v.

Cách kiểm tra độ mạnh mật khẩu của bạn bằng Python

Bạn có thể xây dựng chương trình kiểm tra độ mạnh của mật khẩu bằng cách kiểm tra các đặc điểm trên. Đối với bản dựng này, bạn sẽ cần hai mô-đun: sợi dâybộ sưu tập.

Bạn cũng có thể sử dụng vượt qua mô-đun để ẩn mật khẩu khi người dùng nhập mật khẩu. Điều này giúp bảo vệ mật khẩu của bạn khi bạn phải nhập nó ở nơi công cộng. Để cài đặt getpass trong môi trường cục bộ của bạn, hãy mở terminal và gõ:

 pip install getpass4 

Bạn có thể sử dụng lớp Chuỗi để kiểm tra xem một ký tự là chữ cái, chữ số hay ký hiệu. Bạn có thể sử dụng các bộ sưu tập để kiểm tra xem có ký tự nào lặp lại trong mật khẩu hay không.

Sử dụng từ khóa def để xác định một chức năng có tên check_password_sức mạnh () và chuyển mật khẩu mà bạn sẽ lấy làm tham số cho nó.

Khởi tạo sáu biến: Lower_alpha_count, upper_alpha_count, số_đếm, special_char_count, độ dài, chung về không. Chúng sẽ kiểm tra sự hiện diện của bảng chữ cái viết thường, bảng chữ cái viết hoa, chữ số, ký tự đặc biệt, độ dài, sự lặp lại của các ký tự trong mật khẩu.

Chuyển mật khẩu bạn nhận được từ người dùng cho danh sách() để chuyển đổi nó thành một danh sách các ký tự. Sử dụng vòng lặp for, lặp qua từng ký tự của danh sách. Sử dụng câu lệnh if-else để kiểm tra xem ký tự có phải là chữ cái viết thường, chữ cái viết hoa, số hoặc ký tự đặc biệt hay không và cập nhật số đếm tương ứng.

Bạn có thể cho rằng bất kỳ thứ gì khác từ bảng chữ cái hoặc số là một ký tự đặc biệt. Để hạn chế hơn, bạn có thể lưu trữ các ký tự đặc biệt dưới dạng một chuỗi và kiểm tra xem ký tự của mật khẩu có trong đó hay không. Ngoài ra, một số trang web cho phép bạn sử dụng khoảng trắng trong mật khẩu. Bạn có thể đặt một biến khác và tăng nó hoặc xem xét nó trong chính số lượng ký tự đặc biệt.

 import string
import collections

def check_password_strength(password):
    lower_alpha_count = upper_alpha_count = number_count = special_char_count = length = common = 0

    for char in list(password):
        if char in string.ascii_lowercase:
            lower_alpha_count += 1
        elif char in string.ascii_uppercase:
            upper_alpha_count += 1
        elif char in string.digits:
            number_count += 1
        else:
            special_char_count += 1

Bạn sẽ cần một danh sách mật khẩu hoặc cơ sở dữ liệu để kiểm tra xem mật khẩu của người dùng có phổ biến hay không. Bạn có thể tải xuống danh sách một triệu mật khẩu phổ biến nhất từ ​​kho lưu trữ Common-Credential GitHub của SecLists.

Lưu tệp văn bản dưới dạng common_password_list.txt. Sử dụng câu lệnh with để thực hiện xử lý ngoại lệ và mở tệp mật khẩu ở chế độ đọc. Sử dụng đọc() để lấy nội dung có trong tệp và lưu trữ nó trong một biến có tên là nội dung.

Nếu mật khẩu người dùng nhập không có trong danh sách mật khẩu chung, hãy tăng giá trị của biến chung lên một.

     with open("common_password_list.txt", 'r') as file:
        content = file.read()

        if password not in content:
            common += 1

Để kiểm tra độ dài của mật khẩu, chỉ cần chuyển nó đến len() và kiểm tra xem nó có lớn hơn hoặc bằng 12 hay không. Nếu vậy, hãy tăng giá trị của biến độ dài.

     if len(password) >= 12:
       length += 1

Để kiểm tra sự lặp lại của các ký tự trong mật khẩu, hãy sử dụng lớp con Counter từ Bộ sưu tập. Bộ đếm là một tập hợp các cặp khóa và giá trị không có thứ tự trong đó khóa là chính phần tử và giá trị là số lượng phần tử.

Sử dụng phương pháp hiểu danh sách để tạo danh sách các ký tự lặp lại từ từ điển mà bạn nhận được bằng cách sử dụng các bộ sưu tập. Lặp lại từ điển và kiểm tra xem số lượng ký tự có lớn hơn một không. Nếu số lượng lớn hơn, hãy thêm nó vào danh sách và lưu trữ lặp lại.

     countOfWords = collections.Counter(password)
    repeated = [i for i in countOfWords if countOfWords[i] > 1]

Bây giờ bạn đã có các giá trị của các đặc điểm riêng lẻ, hãy khởi tạo một biến có tên là strength thành 0. Như tên gợi ý, bạn sẽ sử dụng biến này để kiểm tra độ mạnh của mật khẩu. Hệ thống tính điểm là trên bảy điểm, một điểm cho mỗi lần bao gồm một ký tự và đặc điểm của một mật khẩu mạnh.

Kiểm tra xem số lượng chữ cái viết thường, chữ cái viết hoa, số, ký tự đặc biệt có lớn hơn hoặc bằng một hay không và tăng cường độ lên một cho mỗi lần hiện diện. Tương tự, kiểm tra xem độ dài và biến chung có bằng 1 không và độ dài của ký tự lặp lại có bằng 0 không. Nếu đúng, hãy tăng giá trị của biến cường độ.

     strength = 0

    if lower_alpha_count >= 1:
        strength += 1

    if upper_alpha_count >= 1:
        strength += 1

    if number_count >= 1:
        strength += 1

    if special_char_count >= 1:
        strength += 1

    if length == 1:
        strength += 1

    if common == 1:
        strength += 1

    if len(repeated) == 0:
        strength += 1

Sử dụng chuỗi nhiều dòng (ba dấu ngoặc kép) để hiển thị nhiều dòng văn bản trong một câu lệnh in. Sử dụng Nội suy vòng chữ hoặc chuỗi f hoặc để hiển thị số lượng các đặc điểm. Bạn có thể đạt được điều này bằng cách viết f ở đầu chuỗi trong câu lệnh in và đặt các biến trong dấu ngoặc nhọn. Bạn sử dụng phép nội suy chuỗi vì nội dung bên trong câu lệnh in là một chuỗi nhưng giá trị của các biến là một số nguyên.

     print(f"""Your password has:- 
    {lower_alpha_count} lowercase letters
    {upper_alpha_count} uppercase letters
    {number_count} digits
    {special_char_count} special characters
    {length} length
    {common} common
    {repeated} repeated
    "Password score: {strength}/7""")

Cuối cùng, sử dụng câu lệnh đầu vào để nhận mật khẩu từ người dùng và chuyển nó cho kiểm tra_mật khẩu_độ mạnh chức năng. Dựa trên độ mạnh của mật khẩu, chương trình sẽ hiển thị điểm số cùng với số lượng các đặc điểm có trong mật khẩu.

 password = input("Enter the password: ")
check_password_strength(password)

Đầu ra của Trình kiểm tra độ mạnh mật khẩu

Khi nhập mật khẩu mạnh dựa trên các đặc điểm được đề cập, chương trình Python hiển thị độ mạnh là 7/7:

Đầu ra của Trình kiểm tra mật khẩu khi Mật khẩu mạnh được nhập

Khi nhập mật khẩu yếu và phổ biến, chương trình Python hiển thị độ mạnh là 1/7:

Đầu ra của Trình kiểm tra mật khẩu khi Mật khẩu yếu được nhập

Mật khẩu và bảo mật

Mặc dù bạn có thể đặt mật khẩu mạnh nhất từ ​​trước đến nay, nhưng có nhiều cách khác mà tin tặc có thể xâm nhập vào hệ thống của bạn. 95% các cuộc tấn công mạng là do lỗi của con người. Một trong những phương pháp phổ biến nhất mà tin tặc sử dụng là kỹ thuật xã hội. Tin tặc có thể gửi cho bạn các liên kết giả mạo đến các trang web mạng xã hội hoặc thương mại điện tử có vẻ hợp pháp, nhưng sẽ xâm phạm mật khẩu của bạn nếu bạn sử dụng chúng.

Để bảo vệ chống lại các kỹ thuật này, hãy đảm bảo chỉ mở các liên kết từ một nguồn đáng tin cậy và chỉ nhập hoặc lưu trữ thông tin quan trọng một cách an toàn.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *