كل المقالات برمجة ما هي أكثر الأنماط التكرارية لتكوين كلمات المرور ؟ الإجابة بإختصار

ما هي أكثر الأنماط التكرارية لتكوين كلمات المرور ؟ الإجابة بإختصار

· 1141 كلمة · 6 دقيقة قراءة

عندي فضول أعرف مقدار التشابه في التفكير أثناء إنشاء كلمات المرور. كيف يؤلف الناس كلمات المرور (passwords) ؟ ما هي أكثر الطرق المستخدمة في تكوين الباسوردات ؟ ما هي الأنماط التي يستخدمها الناس بكثرة في تكوين كلمات المرور ؟

أنا اعرف كالي لينكس (نظام التشغيل المهتم بأمن المعلومات واختبار الإختراق المبني على أوبونتو لينكس) ، و هاشكات ، و إيركراك إن جي ، و كرانش ، .. وغيرها من الأدوات والبرامج الشهيرة في مجال اختبار الإختراق وأمن المعلومات.

الفكرة 🔗

فكرت في الطريقة التي أتعرّف بها على الأنماط التكرارية (patterns) المعروفة أيضاً بإسم masks. هذه هي الطريقة في شكل خطوات بالترتيب.

  • تنزيل قاعدة بيانات ضخمة من كلمات المرور التي تم تسريبها مُسبقاً مثل rockyou.txt
  • استبدال كل الحروف الكبيرة برمز محدد يدل على أن هنا حرف كبير
  • استبدال كل الحروف الصغيرة برمز محدد يدل على أن هنا حرف صغير
  • استبدال جميع الأرقام برمز محدد يدل على أن هنا رقم
  • حساب عدد كل نمط من أنماط كلمات المرور
  • ترتيب أنماط كلمات المرور حسب عدد مرات تكرارهم ، واستخراج أشهر 50 نمط مستخدم

رموز نمط أبسط 🔗

الرموز الشهيرة في الأنماط (masking symbols) تكون عبارة عن حرفين لكي تكون قابلة للإستخدام بجوار الحروف العادية. ولكني لن أستخدم رموز النمط مع الحروف والأرقام العادية نهائياً ، مما يجعلني أفضل استخدام رموز أبسط من حرف واحد فقط.

إن استخدمت الحرف u ليكون الرمز الدال على الحروف الكبيرة ، فإن الأمر سيكون غير واضح عندما تستخدمه في نمط مختلط مع حروف وأرقام عادية مثل 012uAbckL. لكي يقوم المبرمجين بحل هذه المشكلة وجعل الماسك/النمط سهل الفهم وواضح ، استخدموا الرمز المكون من علامة الإستفهام والحرف يو بهذا الشكل ?u ليكون بهذا الشكل 012?uAbckL وبذلك يمكن ترجمة النمط/الماسك بشكل مفهوم وواضح ومعرفة دلالة كل رمز وحرف ورقم بدون أي مشكلات.

ولكن استخدامي حصري. أنا لا استخدم الأنماط المختلطة (mixed mask). أنا استخدم النمط أو الماسك فقط. لذلك سأستخدم رموز للنمط من حرف واحد فقط.

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

mask رموز النمطرموز نمط مبسطةالمعني
?dd(d)igit , رقم
?ss(s)ymbol , رمز
?aaحرف
?ll(l)owercase حروف صغيرة
?uu(u)ppercase حرف كبير
nمسافة

تحويل كلما المرور إلى أنماط 🔗

قمت بتنزيل قاعدة كلمات المرور المسربة الشهيرة RockYou من على جت هب GitHub.

أخذت نسخة أخرى من الملف النصيّ الضخم بإستخدام هذا الأمر.

cp ~/Downloads/rockyou.txt ~/Downloads/rockyoumasked.txt

استبدلت كل الحروف الكبيرة إلى حرف اليو u وهو الرمز الخاصة بالحروف الكبيرة uppercase or capital في الكتابة النمطية المبسطة التي حددناها منذ قليل.

sed 's/[A-Z]/u/g' -i ~/Downloads/rockyoumasked.txt

ثم استبدلت كل الحروف الصغيرة بحرف الـ إل l الذي يدل على الحروف الـ lowercase or small letters في الـ masking:

sed 's/[a-z]/l/g' -i ~/Downloads/rockyoumasked.txt

ثم استبدلت كل الأرقام بالحرف d الذي يدل على وجود رقم digit:

sed 's/[0-9]/d/g' -i ~/Downloads/rockyoumasked.txt

ثم استبدلت كل المسافات بالحرف n لكي احتفظ بالمسافات داخل كلمات المرور.

sed 's/ /n/g' -i ~/Downloads/rockyoumasked.txt

لو كانت قاعدة بيانات كلمات المرور بها حروف لاتينية فقط ، استبدل كل الرموز التي لا تعتبر حرف صغير أو حرف كبير أو رقم أو مسافة أو سطر جديد أو مسافة طويلة (tab) بالرمز s الذي يعنب أن مكان هذا الرمز كان رمز مثل @ أو # أو $ أو % أو * .. وباقي الرموز المتاح استخدامها في كلمات المرور.

sed 's/[^a-zA-Z0-9\n\t ]/s/g' -i ~/Downloads/rockyoumasked.txt

أما إن أردت استبدال الرموز معينة إلى الرمز s يمكنك استخدام الأمر التالي.

sed 's/[!@#$%\^&\*\()_+-=]\[\{}\'";:/?\.>,\<]/s/g' -i ~/Downloads/rockyoumasked.txt

لاحظ: تأكد من كتابة كل الرموز التي تريد استبدالها داخل الأقواس المربعة في الأمر السابق.

بعد استبدال كل كلمات المرور (passwords) داخل قائمة الباسوردات الضخمة للرموز الخاصة بالنمط ، فلنبدأ في عمل بعض الإحصائيات على هذه الأنماط.

عدّ الأنماط 🔗

أنا استخدم أدوات جنو لترتيب أنماط كلمات المرور داخل قائمة الأنماط بإستخدام أداة sort ثم استخدم أداة uniq لعدّ كل الأنماط المتكررة ومعرفة كم عدد مرات تكرار النمط في قائمة الأنماط التي أنشأناها من قائمة الباسوردات الضخمة روك يو.

sort ~/Downloads/rockyoumasked.txt | uniq -c > ~/Downloads/passwords_count.txt

نحفظ هذه الإحصائيات لكل نمط وعدد تكراره في ملف نصيّ بإسم passwords_count.txt كما ترى في الأمر السابق.

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

sort -nr < ~/Downloads/passwords_count.txt > ~/Downloads/passwords_count_sorted.txt

والآن لدينا قائمة بأنماط كتابة الباسوردات الأكثر شيوعاً واستخداماً بين الناس بالترتيب.

دعونا نرى أشهر 50 نمط لكتابة كلمات المرور.

أشهر 50 نمط لكتابة كلمات المرور 🔗

إجمالي عدد كلمات المرور في قاعدة البيانات هو 359,944,739 كلمة مرور في قائمة واحدة طويلة عبارة عن ملف نصيّ.

عمود النسبة المئوية (%) في الجدول التالي هو عبارة عن نسبة استخدام هذا النمط في إجمالي كلمات المرور في قاعدة البيانات الضخمة الأصلية.

العددالنمططول الباسورد%
34,877,549llllllll89.69%
17,465,957lllllllll94.85%
16,664,585llllllllll104.63%
16,588,606lllllll74.61%
14,095,240llllll63.92%
14,046,137lllllllllll113.90%
7,413,092llllllllllll122.06%
5,805,531llllllllllll121.61%
5,789,812lllllllllllll131.61%
4,190,727llllllllllllll141.16%
3,916,722lllllllllllll131.09%
3,770,841lllllldd81.05%
3,649,474llllllld81.01%
3,601,748lllllllld91.00%
3,395,198llllllllld100.94%
3,111,376llllllldd90.86%
2,686,000lllllllllllllll150.75%
2,675,716llllllllllllll140.74%
2,637,473lllllllldd100.73%
2,606,559lllllllllld110.72%
2,455,234llllllddd90.68%
2,351,061lllll50.65%
2,342,710lllllldd80.65%
2,203,440lllldddd80.61%
2,052,082lllll50.57%
1,972,305llllldd70.55%
1,896,677llllllllllld120.53%
1,889,984llllllld80.53%
1,831,417lllllllddd100.51%
1,814,263llllllllllllllll160.50%
1,799,641lllllldddd100.50%
1,773,600lllllldddd100.49%
1,753,626lllllllld90.49%
1,714,648llllldddd90.48%
1,702,548lllllddd80.47%
1,692,154lllldddd80.47%
1,675,035llllllllld100.47%
1,646,644lllllllllllllll150.46%
1,642,673ddddddddd90.46%
1,599,019llllllldd90.44%
1,598,471lllllllldd100.44%
1,461,202llllldddd90.41%
1,437,419lllllddd80.40%
1,432,825lllllllllllld130.40%
1,408,672lllldd60.39%
1,369,412llllldd70.38%
1,350,413lllllld70.38%
1,344,394llllllllddd110.37%
1,310,837llllllllllllllllllll200.36%
1,299,767lllllllllld110.36%
220,810,51661.35%

كل الأنماط الخمسين الأشهر تمثل 61% من إجمالي كلمات المرور المسربة في قاعدة البيانات الأصلية المستخدمة (RockYou).

وإليك ما لاحظته واستنتجته من هذه الأنماط :

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

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

التصنيفات: برمجة
مشاركة:
الترجمات:  English (What are the most common password patterns ? A TLDR answer)