
Ideaslocas Repository
يهدف هذا المشروع إلى المساعدة في البحث عن كلمات المرور المسربة مع الحفاظ على مستوى عالٍ من الخصوصية باستخدام طريقة k-anonymity.
لتحقيق ذلك، يتم استخدام واجهات برمجة تطبيقات (APIs) لخدمات مختلفة، حيث يتم إرسال جزء فقط من تجزئة (Hash) كلمة المرور التي نريد التحقق منها، على سبيل المثال، أول 5 أحرف.
يحتاج المشروع إلى بعض المكتبات ليتمكن من العمل، لتثبيتها استخدم الأمر التالي:
pip install -r requirements
تذكر أن Python 3 مطلوب.
passme.py [FUNC] [ELEMENT] -engine [ENGINE] -api_key [API_KEY]
FUNC: نوع العنصر الذي تريد التحقق منه، يمكن أن يكون -h/--hash أو -p/--password
أو -f/--file أو -l/--list أو --help.
ELEMENT: "التجزئة" (Hash) أو "كلمة المرور" (Password) أو اسم الملف الذي يحتوي على قائمة
من التجزئات أو كلمات المرور مفصولة بسطر جديد.
ENGINE: محرك التسريبات الذي تريد استخدامه، بشكل افتراضي يستخدم HIBP (Have I been PWN).
API_KEY: مفتاح واجهة برمجة التطبيقات (API_KEY) اللازم لبعض الوظائف في بعض المحركات.
الوظيفة الرئيسية للمشروع تستقبل كلمة المرور المجزأة (hashed password)، المحرك المراد استخدامه، ومفتاح API.
اعتمادًا على المحرك المستلم، سيتم إرسال كل من مفتاح API وكلمة المرور المجزأة إلى وظيفة أو أخرى.
إذا كنت تريد إضافة محرك خاص بك أو محرك غير مطبق بالفعل، فما عليك سوى إضافة خيار آخر هنا.
passme_hash(hashed_password, engine="HIBP", api_key="0")
تقوم هذه الوظيفة بتجزئة كلمة المرور التي تستقبلها باستخدام SHA-1 وترسل التجزئة إلى وظيفة passme_hash().
passme_password(password, engine="HIBP", api_key="0")
تقوم هذه الوظيفة بقراءة سطور الملف المستلم واحدًا تلو الآخر للتحقق من كل كلمة مرور، مع إعطاء معلومات حول كلمة المرور المستلمة وما إذا تم تسريبها أم لا.
passme_file(filename, engine="HIBP", api_key="0")
تقوم هذه الوظيفة بقراءة سطور الملف المستلم واحدًا تلو الآخر للتحقق من كل تجزئة، مع إعطاء معلومات حول التجزئة المستلمة وما إذا تم تسريبها أم لا.
passme_list(filename, engine="HIBP", api_key="0")
الوظيفة التي تتعامل مع واجهة برمجة تطبيقات HIBP (Have i been pwned)، ترسل الأحرف الخمسة الأولى من التجزئة، ثم تقارنها بالتجزئة الكاملة لمعرفة ما إذا كانت كلمة المرور/التجزئة قد تم تسريبها.
engine_HIBP(hashed_password, engine, api_key)
يحتوي هذا المشروع على سلسلة من الاختبارات للتحقق من التشغيل الصحيح لجميع وظائفه، ولهذا الغرض تم استخدام مكتبة "pytest". لتشغيل الاختبارات، قم بتثبيت pytest باستخدام الأمر التالي:
pip install pytest
بمجرد التثبيت، ما عليك سوى تشغيل الأمر "pytest" لتشغيل الاختبارات تلقائيًا، وسيتم إرجاع أي أخطاء يتم مواجهتها عبر الطرفية.
نتائج الاختبار في المختبر هي كما يلي:
| إصدار بايثون | دالة التجزئة | دالة القائمة | دالة كلمة المرور | تجزئة عشوائية | كلمة مرور عشوائية | تعليق |
|---|---|---|---|---|---|---|
| 3.9 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 3.8 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 3.7 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 3.6 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 3.5 | ✅ | ✅ | ✅ | ❌ | ❌ | Random.choice غير متوفرة في Python 3.5 // إصدار بايثون مهمل |
هذا المشروع مرخص بموجب رخصة GNU العامة - راجع ملف LICENSE للحصول على التفاصيل
يُقدم البرنامج "كما هو"، دون أي ضمان من أي نوع، صريحًا أو ضمنيًا، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق، والملاءمة لغرض معين، وعدم الانتهاك. في أي حال من الأحوال، لا يتحمل المؤلفون أو أصحاب حقوق الطبع والنشر أي مسؤولية عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء كانت ناشئة عن عقد أو تقصير أو غير ذلك، تنشأ عن أو بسبب أو فيما يتعلق بالبرنامج أو استخدامه أو تعاملات أخرى معه.
هذا البرنامج لا يحتوي على عملية ضمان الجودة. هذا البرنامج هو إثبات للمفهوم (Proof of Concept).
إذا كانت لديك أي مشاكل، يمكنك الاتصال بـ:
[email protected] - Ideas Locas CDCO - Telefónica
في العديد من الأماكن، قد يكون تثبيت البرنامج على جهاز كمبيوتر لا يخصك دون موافقة المالك جريمة. نحن لا نوافق على استخدام PoC لأي غرض غير قانوني. لتنزيل برنامجنا أو استخدامه بأي شكل من الأشكال، يجب أن تقر وتوافق على ما يلي:
1 - تعلن أن هذا PoC سيُستخدم حصريًا بطريقة قانونية. إذا كنت تشك في الجانب القانوني، استشر محاميًا مرخصًا في البلد الذي ستستخدم فيه هذا PoC.
2 - تقر بأن الكمبيوتر الذي سيتم تثبيت البرنامج عليه هو ملكك أو لديك موافقة المالك على إدارة البرنامج وتثبيته عليه.