PassForge - أداة سطر أوامر شاملة لتوليد كلمات المرور
أداة سطر أوامر (CLI) لتوليد كلمات مرور آمنة من الناحية التشفيرية وجاهزة للإنتاج، مع 17 وضع توليد، وشفافية في الإنتروبيا، وخيارات تخصيص شاملة.



الميزات
17 وضع توليد
| المولد | الأمر | الوصف |
|---|
| عشوائي | random, r | كلمات مرور عشوائية آمنة تشفيريًا |
| عبارة مرور | phrase, p | عبارات مرور مبنية على كلمات باستخدام قائمة كلمات EFF |
| ليتسبيك | leet, l | عبارات مرور مع استبدال الأحرف (A→4, E→3, إلخ) |
| رقم التعريف الشخصي | pin | أرقام تعريف شخصية (PIN) بطول قابل للتكوين |
| قابل للنطق | pronounce, pr | كلمات مرور سهلة النطق مبنية على مقاطع |
| UUID | uuid, u | معرفات UUID وفقًا لـ RFC 4122/9562 (v1, v4, v7) والنسخة القصيرة (Base58) |
| Base64 | base64, b64 | أسرار مشفرة بتنسيق base64 آمن للاستخدام في عناوين URL |
| سر JWT | jwt | أسرار عالية الإنتروبيا لتوقيع JWT (HS256/384/512) |
| مفتاح WiFi | wifi | مفاتيح متوافقة مع WPA2/WPA3 (8-63 حرفًا) |
| مفتاح ترخيص | license | مفاتيح ترخيص البرامج (تنسيق AXB، مثل 5x5) |
| رموز الاسترداد | recovery | رموز نسخ احتياطي للمصادقة الثنائية (رقمية أو قائمة على الكلمات) |
| رمز/سر OTP | otp | رموز وأسرار TOTP/HOTP مع URI otpauth |
| نمط | pattern | كلمات مرور مبنية على شبكة مرئية |
| عبارة ذات سمة | phrase (مخصص) | عبارات مرور من قوائم كلمات ذات سمات (حيوانات، خيال علمي، إلخ) |
| ناتو صوتي | phonetic, |
- ملفات تعريف محددة مسبقًا: توليد بنقرة واحدة لحالات الاستخدام الشائعة (قوي، سهل التذكر، مطور، إلخ)
- قائمة تفاعلية: قائمة كاملة الميزات للتوليد الموجه
- مشغلات النظام الأساسي: نصوص
.bat و .sh مخصصة مع قوائم تفاعلية
- الأمان التشفيري: يستخدم وحدة
secrets الخاصة بلغة Python لـ CSPRNG
- شفافية الإنتروبيا: حساب الإنتروبيا في الوقت الفعلي وتحليل القوة
- تحليل zxcvbn: فحص قوة كلمة المرور القائمة على الأنماط (هجمات القاموس، التسلسلات)
- الحافظة الآمنة: مسح تلقائي للحافظة بعد مهلة زمنية قابلة للتكوين
- رموز OTP المباشرة: يولد رموز TOTP الحالية المكونة من 6/8 أرقام مع السر
- رموز QR لـ OTP: رموز QR قابلة للمسح لتطبيقات المصادقة
- إخراج ملون: تمييز مرئي بين أنواع الأحرف
- تصدير JSON: إخراج قابل للقراءة آليًا للبرمجة النصية
- الوضع المتوازن: يضمن توزيعًا مقروءًا (60٪ حروف، 20٪ أرقام، 20٪ رموز)
- دليل المولد: وثائق شاملة لجميع أنواع المولدات الـ 14.
- سجل مشفر (Vault): يقوم تلقائيًا بتشفير كلمات المرور المحفوظة باستخدام AES-128 (Fernet).
- تخزين آمن للخزنة: تتعامل الخزنة المخصصة مع المفاتيح التشفيرية عبر
.env (موصى به) أو ملف .vault.key القديم بصلاحيات صارمة 0600
- هندسة بدون تسريب: 🛡️ يتم حظر الوصول إلى الكود المصدري والسجلات من المتصفح في وضع PWA؛ يتم إخفاء المدخلات الحساسة في وضع CLI لتحليل الإنتروبيا.
- صادرات مع تنقيح: تصدير السجل مع التركيز على الأمان مع تنقيح تلقائي لكلمات المرور افتراضيًا
التثبيت
# استنساخ المستودع
git clone https://github.com/krishnakanthb13/password_generator.git
cd password_generator
# تثبيت التبعيات (colorama, cryptography, pyperclip, إلخ.)
pip install -r requirements.txt
البداية السريعة
# إنشاء كلمة مرور عشوائية بطول 20 حرفًا
python main.py random -l 20
# إنشاء عبارة مرور من 4 كلمات
python main.py phrase -w 4 --capitalize
# إنشاء عبارة مرور ليتسبيك
python main.py leet -w 3 -s _
# إنشاء مع تحليل الإنتروبيا
python main.py --show-entropy random -l 16
# تشغيل الوضع التفاعلي
python main.py --interactive
# استخدام ملف تعريف محدد مسبقًا (Strong)
python main.py --preset strong --show-entropy
أمثلة الاستخدام
كلمات المرور العشوائية
# كلمة مرور أساسية بطول 16 حرفًا
python main.py random
# 24 حرفًا، أحرف فقط
python main.py random -l 24 --no-symbols --no-digits
# سهلة القراءة (بدون 0/O، 1/l/I)
python main.py --easy-read random -l 20
# مع الحد الأدنى من المتطلبات
python main.py random -l 16 --min-upper 2 --min-digits 2 --min-symbols 1
# الوضع المتوازن (معظمها أحرف، رموز أقل)
python main.py random -l 24 --balanced
عبارات المرور
# عبارة مرور قياسية من 4 كلمات
python main.py phrase -w 4
# مكتوبة بحرف كبير وفاصل شرطة سفلية
python main.py phrase -w 5 -s _ --capitalize
# حالة بديلة (إنتروبيا عالية)
python main.py phrase -w 4 -s . --alternate
# الإخراج: aPpLe.bAnAnA.cHeRrY.dAtE
# حروف كبيرة مع فاصل شرطة (إنتروبيا عالية)
python main.py phrase -w 4 -s . --uppercase
# الإخراج: APPLE-BANANA-CHERRY-DATE
# نسخة ليتسبيك (استبدال ذكي بنسبة 50٪)
python main.py leet -w 4 -s -
# الإخراج: 4PPl3.8@N@[email protected]
# عبارة مرور ذات سمة (باستخدام 'animals.txt')
python main.py phrase -w 4 --capitalize --wordlist data/wordlists/animals.txt
# الإخراج: Tiger-Falcon-Shark-Wolf
مفاتيح البرامج (A x B)
# 5 أجزاء كل منها 5 أحرف
python main.py license --segments 5 --segment-length 5
# 4 أجزاء كل منها 8 أحرف
python main.py license --segments 4 --segment-length 8
رموز المطورين
# سر JWT لـ HS256
python main.py jwt --bits 256
# مفتاح API بتنسيق Base64
python main.py base64 -b 32 --url-safe
# رمز UUID (v4 عشوائي)
python main.py uuid --upper
# UUID v7 (قائم على الوقت، قابل للفرز)
python main.py uuid --ver 7
# أو اختصار
python main.py uuid --v7
# UUID قصير (مشفر بـ Base58، ~22 حرفًا)
python main.py uuid --short
# إنشاء UUID v7 باستخدام الاختصار
python main.py u --v7
# إنشاء 10 UUID v4 قصيرة
python main.py uuid --v4 --short -n 10
# تحويل صوتي ناتو
python main.py phonetic --text "PassForge"
# الإخراج: Papa-Alpha-Sierra-Sierra-Foxtrot-Oscar-Romeo-Golf-Echo
الأمان والتسجيل
# تحليل كلمة مرور موجودة
python main.py analyze "p@ssword123"
# التسجيل في السجل
python main.py --log random -l 16
# عرض آخر 10 إدخالات في السجل (افتراضي)
python main.py history
# عرض جميع إدخالات السجل (يتم فك تشفيرها فورًا)
python main.py history --all
# عرض السجل مع تنقيح كلمات المرور
python main.py history --redact
# تصدير السجل (بالتنقيح افتراضيًا)
python main.py history --export backup.json
# تصدير السجل (نص عادي - يتطلب الحذر)
python main.py history --export secrets.csv --no-redact
# إخراج JSON للبرمجة النصية
python main.py --json jwt --bits 256
مرجع الأوامر
خيارات خاصة بالمولد
العشوائي (random, r)
عبارة المرور (phrase, p)
ليتسبيك (leet, l)
رقم التعريف الشخصي (pin)
| العلامة | الافتراضي | الوصف |
|---|
-l, --length | 6 | طول الرقم الشخصي (4-64) |
-n, --count | 1 | العدد المراد توليده |
قابل للنطق (pronounce, pr)
| العلامة | الافتراضي | الوصف |
|---|
-l, --length | 12 | طول كلمة المرور (4-128) |
-n, --count | 1 | العدد المراد توليده |
UUID (uuid)
Base64 (base64, b64)
| العلامة | الافتراضي | الوصف |
|---|
-b, --bytes | 32 | عدد البايتات العشوائية |
--url-safe | - | استخدام أحرف آمنة لعناوين URL |
سر JWT (jwt)
| العلامة | الافتراضي | الوصف |
|---|
--bits | 256 | طول البت (256, 384, 512) |
--hex | - | الإخراج كسلسلة سداسية عشرية |
مفتاح WiFi (wifi)
| العلامة | الافتراضي | الوصف |
|---|
-l, --length | 24 | طول المفتاح (8-63، الافتراضي: 24) |
--simple | - | أبجدي رقمي فقط (بدون رموز) |
مفتاح الترخيص (license)
| العلامة | الافتراضي | الوصف |
|---|
--segments | 4 | عدد الأجزاء (2-64) |
--segment-length | 4 | أحرف لكل جزء (2-32) |
رموز الاسترداد (recovery)
سر OTP (otp)
| العلامة | الافتراضي | الوصف |
|---|
--digits | 6 | طول الرمز (6 أو 8) |
--period |
النمط (pattern)
| العلامة | الافتراضي | الوصف |
|---|
--grid | 3 | حجم الشبكة (مثل 3x3) |
الصوتي (phonetic, ph)
| العلامة | الافتراضي | الوصف |
|---|
--text | - | النص المراد تحويله إلى أبجدية ناتو |
-l, --length | 8 | طول التسلسل العشوائي (4-64) |
السجل (history)
دليل الإنتروبيا
يوفر PassForge تقرير إنتروبيا شامل يشمل حجم مجموعة الأحرف الخام، وبّتات شانون، وتقديرات وقت القوة القسرية.
ملاحظة: للحصول على شرح تفصيلي لكل نوع مولد، راجع LITERATURE.md.
هيكل المشروع
password_generator/
├── main.py # نقطة الدخول
├── requirements.txt # التبعيات
├── src/
│ ├── __init__.py
│ ├── cli.py # محلل الوسائط والشعار
│ ├── command_handler.py # توجيه الأوامر
│ ├── interactive.py # القائمة التفاعلية
│ ├── generators/ # جميع مولدات كلمات المرور
│ │ ├── base.py # الفئة الأساسية المجردة
│ │ ├── random_password.py # مولد كلمات المرور العشوائية
│ │ ├── passphrase.py # مولد عبارات المرور
│ │ ├── leetspeak.py # مولد الليتسبيك
│ │ ├── pin.py # مولد رقم التعريف الشخصي
│ │ ├── pronounceable.py # مولد كلمات المرور القابلة للنطق
│ │ ├── uuid_token.py # مولد رمز UUID
│ │ ├── base64_secret.py # مولد السر بتنسيق Base64
│ │ ├── jwt_secret.py # مولد سر JWT
│ │ ├── wifi_key.py # مولد مفتاح WiFi
│ │ ├── license_key.py # مولد مفتاح الترخيص
│ │ ├── recovery_codes.py # مولد رموز الاسترداد
│ │ ├── otp.py # مولد OTP
│ │ ├── pattern.py # مولد النمط
│ │ └── phonetic.py # مولد ناتو الصوتي
│ ├── security/
│ │ ├── entropy.py # حاسبة الإنتروبيا
│ │ ├── strength_checker.py # تكامل zxcvbn
│ │ └── vault.py # تشفير السجل الآمن
│ ├── output/
│ │ ├── formatter.py # إخراج ملون
│ │ ├── logger.py # تسجيل السجل
│ │ ├── clipboard.py # التعامل الآمن مع الحافظة
│ │ └── qrcode_gen.py # توليد رمز QR لـ OTP
│ ├── config/
│ │ ├── loader.py # محمل إعدادات YAML/JSON
│ │ └── presets.py # ملفات تعريف أمان محددة مسبقًا
├── data/
│ └── wordlists/ # قوائم كلمات ذات سمات (animals.txt, biology.txt, إلخ.)
└── tests/
الاختبار
# تشغيل جميع الاختبارات
python -m pytest tests/ -v
# تشغيل فئة اختبار محددة
python -m pytest tests/test_generators.py::TestRandomPasswordGenerator -v
# تشغيل مع تغطية
python -m pytest tests/ --cov=src --cov-report=html
جميع اختبارات الوحدة الـ 53 تغطي:
- جميع أوضاع المولدات الـ 15 المتخصصة
- حاسبات الإنتروبيا وقوة zxcvbn
- المسح التلقائي للحافظة والتخزين الآمن
- منطق توليد رمز QR ASCII
- تحميل الإعدادات والملفات المحددة مسبقًا
الإعدادات
يدعم PassForge ملفات الإعدادات بتنسيق YAML أو JSON.
مواقع ملفات الإعدادات (يتم البحث بالترتيب):
./passforge.yaml أو ./passforge.json
./.passforge.yaml أو ./.passforge.json
~/.passforge/config.yaml أو ~/.passforge/config.json
مثال على الإعدادات
{
"random": {
"length": 20,
"easy_read": true
},
"passphrase": {
"words": 5,
"capitalize": true
},
"output": {
"show_entropy": true
}
}
راجع passforge.example.json لجميع الخيارات المتاحة.
بناء ملف تنفيذي مستقل
يمكن تجميع PassForge إلى ملف تنفيذي مستقل واحد باستخدام PyInstaller.
Windows
# باستخدام نص البناء
passforge_build.bat
# أو يدويًا
pip install pyinstaller
pyinstaller --onefile --name passforge --console main.py
Linux/macOS
# باستخدام نص البناء
chmod +x passforge_build.sh
./passforge_build.sh
# أو يدويًا
pip install pyinstaller
pyinstaller --onefile --name passforge --console main.py
سيتم إنشاء الملف التنفيذي في مجلد dist/ (~7MB، بدون تبعيات).
🌐 PassForge Web (إضافة PWA)
يتضمن PassForge الآن واجهة ويب حديثة وسريعة الاستجابة (PWA) توفر طريقة مرئية لتوليد وإدارة كلمات المرور مع الحفاظ على التكافؤ التام مع إصدار CLI.
الميزات الرئيسية
- واجهة شريط جانبي: تنقل سهل بين جميع أنواع المولدات.
- منزلقات مرئية: ضبط الأطوال وأعداد الكلمات بمنزلقات تفاعلية.
- دعم QR: إنشاء رمز QR فوري لمشاركة كلمات المرور أو أسرار OTP.
- الوضع الداكن/الفاتح: جماليات متميزة مع تبديل سمة متكيف مع النظام.
- قابل للتثبيت: دعم تثبيت PWA على Windows و Linux والأجهزة المحمولة.
- سجل مشترك: يستخدم نفس ملف السجل المشفر مثل CLI.
تشغيل PWA
لبدء تشغيل الواجهة، قم بتشغيل نص المشغل الخاص بنظام تشغيلك:
- Windows:
passforge_pwa.bat
- Linux/macOS:
passforge_pwa.sh
[!IMPORTANT]
تعزيز الأمان (v34+): تستخدم PWA الآن معالج SecureStaticFiles الذي يمنع بشكل صريح وصول المتصفح إلى ملفات Python المصدرية والسجلات والمفاتيح التشفيرية. يتم حماية الوصول إلى السجل من خلال مصافحة مفتاح API داخلي. يتضمن المنطق الأمامي أيضًا أغلفة دفاعية لأصول CDN الخارجية لضمان الوظائف حتى إذا تم حظر CDN.
[!TIP]
توفر البناء: يتم تضمين ملفات PWA في توزيعات الكود المصدري و ZIP/Tarball. لا يتم تضمين PWA في الملف الثنائي .exe الفردي.
سيعمل المشغل تلقائيًا على تثبيت التبعيات الضرورية (fastapi, uvicorn)، ويبدأ خادمًا محليًا على http://127.0.0.1:8093، ويفتح المتصفح الخاص بك.
الترخيص
ترخيص GPL v3 - انظر LICENSE للتفاصيل.
المساهمة
نرحب بالمساهمات! يرجى قراءة إرشادات المساهمة الخاصة بنا قبل تقديم طلبات السحب.