
ProtOSINT هو سكريبت Python يساعدك في التحقيق في حسابات Proton Mail.
ProtOSINT هو سكريبت بلغة بايثون يساعدك في التحقق من حسابات Proton Mail.
هذا هو ProtOSINT v2. كان الإصدار الأول موجودًا منذ بضع سنوات، لكن واجهة برمجة تطبيقات Proton تغيرت وتوقفت الفحوصات القديمة عن العمل، لذا فهذه إعادة كتابة تعيد الأداة إلى الحياة. شكر كبير لـ NeutrOSINT لاستمرار هذا النوع من البحث في هذه الأثناء.
هذه الأداة مخصصة لأعمال OSINT على Proton Mail (للاستخدام التعليمي والمصرح به فقط). تعطيها عنوان بريد إلكتروني أو اسم مستخدم أو نطاق، وتخبرك بما يمكنها إيجاده: ما إذا كان العنوان موجودًا بالفعل، ومتى تم إنشاء مفتاح التشفير للحساب، والخوارزمية التي يستخدمها، وما إذا كان نطاق مخصص مستضاف على Proton.
تحتوي على أربع وحدات:
تتعمد Proton جعل تعداد الحسابات صعبًا، لذا فإن الفحص الساذج سيكذب عليك. يعمل ProtOSINT حول ذلك من خلال الجمع بين ثلاثة مصادر والثقة بالمصدر الصحيح للمهمة.
خادم المفاتيح يكذب بشأن العناوين غير الموجودة. يُرجع خادم المفاتيح العام لـ Proton (pks/lookup) مفتاحًا "وهميًا" مزيفًا - مع تاريخ إنشاء مختلق - لأي عنوان على نطاق Proton، سواء كان موجودًا أم لا. لذا فإن "مفتاح صالح + تاريخ جميل" ليس دليلاً على وجود العنوان. لا يزال خادم المفاتيح مفيدًا، ولكن فقط لقراءة تاريخ المفتاح الحقيقي لعنوان أكدت بالفعل أنه موجود.
واجهة برمجة تطبيقات الحساب أفضل، لكنها ليست مثالية. تخبرك واجهة برمجة تطبيقات حساب Proton (/users/available) ما إذا كان اسم المستخدم متاحًا. إنها صحيحة في معظم الأحيان، لكنها تتحقق من اسم المستخدم وليس العنوان المحدد، لذا يمكن أن تكون خاطئة في حالات حدية - يمكن أن يبدو [email protected] "مأخوذًا" حتى لو لم يتم إنشاء هذا العنوان .ch مطلقًا.
الفحص الوحيد الموثوق به تمامًا هو نافذة التأليف الخاصة بـ Proton. عندما تكتب عنوانًا في حقل "إلى"، يقوم Proton بالتحقق من صحته ويضع علامة حمراء إذا كان صندوق البريد غير موجود. يمكن لـ ProtOSINT تشغيل ذلك باستخدام Selenium: يقوم بتسجيل الدخول إلى حساب Proton الخاص بك، ويفتح رسالة جديدة، ويكتب العنوان، ويقرأ ما إذا كان Proton يقبله أو يرفضه. هذه هي الإجابة الرسمية، وهذا ما تستخدمه الوحدات 1 و 2 و 4 عند تشغيل Selenium (وهو قيد التشغيل افتراضيًا).
يتم التحقق من النطاقات المخصصة عبر DNS. بالنسبة لنطاق مثل example.com، السؤال الحقيقي هو أين يتم توجيه بريده. إذا كان سجل MX يشير إلى Proton (mail.protonmail.ch / mailsec.protonmail.ch)، فإن النطاق موجود على Proton Mail. الوحدة 3 تقرأ سجلات MX وتتحقق منها مقابل خادم المفاتيح.
requirements.txt (requests, selenium)استنساخ المستودع وتثبيت تبعيات Python:
git clone https://github.com/pixelbubble/ProtOSINT.git
cd ProtOSINT
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
تحتاج أيضًا إلى تثبيت متصفح لفحص Selenium. يقوم Selenium بتنزيل السائق المطابق بنفسه، لذلك لا تحتاج إلى تثبيت chromedriver/geckodriver منفصل.
Debian / Ubuntu / Kali:
wget -O /tmp/chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt update
sudo apt install -y /tmp/chrome.deb
# بدائل: sudo apt install -y chromium (أو: firefox-esr)
macOS (Homebrew):
brew install --cask google-chrome # أو: brew install --cask firefox
Windows: قم بتثبيت Chrome أو Firefox بشكل طبيعي من موقعهما على الويب.
التشغيل كجذر (شائع في Kali)؟ يحتاج Chrome إلى علامة
--no-sandboxوإلا فإنه يتعطل عند الإطلاق. ProtOSINT يضعها لك بالفعل، لذلك لا يوجد شيء لفعله.
في المرة الأولى التي تقوم فيها بتشغيل السكريبت، يقوم بإنشاء ملف config.json بجانبه:
{
"proton": {
"username": "",
"password": ""
},
"settings": {
"use_selenium": true,
"headless": true
}
}
use_selenium (true/false) يستخدم فحص التأليف عبر Selenium للوحدات 1 و 2 و 4 (الطريقة الموثوقة). قم بتعيينه إلى false للرجوع إلى واجهة برمجة تطبيقات الحساب الأسرع.headless (true/false) يقوم بتشغيل المتصفح في الخلفية بحيث لا تظهر نافذة. قم بتعيينه إلى true فقط على حساب بدون التحقق بخطوتين (2FA) أو CAPTCHA، لأنك لا تستطيع حلها عندما تكون النافذة مخفية. قم بتعيينه إلى false إذا كنت بحاجة إلى رؤية المتصفح.username / password هما بيانات تسجيل الدخول إلى Proton الخاصة بك. يمكنك ملؤهما، أو تركهما فارغين وسيطلب السكريبت عند بدئه. ترك كلمة المرور فارغة أكثر أمانًا - فهي لا تُكتب أبدًا على القرص. إذا قمت بوضع بيانات الاعتماد في الملف، فلا تقم بإدراجه في الالتزام (موجود بالفعل في .gitignore).إذا أغلقت المتصفح في منتصف الجلسة، فإن الفحص التالي الذي يحتاجه سيعيد فتحه ويعيد تسجيل الدخول من تلقاء نفسه.
python3 protosint.py
اختر وحدة من القائمة واتبع التعليمات. q للخروج (ويغلق المتصفح إذا كان مفتوحًا).
اسم الحساب غير حساس لحالة الأحرف، ويعامل Proton . و _ و - على أنها شفافة. يتم تجاهل أي شيء بعد + أيضًا. لذا كل هذه تمثل نفس حساب [email protected]:
جميعها تشترك في نفس المفتاح والطابع الزمني.
التاريخ الذي يعرضه ProtOSINT هو تاريخ إنشاء مفتاح PGP الأساسي للحساب - وهو ليس دائمًا نفس تاريخ إنشاء الحساب.
مثال 1 - الهدف لم يلمس مفاتيحه أبدًا. هنا تاريخ المفتاح هو تاريخ إنشاء الحساب الحقيقي.
[email protected]مثال 2 - الهدف أعاد إنشاء مفتاحه. الآن يعكس التاريخ المفتاح الأحدث، وليس الحساب.
[email protected]يظهر ProtOSINT نوع المفتاح الذي يستخدمه الحساب. ما يبلغ عنه خادم المفاتيح للمفتاح الأساسي هو أحد:
قد ترى أيضًا X25519 أو Ed25519 أو RSA 3072 على بعض المفاتيح - يتم قراءتها جميعًا مباشرة من معرف خوارزمية OpenPGP للمفتاح.
تتيح لك خطة Proton المدفوعة إرفاق نطاقك الخاص. إذا كان [email protected] يحل إلى Proton (الوحدة 1 أو 3)، فالهدف على خطة Proton مدفوعة. الوحدة 3 تؤكد ذلك من سجلات MX للنطاق، وهي الإشارة الأكثر موثوقية.
يحد Proton من معدل خادم المفاتيح (الخطأ 2028) وواجهة برمجة تطبيقات الحساب (HTTP 429). الحدود الدقيقة غير موثقة ويبدو أنها تتغير، لذا إذا تم حظرك، انتظر قليلاً أو قم بالتشغيل من عنوان IP مختلف. تستخدم طريقة Selenium جلسة تسجيل الدخول العادية الخاصة بك، لذا فهي لا تتأثر بهذه الحدود.
لا تتردد في استنساخ المشروع. لأي شيء كبير، افتح مشكلة أولاً لمناقشته.
تقرأ وحدة Selenium تطبيق الويب الخاص بـ Proton، لذا إذا غير Proton صفحته، فقد تحتاج المحددات في selenium_login() و selenium_check_emails() إلى تحديث بسيط. هذا هو أول مكان للبحث إذا توقف فحص المتصفح عن العمل.