مولد كلمات مرور عشوائي في بايثون | واجهة المستخدم الرسومية Tkinter

في هذه المقالة، سنتعلم كيفية إنشاء مولد كلمات مرور عشوائي في بايثون. يعد استخدام كلمة مرور قوية أمرًا ضروريًا، بل يوصى به. وفقًا لخبراء الأمن السيبراني، يجب أن تكون كلمة المرور عبارة عن مزيج من الحروف الأبجدية والأرقام والرموز، مع التأكد أيضًا من أن المجموعة لا تشكل كلمة أو تركيبة منطقية يمكن تخمينها بسهولة باستخدام طريقة الهندسة الاجتماعية.

من ناحية أخرى، فإن كلمة المرور العشوائية التي يبلغ طولها 8 أحرف على الأقل حتى بعد تطبيق أساليب اختراق الأمان المتقدمة مثل هجوم القوة الغاشمة يصعب اختراقها أو كسرها أو قد يستغرق اختراقها وقتًا طويلاً.

كود مولد كلمة المرور العشوائية – واجهة المستخدم الرسومية

إن إنشاء كلمة مرور عشوائية قوية بطول موصى به يعد مهمة صعبة، ومن الواضح أن تذكرها ليس بالأمر الصعب. ولكن هنا، سنقوم ببرمجة نص برمجي بلغة بايثون لإنشاء كلمة مرور عشوائية.

قم بتثبيت واستيراد الوحدات المطلوبة

نبدأ بتثبيت المكتبات المطلوبة باستخدام مدير الحزم pip. أدخل الأوامر التالية في سطر الأوامر أو المحطة الطرفية لتثبيت الوحدات النمطية.

نحن بحاجة إلى تثبيت Tkinter لإنشاء واجهة المستخدم الرسومية (GUI) لمولد كلمة المرور الخاصة بنا استنادًا إلى مكتبة pyperclip لتزويدنا بدالة النسخ إلى الحافظة.

pip install tkinter
pip install pyperclip
pip install random

بعد تثبيت المكتبات المطلوبة من الطرفية، ننتقل الآن إلى ملف بايثون لكتابة التعليمات البرمجية. نبدأ باستيراد المكتبات على النحو التالي:

حيث يتم استخدام random لتوليد أحرف عشوائية من قائمة معينة ويتم استخدام string للحصول على الأحرف/النص.

import random, string
from tkinter import *
import pyperclip

تهيئة نافذة Tkinter

كخطوة تالية، نقوم بتهيئة نافذة واجهة المستخدم الرسومية الخاصة بنا باستخدام وحدة Tkinter.

#Initialize Window
 
root =Tk()
root.geometry("400x400") #size of the window by default
 
#title of our window
root.title("Random Password Generator")

برمجة العناصر

نبدأ الآن في برمجة العناصر وفقًا لواجهة المستخدم الرسومية، للعناوين، والنصوص، والملصقات، والأزرار، وما إلى ذلك.

لتحديد طول كلمة المرور:

  • نستخدم طريقة Label لإنشاء تسمية نصية لتحديد غرض حقل الإدخال الذي أردناه لطول كلمة المرور.
  • يتم استخدام طريقة spinbox لأخذ المدخلات مقابل محدد القيمة، والتي تتراوح من 4 إلى 32، والتي يمكنك تغييرها حسب الحاجة، وهذا يحدد الحد الأدنى والحد الأقصى لطول كلمة المرور.
#get length of password
 
pass_head = Label(root, text = 'Password Length', font = 'arial 12 bold').pack(pady=10) #to generate label heading
 
pass_len = IntVar() #integer variable to store the input of length of the password wanted
length = Spinbox(root, from_ = 4, to_ = 32 , textvariable = pass_len , width = 24, font='arial 16').pack()

نقوم ببرمجة زر إنشاء كلمة مرور، والذي نضغط عليه لإنشاء كلمة مرور عشوائية:

  • نضفي على الزر بعض التصميمات، بالإضافة إلى الاسم – Generate Password. نستخدم الأمر الذي يوضح الوظيفة (هنا، وظيفة randPassGen) التي سيتم تشغيلها عند النقر (الضغط على المفتاح) على الزر.
Button(root, text = "Generate Password" , command = randPassGen, font="Arial 10", bg='lightblue', fg='black', activebackground="teal", padx=5, pady=5 ).pack(pady= 20)

في هذه الخطوة، تعرض نافذتنا الناتج التالي:

بعد إضافة ذلك، نضيف الآن عناصر الإخراج إلى الكود الخاص بنا.

  • نضيف مرة أخرى تسمية لإظهار ما يتم عرضه، نضيف label “كلمة مرور تم إنشاؤها عشوائيًا” مع بعض التصميم.
  • مرة أخرى، نضيف عنصر واجهة مستخدم “Entry” لإنشاء حقل إدخال، ويهدف هذا إلى عرض كلمة المرور التي تم إنشاؤها عشوائيًا
  • يتم استخدام أداة textvariable لعرض النص من قيمة المتغير output_pass، والذي يحتوي على كلمة المرور التي تم إنشاؤها عشوائيًا.
pass_label = Label(root, text = 'Random Generated Password', font = 'arial 12 bold').pack(pady="30 10")
Entry(root , textvariable = output_pass, width = 24, font='arial 16').pack()
  • نضيف الآن زر إضافة إلى الحافظة لعرضه، تُظهر أداة الأوامر الخاصة به أن دالة copyPass ستعمل عند النقر فوق هذا الزر.
Button(root, text = 'Copy to Clipboard', command = copyPass, font="Arial 10", bg='lightblue', fg='black', activebackground="teal", padx=5, pady=5 ).pack(pady= 20)

عند التنفيذ، تبدو نافذة Tkinter الخاصة بنا مثل:

دالة كلمة المرور العشوائية

بعد الانتهاء من الجزء الأمامي (GUI)، ننتقل الآن إلى الجزء الخلفي من الكود، حيث نضيف دوال إلى أزرارنا.

  • نقوم ببرمجة الدالة الأكثر أهمية في هذا الكود، وهي توليد كلمة مرور عشوائية:
#Random Password generator
 
output_pass = StringVar()
 
all_combi = [string.punctuation, string.ascii_uppercase, string.digits, string.ascii_lowercase]  #list of all possible characters
 
def randPassGen():
    password = "" # to store password
    for y in range(pass_len.get()):
        char_type = random.choice(all_combi)   #to randomize the occurance of alphabet, digit or symbol
        password = password + random.choice(char_type) #to generate random characters as per the input length from the occurance list
     
    output_pass.set(password)

دالة نسخ كلمة المرور

كخطوة أخيرة، نضيف دالة نسخ كلمة المرور في الكود على النحو التالي:

  • نستخدم تابع النسخ من مكتبة pyperclip لحفظ كلمة المرور كما تم نسخها إلى نظامنا. نحصل على كلمة المرور باستخدام التابع get للمتغير output_pass.
#Copy to clipboard function
 
def copyPass():
    pyperclip.copy(output_pass.get())

إن مولد كلمة المرور العشوائي و دالة النسخ إلى الحافظة لن يتم تضمينهما في نهاية الكود، لأنه في هذه الحالة، سيطرح البرنامج خطأ إذا لم يتم العثور عليهما.

نعلن عن دوالنا مباشرة بعد تهيئة نافذتنا (بعد كود الخطوة 2). كما هو موضح في الكود النهائي أدناه:

كود بايثون الكامل لمولد كلمة مرور عشوائية بواجهة رسومية

import random, string
from tkinter import *
import pyperclip
 
 
#Initialize Window
 
root =Tk()
root.geometry("400x400") #size of the window by default
 
#title of our window
root.title("Random Password Generator")
 
# -------------------  Random Password generator function
 
output_pass = StringVar()
 
all_combi = [string.punctuation, string.ascii_uppercase, string.digits, string.ascii_lowercase]  #list of all possible characters
 
def randPassGen():
    password = "" # to store password
    for y in range(pass_len.get()):
        char_type = random.choice(all_combi)   #to randomize the occurance of alphabet, digit or symbol
        password = password + random.choice(char_type)
     
    output_pass.set(password)
 
# ----------- Copy to clipboard function
 
def copyPass():
    pyperclip.copy(output_pass.get())
 
#-----------------------Front-end Designing (GUI)
 
pass_head = Label(root, text = 'Password Length', font = 'arial 12 bold').pack(pady=10) #to generate label heading
 
pass_len = IntVar() #integer variable to store the input of length of the password wanted
length = Spinbox(root, from_ = 4, to_ = 32 , textvariable = pass_len , width = 24, font='arial 16').pack()
 
#Generate password button
 
Button(root, command = randPassGen, text = "Generate Password", font="Arial 10", bg='lightblue', fg='black', activebackground="teal", padx=5, pady=5 ).pack(pady= 20)
 
pass_label = Label(root, text = 'Random Generated Password', font = 'arial 12 bold').pack(pady="30 10")
Entry(root , textvariable = output_pass, width = 24, font='arial 16').pack()
 
#Copy to clipboard button
 
Button(root, text = 'Copy to Clipboard', command = copyPass, font="Arial 10", bg='lightblue', fg='black', activebackground="teal", padx=5, pady=5 ).pack(pady= 20)
 
root.mainloop()  #to bundle pack the code for tkinter

هذا كل شيء في البرنامج التعليمي. نأمل أن تكون قد تعلمت جيدًا كيفية إنشاء مولد كلمات مرور عشوائي في Python وأن تتقدم في المستوى من خلال برمجة نص برمجي قائم على الواجهة.


اكتشاف المزيد من بايثون العربي

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Scroll to Top

اكتشاف المزيد من بايثون العربي

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading