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

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

مدیریت رمز عبور یکی از چالش‌های مهم در دنیای دیجیتال امروز است. به خاطر سپردن رمزهای عبور متعدد و پیچیده برای حساب‌های کاربری مختلف، می‌تواند بسیار دشوار و زمان‌بر باشد. استفاده از یک مدیر رمز عبور اختصاصی، راه حلی کارآمد برای این مشکل است. در این مقاله، به آموزش ساخت یک اسکریپت ساده اما کاربردی برای مدیریت رمز عبور با استفاده از زبان برنامه‌نویسی پایتون می‌پردازیم. این اسکریپت به شما امکان می‌دهد رمزهای عبور خود را به صورت امن ذخیره، بازیابی و در صورت نیاز، تغییر دهید. این آموزش در دسته بندی ‘اتوماسیون و اسکریپت‌نویسی’ قرار می‌گیرد و هدف آن، آشنایی شما با نحوه استفاده از پایتون برای حل مسائل عملی و اتوماسیون فرآیندهای روزمره است.

پیش‌نیازها

قبل از شروع، اطمینان حاصل کنید که موارد زیر را در اختیار دارید:

  • نصب پایتون: نسخه 3.6 یا بالاتر
  • یک ویرایشگر متن یا IDE (مانند VS Code، PyCharm، Sublime Text)
  • آشنایی اولیه با مفاهیم برنامه‌نویسی پایتون (متغیرها، حلقه‌ها، شرط‌ها، توابع)

طراحی اسکریپت

اسکریپت ما شامل قابلیت‌های زیر خواهد بود:

  • ذخیره رمز عبور برای یک حساب کاربری
  • بازیابی رمز عبور برای یک حساب کاربری
  • لیست کردن تمام حساب‌های کاربری ذخیره شده
  • تغییر رمز عبور برای یک حساب کاربری
  • حذف یک حساب کاربری

پیاده‌سازی اسکریپت

برای ذخیره رمزهای عبور، از یک دیکشنری پایتون استفاده خواهیم کرد. کلیدهای دیکشنری، نام کاربری (username) خواهند بود و مقادیر آن، رمز عبور (password) مربوطه. برای افزایش امنیت، رمزهای عبور را به صورت رمزنگاری شده ذخیره خواهیم کرد. در این مثال، از کتابخانه `hashlib` برای هش کردن رمزهای عبور استفاده می‌کنیم. توجه داشته باشید که این روش هش‌کردن برای اهداف آموزشی است و برای امنیت واقعی، استفاده از کتابخانه‌های قوی‌تر و الگوریتم‌های پیچیده‌تر توصیه می‌شود.

کد پایتون:

import hashlib

passwords = {}

def hash_password(password):
    """رمز عبور را هش می‌کند."""
    salt = "your_salt"  # یک رشته تصادفی برای افزایش امنیت
    salted_password = salt + password
    hashed_password = hashlib.sha256(salted_password.encode()).hexdigest()
    return hashed_password

def store_password(username, password):
    """رمز عبور را برای یک حساب کاربری ذخیره می‌کند."""
    hashed_password = hash_password(password)
    passwords[username] = hashed_password
    print(f"رمز عبور برای {username} با موفقیت ذخیره شد.")

def retrieve_password(username):
    """رمز عبور را برای یک حساب کاربری بازیابی می‌کند."""
    if username in passwords:
        hashed_password = passwords[username]
        # در اینجا هش را برگردانید، نه رمز عبور اصلی.
        print(f"رمز عبور برای {username} (هش شده): {hashed_password}")
    else:
        print(f"حساب کاربری {username} یافت نشد.")

def list_accounts():
    """لیست تمام حساب‌های کاربری ذخیره شده را نمایش می‌دهد."""
    if passwords:
        print("حساب‌های کاربری ذخیره شده:")
        for username in passwords:
            print(f"- {username}")
    else:
        print("هیچ حساب کاربری ذخیره نشده است.")

def change_password(username, new_password):
    """رمز عبور را برای یک حساب کاربری تغییر می‌دهد."""
    if username in passwords:
        passwords[username] = hash_password(new_password)
        print(f"رمز عبور برای {username} با موفقیت تغییر یافت.")
    else:
        print(f"حساب کاربری {username} یافت نشد.")

def delete_account(username):
    """یک حساب کاربری را حذف می‌کند."""
    if username in passwords:
        del passwords[username]
        print(f"حساب کاربری {username} با موفقیت حذف شد.")
    else:
        print(f"حساب کاربری {username} یافت نشد.")

# منوی اصلی
while True:
    print("nمنوی مدیریت رمز عبور:")
    print("1. ذخیره رمز عبور")
    print("2. بازیابی رمز عبور")
    print("3. لیست حساب‌ها")
    print("4. تغییر رمز عبور")
    print("5. حذف حساب")
    print("6. خروج")

    choice = input("انتخاب کنید (1-6): ")

    if choice == '1':
        username = input("نام کاربری: ")
        password = input("رمز عبور: ")
        store_password(username, password)
    elif choice == '2':
        username = input("نام کاربری: ")
        retrieve_password(username)
    elif choice == '3':
        list_accounts()
    elif choice == '4':
        username = input("نام کاربری: ")
        new_password = input("رمز عبور جدید: ")
        change_password(username, new_password)
    elif choice == '5':
        username = input("نام کاربری: ")
        delete_account(username)
    elif choice == '6':
        print("خروج از برنامه.")
        break
    else:
        print("انتخاب نامعتبر. لطفاً دوباره تلاش کنید.")

توضیحات کد

  • `hashlib`: این کتابخانه برای هش کردن رمزهای عبور استفاده می‌شود.
  • `passwords`: یک دیکشنری برای ذخیره نام کاربری و رمز عبور (هش شده).
  • `hash_password(password)`: این تابع رمز عبور را با استفاده از الگوریتم SHA256 هش می‌کند. استفاده از `salt` (یک رشته تصادفی) امنیت را افزایش می‌دهد.
  • `store_password(username, password)`: این تابع رمز عبور را هش کرده و در دیکشنری `passwords` ذخیره می‌کند.
  • `retrieve_password(username)`: این تابع رمز عبور هش شده را برای یک نام کاربری خاص بازیابی می‌کند.
  • `list_accounts()`: این تابع لیست تمام نام‌های کاربری ذخیره شده را نمایش می‌دهد.
  • `change_password(username, new_password)`: این تابع رمز عبور یک نام کاربری را با رمز عبور جدید جایگزین می‌کند.
  • `delete_account(username)`: این تابع یک نام کاربری و رمز عبور مربوطه را از دیکشنری حذف می‌کند.
  • منوی اصلی: این بخش، رابط کاربری ساده‌ای را برای تعامل با کاربر فراهم می‌کند.

نکات امنیتی مهم

این اسکریپت یک مثال ساده برای اهداف آموزشی است و نباید برای ذخیره رمزهای عبور حساس در محیط‌های واقعی استفاده شود. در اینجا چند نکته امنیتی مهم وجود دارد که باید در نظر داشته باشید:

  • استفاده از الگوریتم‌های هش قوی‌تر: SHA256 یک الگوریتم هش نسبتاً قدیمی است. از الگوریتم‌های قوی‌تر مانند bcrypt یا Argon2 استفاده کنید.
  • استفاده از Salt منحصر به فرد: برای هر رمز عبور، یک Salt منحصر به فرد ایجاد کنید.
  • ذخیره Salt همراه با هش: Salt را همراه با هش رمز عبور ذخیره کنید تا در هنگام بازیابی رمز عبور، بتوانید از آن استفاده کنید.
  • استفاده از رمزنگاری کلید: برای محافظت از کلیدهای رمزنگاری، از رمزنگاری کلید استفاده کنید.
  • ذخیره رمزهای عبور در یک پایگاه داده امن: به جای ذخیره رمزهای عبور در یک دیکشنری در حافظه، از یک پایگاه داده امن استفاده کنید.
  • استفاده از احراز هویت دو مرحله‌ای: برای افزایش امنیت، از احراز هویت دو مرحله‌ای استفاده کنید.

بهبود اسکریپت

می‌توانید این اسکریپت را با افزودن قابلیت‌های زیر بهبود دهید:

  • اضافه کردن قابلیت جستجو در حساب‌ها
  • ذخیره اطلاعات اضافی برای هر حساب کاربری (مانند ایمیل، شماره تلفن)
  • ایجاد یک رابط کاربری گرافیکی (GUI)
  • استفاده از یک پایگاه داده برای ذخیره رمزهای عبور
  • پیاده‌سازی قابلیت پشتیبان‌گیری و بازیابی

نتیجه‌گیری

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

بدون دیدگاه

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

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