عرفت في لغة بايثون انه يمكن عمل حلقت تكرار تقوم منها بانشاء قائمة ارقام للتخمين
يمكنك منها تحدين الرقم المبدائي والنهائي ويقوم بايثون باستخراج جميع الارقام الممكنه
ولكن هل يمكن انشاء نفس الطريقه مع الحروف الابجديه
وليكن نريد انشاء قائمة تضم 8 خانات
نريد منها عمل حلقت تكرار لحروف اللغة الانجليزية بالشكل التالي
aaaaaaaa
aaaaaaab
aaaaaaac
aaaaaaad
.
.
aaaaacab
وهكذا حتي نستخرج كل التخمينات الممكنه بهذه الحروف
ما هي الادوات المستخدمه وهل ممكن ذكر مثال
تعليقي السابق يحتوي خطأ رياضي لم اتمكن من تعديل التعليق لذلك قمت بحذفه. فأرجو المعذرة
تدعى هذه العملية القوة الغاشمة brute force وهي محاولة جميع الإحتماليات لغاية الوصول إلى الحل الصحيح. يتم استعمال الطريقة في كسر كلمات المرور على سبيل المثال، الامر ليس بهذه السهولة بالطبع فكلما زاد طول الرمز ونوعياته زادت الأحتماليات بشكل أسّي. على كل حال يمكنك تجربة البحث عن :
"simple bruteforce password cracker python"
او شيء من هذا القبيل.
سكربت بايثون التالي يستطيع تخمين كلمة المرور مع امكانية عرض محاولات التخمين لغاية الوصول إلى الحل:
import itertools
import string
def guess_password(real):
chars = string.ascii_lowercase + string.digits
attempts = 0
for password_length in range(1, 9):
for guess in itertools.product(chars, repeat=password_length):
attempts += 1
guess = ''.join(guess)
if guess == real:
return 'password is {}. found in {} guesses.'.format(guess, attempts)
# قم بإلغاء تعليق السطر التالي لطباعة التخمينات
# print(guess, attempts)
print(guess_password('abcde'))
#لتجربة جميع الحروف قم بإلغاء تعليق السطر الأخير
#سوف يأخذ الأمر كثيـــــــــــــر من الوقت لغاية كسر كلمة المرور
#print(guess_password('abcdefghijklmnopqrstuvwxyz'))
استطاع البرنامج تخمين كلمة المرور abcde بعد إجراء 1776965 عملية تخمين.
هناك 26 حرف ابجدي بالطبع لن نحاول تخمين تشكيلة بهذا الطول ولكن فقط لنحاول معرفة الأمر على اي حال
=> عدد التخمينات = 26^ 26 = 36^10 * 6.15611958
بالتوفيق...
فالحقيقه بعد قرائت التعليق ومعرفة كل هذه السنين صرفت نظري عن هذه الفكره
ولكن بعد هذا التعديل استبشرت خير
كم تظن الوقت الذي قد يستغرقه برنامج التخمين اذا حددنا قيمة range (8 , 9)
التعليقات