
ProtOSINT एक Python स्क्रिप्ट है जो आपको Proton Mail खातों की जांच करने में मदद करती है।
ProtOSINT एक Python स्क्रिप्ट है जो आपको Proton Mail खातों की जांच करने में मदद करती है।
यह ProtOSINT v2 है। पहला संस्करण कुछ वर्षों से मौजूद था, लेकिन Proton का API बदल गया और पुरानी जांचें काम करना बंद कर दीं, इसलिए यह एक पुनर्लेखन है जो उपकरण को फिर से जीवंत करता है। इस बीच इस प्रकार के शोध को जारी रखने के लिए NeutrOSINT का बहुत-बहुत धन्यवाद।
यह उपकरण Proton Mail पर OSINT कार्य के लिए है (केवल शैक्षिक और अधिकृत उपयोग के लिए)। आप इसे एक ईमेल पता, उपयोगकर्ता नाम या डोमेन देते हैं, और यह आपको बताता है कि यह क्या पा सकता है: पता वास्तव में मौजूद है या नहीं, खाते की एन्क्रिप्शन कुंजी कब बनाई गई थी, वह किस एल्गोरिदम का उपयोग करता है, और क्या कोई कस्टम डोमेन Proton पर होस्ट किया गया है।
इसमें चार मॉड्यूल हैं:
Proton जानबूझकर खाता गणना को कठिन बनाता है, इसलिए एक सामान्य जांच आपसे झूठ बोलेगी। ProtOSINT तीन स्रोतों को मिलाकर और काम के लिए सही स्रोत पर भरोसा करके इससे निपटता है।
कुंजी सर्वर गैर-मौजूद पतों के बारे में झूठ बोलता है। Proton का सार्वजनिक कुंजी सर्वर (pks/lookup) एक नकली "डिकॉय" कुंजी लौटाता है - एक बनावटी निर्माण तिथि के साथ - Proton डोमेन पर किसी भी पते के लिए, चाहे वह मौजूद हो या न हो। इसलिए "मान्य कुंजी + अच्छी तिथि" यह प्रमाण नहीं है कि पता मौजूद है। कुंजी सर्वर अभी भी उपयोगी है, लेकिन केवल उस पते की वास्तविक कुंजी तिथि पढ़ने के लिए जिसे आप पहले से मौजूद होने की पुष्टि कर चुके हैं।
खाता API बेहतर है, लेकिन सही नहीं है। Proton का खाता API (/users/available) आपको बताता है कि उपयोगकर्ता नाम खाली है या नहीं। यह अधिकांश समय सही होता है, लेकिन यह उपयोगकर्ता नाम की जांच करता है, विशिष्ट पते की नहीं, इसलिए यह किनारे के मामलों पर गलत हो सकता है - [email protected] "लिया गया" दिख सकता है, भले ही वह .ch पता कभी बनाया ही न गया हो।
पूरी तरह से विश्वसनीय एकमात्र जांच Proton का स्वयं का कंपोज़ विंडो है। जब आप "To" फ़ील्ड में एक पता टाइप करते हैं, तो 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 में Python पैकेज (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
# alternatives: sudo apt install -y chromium (or: firefox-esr)
macOS (Homebrew):
brew install --cask google-chrome # or: 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) मॉड्यूल 1, 2 और 4 के लिए Selenium कंपोज़ जांच का उपयोग करता है (विश्वसनीय विधि)। इसे false पर सेट करें ताकि तेज़ खाता API पर वापस जाएँ।headless (true/false) ब्राउज़र को पृष्ठभूमि में चलाता है ताकि कोई विंडो पॉप न हो। इसे केवल बिना 2FA या CAPTCHA वाले खाते पर true पर सेट करें, क्योंकि जब विंडो छिपी होती है तो आप उन्हें हल नहीं कर सकते। यदि आपको ब्राउज़र देखने की आवश्यकता है तो इसे false पर सेट करें।username / password आपका Proton लॉगिन है। आप उन्हें भर सकते हैं, या खाली छोड़ सकते हैं और स्क्रिप्ट शुरू होने पर पूछेगी। पासवर्ड खाली छोड़ना अधिक सुरक्षित है - यह कभी डिस्क पर नहीं लिखा जाता। यदि आप फ़ाइल में क्रेडेंशियल डालते हैं, तो इसे कमिट न करें (यह पहले से .gitignore में है)।यदि आप सत्र के बीच में ब्राउज़र बंद करते हैं, तो अगली जांच जिसे इसकी आवश्यकता होगी वह फिर से खुलेगी और अपने आप लॉग इन हो जाएगी।
python3 protosint.py
मेनू से एक मॉड्यूल चुनें और संकेतों का पालन करें। q बाहर निकलता है (और यदि ब्राउज़र खुला था तो उसे बंद कर देता है)।
खाता नाम केस-असंवेदनशील है, और Proton ., _ और - को पारदर्शी मानता है। + के बाद की कोई भी चीज़ भी अनदेखा की जाती है। तो ये सभी [email protected] जैसे ही खाते हैं:
वे सभी समान कुंजी और टाइमस्टैम्प साझा करते हैं।
ProtOSINT जो तिथि दिखाता है वह है जब खाते की प्राथमिक PGP कुंजी बनाई गई थी - जो हमेशा वह नहीं होती जब खाता बनाया गया था।
उदाहरण 1 - लक्ष्य ने कभी अपनी कुंजियों को नहीं छुआ। यहाँ कुंजी तिथि वास्तविक खाता निर्माण तिथि है।
[email protected] बनाया गयाउदाहरण 2 - लक्ष्य ने अपनी कुंजी पुनर्जीवित की। अब तिथि नई कुंजी को दर्शाती है, खाते को नहीं।
ProtOSINT दिखाता है कि खाता किस कुंजी प्रकार का उपयोग करता है। कुंजी सर्वर प्राथमिक कुंजी के लिए जो रिपोर्ट करता है वह निम्न में से एक है:
आप कुछ कुंजियों पर X25519, Ed25519 या RSA 3072 भी देख सकते हैं - वे सभी सीधे कुंजी के OpenPGP एल्गोरिदम ID से पढ़े जाते हैं।
एक भुगतान वाली Proton योजना आपको अपना स्वयं का डोमेन संलग्न करने देती है। यदि [email protected] Proton पर हल होता है (मॉड्यूल 1 या 3), तो लक्ष्य भुगतान वाली Proton योजना पर है। मॉड्यूल 3 डोमेन के MX रिकॉर्ड से इसकी पुष्टि करता है, जो सबसे विश्वसनीय संकेत है।
Proton कुंजी सर्वर (त्रुटि 2028) और खाता API (HTTP 429) दोनों को दर-सीमित करता है। सटीक सीमाएँ प्रलेखित नहीं हैं और स्थानांतरित होती दिखती हैं, इसलिए यदि आप अवरुद्ध हो जाते हैं, तो थोड़ी देर प्रतीक्षा करें या किसी भिन्न IP से पुनः चलाएँ। Selenium विधि आपके सामान्य लॉग-इन सत्र का उपयोग करती है, इसलिए यह इन सीमाओं से प्रभावित नहीं होती है।
प्रोजेक्ट को क्लोन करने में स्वतंत्र महसूस करें। किसी भी बड़ी चीज़ के लिए, पहले एक मुद्दा खोलें ताकि उस पर चर्चा की जा सके।
Selenium मॉड्यूल Proton के वेब ऐप को पढ़ता है, इसलिए यदि Proton अपना पेज बदलता है तो selenium_login() और selenium_check_emails() में सेलेक्टर को थोड़ा अपडेट करने की आवश्यकता हो सकती है। यदि ब्राउज़र जांच काम करना बंद कर देती है तो यह देखने वाली पहली जगह है।