بررسی امنیت رمز عبور با پایتون

92
0
بررسی امنیت رمز عبور با پایتون

داده ها یک دارایی حیاتی در دنیای دیجیتال امروزی است. سالانه بیش از هشت میلیون نفر قربانی هکرها می شوند و روزانه بیش از 2200 حمله سایبری رخ می دهد. با چنین نرخ هشدار دهنده ای از جرایم سایبری، استفاده از بهترین شیوه ها برای محافظت در برابر هکرها در اولویت قرار می گیرد. یکی از مهمترین جنبه های هر اکانت کاربری رمز عبور آن است. بررسی امنیت رمز عبور با پایتون را در ادامه بخوانید.

اگر یک هکر رمز عبور شما را به خطر بیاندازد، می تواند در عرض چند دقیقه به اطلاعات شخصی شما و حتی اکانت بانکی شما دسترسی پیدا کند. اگرچه این ترسناک به نظر می رسد، اما می توانید با ساختن برنامه پایتون خود برای بررسی قدرت آن، یاد بگیرید که چگونه با استفاده از بهترین روش ها رمز عبور خود را ایمن کنید.

قوانین مختلف برای تنظیم رمزهای عبور قوی

برخی از قوانین رمز عبور قوی که ممکن است پیاده سازی کنید عبارتند از:

  1. رمز عبور باید حداقل 12 کاراکتر باشد. هرچه گذرواژه طولانی تر باشد، شانس کمتری برای به خطر انداختن یک حمله brute force وجود دارد.
  2. رمز عبور باید ترکیبی از حروف کوچک، حروف بزرگ، اعداد و کاراکترهای خاص باشد.
  3. از تکرار کاراکترهای رمز عبور خودداری کنید.
  4. این نباید حاوی جزئیات شخصی مانند نام، شماره تلفن یا هر چیزی باشد که کسی بتواند به راحتی حدس بزند.
  5. این نباید یک کلمه فرهنگ لغت رایج باشد، اگرچه می توانید از کلمات در عبارات رمز عبور طولانی تر استفاده کنید.
  6. رمز عبور نباید برای چندین اکانت یکسان باشد. می‌توانید یک مدیر رمز عبور راه‌اندازی کنید تا گذرواژه‌های مختلف را برای سایت‌های مختلف بدون به خاطر سپردن هر یک به‌طور خودکار تکمیل کند.

راه های مختلفی برای ایجاد رمز عبور نشکن وجود دارد که می توانید آن ها را به خاطر بسپارید. برخی از آنها از قافیه های مهد کودک، نقل قول از فیلم ها، زبان صنعتی و غیره استفاده می کنند.

چگونه با استفاده از پایتون قدرت رمز عبور خود را بررسی کنید

با بررسی ویژگی های بالا می توانید برنامه ای برای تست قدرت رمز عبور بسازید. برای این ساخت، به دو ماژول نیاز دارید: رشته و مجموعه.

همچنین می توانید از ماژول getpass برای مخفی کردن رمز عبور هنگام وارد کردن کاربر استفاده کنید. این به محافظت از رمز عبور شما در زمانی که مجبور به تایپ آن در عموم هستید کمک می کند. برای نصب getpass در محیط محلی خود، یک ترمینال باز کنید و تایپ کنید:

pip install getpass4

می توانید از کلاس String برای بررسی اینکه آیا یک کاراکتر یک حرف، رقم یا نماد است استفاده کنید. می توانید از مجموعه ها استفاده کنید تا بررسی کنید که آیا نویسه هایی در رمز عبور تکرار می شوند یا خیر.

از کلمه کلیدی def برای تعریف تابعی به نام check_password_strength() استفاده کنید و رمز عبوری را که به عنوان پارامتر بدست می آورید به آن ارسال کنید.

شش متغیر را راه‌اندازی کنید: low_alpha_count، upper_alpha_count، number_count، special_char_count، length، مشترک تا صفر. اینها وجود حروف کوچک، حروف بزرگ، اعداد، کاراکترهای خاص، طول، تکرار کاراکترها در رمز عبور را بررسی می کنند.

رمز عبوری را که از کاربر دریافت می کنید به تابع list() ارسال کنید تا آن را به لیستی از کاراکترها تبدیل کنید. با استفاده از حلقه for، روی هر کاراکتر لیست تکرار کنید. از عبارت if-else برای بررسی اینکه آیا کاراکتر یک حروف کوچک، حروف بزرگ، عدد یا یک کاراکتر خاص است استفاده کنید و تعداد را به ترتیب به روز کنید.

شما می توانید فرض کنید که هر چیز دیگری از حروف الفبا یا عدد یک کاراکتر خاص است. برای محدودیت بیشتر، می توانید کاراکترهای ویژه را به عنوان یک رشته ذخیره کنید و بررسی کنید که آیا کاراکتر رمز عبور در آن وجود دارد یا خیر. علاوه بر این، برخی از وب‌سایت‌ها به شما اجازه می‌دهند از فضای خالی در رمز عبور استفاده کنید. می‌توانید متغیر دیگری را تنظیم کنید و آن را افزایش دهید یا آن را در تعداد کاراکترهای ویژه در نظر بگیرید.

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

برای بررسی رایج بودن رمز عبور کاربر به فهرست رمز عبور یا پایگاه داده نیاز دارید. می توانید لیستی از یک میلیون رمز عبور محبوب را از مخزن Common-Credential GitHub SecLists دانلود کنید.

فایل متنی را با نام common_password_list.txt ذخیره کنید. از دستور with برای انجام مدیریت استثنا استفاده کنید و فایل رمز عبور را در حالت خواندن باز کنید. از تابع read() برای دریافت محتوای موجود در فایل و ذخیره آن در متغیری به نام content استفاده کنید.

اگر رمز عبوری که کاربر وارد می کند در لیست رمزهای رایج وجود ندارد، مقدار متغیر مشترک را یک عدد افزایش دهید.

   with open(“common_password_list.txt”, ‘r’) as file:
        content = file.read()

        if password not in content:
            common += 1

برای بررسی طول رمز عبور، کافی است آن را به تابع len() ارسال کنید و بررسی کنید که آیا بزرگتر یا مساوی دوازده است. اگر چنین است، مقدار متغیر طول را افزایش دهید.

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

برای بررسی تکرار کاراکترها در رمز عبور، از زیر کلاس Counter از مجموعه ها استفاده کنید. شمارنده مجموعه‌ای نامرتب از جفت‌های کلید و ارزش است که کلید خود عنصر و مقدار تعداد عنصر است.

از روش درک لیست برای ایجاد لیستی از نویسه های تکراری از فرهنگ لغت که با استفاده از مجموعه ها دریافت می کنید استفاده کنید. روی فرهنگ لغت تکرار کنید و بررسی کنید که آیا تعداد کاراکترها از یک بیشتر است یا خیر. اگر تعداد بیشتر است، آن را به یک لیست اضافه کنید و آن را در مکرر ذخیره کنید.

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

اکنون که مقادیر ویژگی های فردی را دارید، متغیری به نام قدرت را به صفر مقداردهی اولیه کنید. همانطور که از نام آن پیداست، این متغیر را برای بررسی قدرت رمز عبور خواهید دید. سیستم امتیازدهی از هفت، یک امتیاز برای هر گنجاندن یک کاراکتر و مشخصه یک رمز عبور قوی است.

بررسی کنید که آیا تعداد حروف کوچک، حروف بزرگ، اعداد، نویسه‌های ویژه بزرگتر یا مساوی یک است یا خیر و برای هر حضور یک عدد افزایش دهید. به طور مشابه، بررسی کنید که آیا طول و متغیر مشترک برابر با یک است و آیا طول کاراکتر تکراری برابر با صفر است. اگر درست است، مقدار متغیر قدرت را افزایش دهید.

  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

از رشته چند خطی (سه نقل قول) برای نمایش چندین خط متن در یک عبارت چاپی استفاده کنید. از Sring Interpolation یا f-strings یا برای نمایش تعداد مشخصه ها استفاده کنید. می توانید با نوشتن f در ابتدای رشته در عبارت print و محصور کردن متغیرها در پرانتزهای مجعد به این هدف برسید. شما از درون یابی رشته ای استفاده می کنید زیرا محتوای داخل دستور چاپ یک رشته است، اما مقدار متغیرها یک عدد صحیح است.

    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”“”)

در نهایت از عبارت input برای دریافت رمز عبور از کاربر و ارسال آن به تابع check_password_strength استفاده کنید. بر اساس قدرت رمز عبور، برنامه امتیاز را به همراه شمارش ویژگی های موجود در رمز عبور نمایش می دهد.

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

خروجی جستجوگر قدرت رمز عبور

با وارد کردن یک رمز عبور قوی بر اساس ویژگی های ذکر شده، برنامه پایتون قدرت را به صورت 7/7 نمایش می دهد:

با وارد کردن یک رمز عبور ضعیف و رایج، برنامه پایتون قدرت را به صورت 7/1 نشان می دهد:

رمز عبور و امنیت

در حالی که می توانید قوی ترین رمز عبور را تعیین کنید، راه های دیگری نیز وجود دارد که هکرها می توانند به سیستم شما نفوذ کنند. 95 درصد حملات سایبری نتیجه خطای انسانی است. یکی از رایج ترین روش هایی که هکرها از آن استفاده می کنند، مهندسی اجتماعی است. هکر ممکن است برای شما لینک های تقلبی را به رسانه های اجتماعی یا وب سایت های تجارت الکترونیک ارسال کند که ظاهری قانونی دارند، اما در صورت استفاده از آنها رمز عبور شما را به خطر می اندازد.

برای محافظت در برابر این تکنیک‌ها، مطمئن شوید که فقط لینک ها را از یک منبع قابل اعتماد باز می‌کنید و فقط اطلاعات مهم را به صورت ایمن وارد یا ذخیره می‌کنید.

امتیاز این مطلب
سهیل دهقانی
نوشته شده توسط

سهیل دهقانی

علاقه مند به فناوری و تکنولوژی های روز دنیا کارشناس سئو و تولید محتوا

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

گوگل فارکس آموزش تخصصی آمارکتس