
يولد ملايين من تحوّلات كلمات المرور المستندة إلى الكلمات المفتاحية في ثوانٍ.
شكر خاص لـ DavidAngelos:
▶️ تمت إضافة شريط تقدم في كل خطوة لتتبع التنفيذ.
▶️ تمت إضافة خيارات:
-i / --inorder): دمج الكلمات المفتاحية فقط بالترتيب الأصلي (مثال: foo,bar,baz ← foo, bar, baz, foobar, foobaz, barbaz, foobarbaz).-c / --combinations): توليد كل ترتيب لكل مجموعة فرعية (مثال: foo,bar,baz ← foo, bar, baz, foobar, foobaz, barfoo, …, bazbarfoo).--sep <string>): عند دمج الكلمات، أدخل هذه السلسلة بين الرموز (الافتراضي بدون فاصل).--max-combine <N>): تحديد عدد الكلمات المفتاحية الخام التي سيتم دمجها معًا (الافتراضي: 2).--minlen/--maxlen <N>): تصفية قائمة الكلمات النهائية لتشمل فقط الكلمات بالطول المطلوب.Psudohash هو مولد قوائم كلمات المرور لتنفيذ هجمات القوة العمياء وكسر التجزئات. يقلد أنماط إنشاء كلمات المرور الشائعة التي يستخدمها البشر، مثل استبدال أحرف الكلمة برموز أو أرقام (leet)، واستخدام تغييرات حالة الأحرف، وإضافة حشوة شائعة قبل أو بعد عبارة المرور الرئيسية، وغير ذلك. يعتمد على الكلمات المفتاحية وهو قابل للتخصيص بدرجة كبيرة. 🎥 -> عرض فيديو
غالبًا ما يستخدم مسؤولو الأنظمة والموظفون الآخرون نسخة محورة من اسم الشركة لتعيين كلمات المرور (مثل Am@z0n_2022). هذا شائع لأجهزة الشبكة (نقاط وصول Wi-Fi، المفاتيح، أجهزة التوجيه، إلخ)، أو التطبيقات، أو حتى حسابات المجال. باستخدام الخيارات الأساسية، يمكن لـ psudohash توليد قائمة كلمات تحتوي على جميع التحويرات الممكنة لكلمة أو عدة كلمات مفتاحية، بناءً على أنماط استبدال الأحرف الشائعة (قابلة للتخصيص)، وتغييرات حالة الأحرف، والسلاسل المستخدمة بشكل شائع كحشوة، وغير ذلك. ألق نظرة على المثال التالي:

يقوم البرنامج النصي بتنفيذ مخطط استبدال الأحرف التالي. يمكنك إضافة أو تعديل تعيينات استبدال الأحرف عن طريق تحرير قائمة transformations في ملف psudohash.py واتباع بنية البيانات المعروضة أدناه (الافتراضي):
transformations = [
{'a' : ['@', '4']},
{'b' : '8'},
{'e' : '3'},
{'g' : ['9', '6']},
{'i' : ['1', '!']},
{'o' : '0'},
{'s' : ['$', '5']},
{'t' : '7'}
]
عند تعيين كلمات المرور، أعتقد أنه من الشائع إضافة سلسلة من الأحرف قبل و/أو بعد عبارة المرور الرئيسية لجعلها "أقوى". على سبيل المثال، قد يقوم الشخص بتعيين كلمة مرور "dragon" وإضافة قيمة مثل "!!!" أو "!@#" في النهاية، مما ينتج عنه "dragon!!!"، "dragon!@#"، إلخ. يقرأ Psudohash هذه القيم من ملف common_padding_values.txt ويستخدمها لتحوير الكلمات المفتاحية المقدمة عن طريق إلحاقها قبل (-cpb) أو بعد (-cpa) كل تحوير للكلمة المفتاحية الناتجة. يمكنك تعديله حسب احتياجاتك.
عند إلحاق قيمة سنة بكلمة مفتاحية محورة، سيقوم psudohash بذلك باستخدام فواصل متنوعة. بشكل افتراضي، سيستخدم الفواصل التالية والتي يمكنك تعديلها عن طريق تحرير قائمة year_seperators:
year_seperators = ['', '_', '-', '@']
على سبيل المثال، إذا كانت الكلمة المفتاحية المعطاة هي "amazon" وتم استخدام الخيار -y 2023، فسيشمل الإخراج "amazon2023"، "amazon_2023"، "amazon-2023"، "amazon@2023"، "amazon23"، "amazon_23"، "amazon-23"، "amazon@23".
قم أولاً بتثبيت Python 3.x و tqdm:
pip3 install tqdm
ثم استنسخ المستودع واجعل البرنامج النصي قابلاً للتنفيذ:
git clone https://github.com/t3l3machus/psudohash.git
cd ./psudohash
chmod +x psudohash.py
./psudohash.py [-h] -w WORDS [-i] [-c] [--sep SEP] [--max-combine N] [-an LEVEL] [-nl LIMIT] [-y YEARS] [-ap VALUES] [-cpb] [-cpa] [-cpo] [-o FILENAME] [-q]
يحتوي حوار المساعدة [ -h, --help ] على تفاصيل الاستخدام والأمثلة.
-w, --words <kw1,kw2,…>
كلمات مفتاحية خام مفصولة بفواصل (مطلوبة).
-i, --inorder
دمج ما يصل إلى --max-combine من الكلمات المفتاحية بالترتيب المعطى (مثال: foo,bar,baz ← foo, bar, baz, foobar, foobaz, barbaz, foobarbaz).
-c, --combinations
توليد كل تبديل لكل مجموعة فرعية (حتى --max-combine) (مثال: foo,bar,baz ← foo, bar, baz, foobar, foobaz, barfoo, …).
--max-combine <N> (الافتراضي: 2)
الحد الأقصى لعدد الكلمات المفتاحية الخام المراد دمجها في سلسلة أساسية واحدة.
--sep <string>
عند دمج الكلمات (-i أو )، ضع هذه السلسلة بين الرموز. الافتراضي هو سلسلة فارغة.
لا تعدد كلمات (مفردات فقط)
./psudohash.py -w foo,bar,baz -cpa
# → foo, bar, baz
الدمج بالترتيب (-i، حتى كلمتين افتراضيًا)
./psudohash.py -w foo,bar,baz -i
# → foo, bar, baz, foobar, foobaz, barbaz
الدمج بكل الترتيبات (-c، حتى كلمتين افتراضيًا)
./psudohash.py -w foo,bar,baz -c
# → foo, bar, baz, foobar, foobaz, barfoo, barbaz, bazfoo, bazbar
تغيير الفاصل بين الكلمات المدمجة
./psudohash.py -w foo,bar,baz -i --sep "_"
# → foo, bar, baz, foo_bar, foo_baz, bar_baz
تصفية الطول (--minlen/--maxlen)
./psudohash.py -w apple,banana -i --minlen 10
# تحذير: لا يمكن تحديد الحجم الدقيق بسبب مرشحات الطول.
# قد تشمل المخرجات النهائية مثلاً "applebanana" (11 حرفًا)، "bananaapple" (11 حرفًا).
دمج حتى 3 كلمات (بدلاً من الافتراضي 2)
--years و --append-numbering مع --numbering-limit ≥ آخر رقمين من أي سنة مدخلة، سيؤدي على الأرجح إلى إنتاج كلمات مكررة بسبب أنماط التحوير المطبقة من قبل الأداة.--minlen أو --maxlen، لا يستطيع البرنامج النصي حساب العدد الدقيق للكلمات مسبقًا؛ سترى تحذيرًا "لا يمكن تحديد الحجم الدقيق" وسيتم حساب الحجم بدون هذا الفلتر، وسيكون الحجم النهائي أصغر.عندما يتعلق الأمر بالأشخاص، أعتقد أننا جميعًا (إلى حد ما) قمنا بتعيين كلمات مرور باستخدام تحوير لكلمة أو أكثر تعني لنا شيئًا، مثل اسمنا أو اسم الزوجة/الطفل/الحيوان الأليف/الفرقة، مع إلصاق سنة ميلادنا في النهاية أو ربما حشوة آمنة للغاية مثل "!@#". حسنًا، خمن ماذا؟

أقوم بجمع معلومات حول أنماط إنشاء كلمات المرور الشائعة لتعزيز قدرات الأداة.
-c--minlen <N>
تجاهل أي كلمة مرور نهائية أقصر من N حرفًا.
--maxlen <N>
تجاهل أي كلمة مرور نهائية أطول من N حرفًا.
-an, --append-numbering <LEVEL>
ألحق لواحق مرقمة (مبطنة بالأصفار بعدد أرقام <LEVEL>) لكل تحوير للكلمة.
-nl, --numbering-limit <LIMIT>
أقصى رقم للعد عند إلحاق الأرقام (الافتراضي: 50).
-y, --years <years>
ألحق سنة أو أكثر لكل تحوير (مثال: 1990-2000، أو 2022,2023).
-ap, --append-padding <vals>
ألحق قيم حشو مخصصة (مفصولة بفواصل). يجب استخدامه مع -cpb أو -cpa.
-cpb, --common-paddings-before
أضف القيم من common_padding_values.txt قبل كل تحوير.
-cpa, --common-paddings-after
أضف القيم من common_padding_values.txt بعد كل تحوير.
-cpo, --custom-paddings-only
استخدم فقط الحشوات المقدمة من المستخدم (بدون القيم الافتراضية). يجب استخدامه مع -ap.
-o, --output <file>
اكتب النتائج إلى <file> (الافتراضي: output.txt).
-q, --quiet
إخفاء شعار ASCII الفني عند بدء التشغيل.