
ProtOSINT एक Python स्क्रिप्ट है जो आपको Proton Mail खातों की जांच करने में मदद करती है।
# ProtOSINT ProtOSINT एक Python स्क्रिप्ट है जो आपको Proton Mail खातों की जांच करने में मदद करती है। <img width="800" height="832" alt="protosint (1)" src="https://github.com/user-attachments/assets/4c08389a-0525-40e3-99d3-392561752425" /> ## संस्करण यह **ProtOSINT v2** है। पहला संस्करण कुछ वर्षों से मौजूद था, लेकिन Proton का API बदल गया और पुरानी जांचें काम करना बंद कर दीं, इसलिए यह एक पुनर्लेखन है जो उपकरण को फिर से जीवंत करता है। इस बीच इस प्रकार के शोध को जारी रखने के लिए [NeutrOSINT](https://github.com/Kr0wZ/NeutrOSINT) का बहुत-बहुत धन्यवाद। ## विवरण यह उपकरण Proton Mail पर OSINT कार्य के लिए है (केवल शैक्षिक और अधिकृत उपयोग के लिए)। आप इसे एक ईमेल पता, उपयोगकर्ता नाम या डोमेन देते हैं, और यह आपको बताता है कि यह क्या पा सकता है: पता वास्तव में मौजूद है या नहीं, खाते की एन्क्रिप्शन कुंजी कब बनाई गई थी, वह किस एल्गोरिदम का उपयोग करता है, और क्या कोई कस्टम डोमेन Proton पर होस्ट किया गया है। इसमें चार मॉड्यूल हैं: - **[1]** एक Proton ईमेल जांचें: क्या यह मौजूद है, और कुंजी निर्माण तिथि और प्रकार क्या है। - **[2]** सभी Proton डोमेन (protonmail.com, protonmail.ch, pm.me, proton.me) पर एक उपयोगकर्ता नाम की गणना करें। - **[3]** जांचें कि क्या कोई डोमेन Proton Mail का उपयोग करता है (इसके MX रिकॉर्ड के माध्यम से, कुंजी सर्वर से क्रॉस-चेक किया गया)। - **[4]** एक वास्तविक लॉग-इन 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 रिकॉर्ड पढ़ता है और उन्हें कुंजी सर्वर के साथ क्रॉस-चेक करता है। ## आवश्यकताएँ - [Python 3](https://www.python.org/downloads/) (3.7 या नया) - `requirements.txt` में Python पैकेज (`requests`, `selenium`) - Selenium जांच के लिए एक ब्राउज़र (Chrome/Chromium या Firefox) ## स्थापना रिपॉजिटरी को क्लोन करें और Python निर्भरताएँ स्थापित करें: ```bash 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: ```bash 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): ```bash brew install --cask google-chrome # or: brew install --cask firefox ``` Windows: Chrome या Firefox को सामान्य रूप से उनकी वेबसाइट से स्थापित करें। > रूट के रूप में चला रहे हैं (Kali पर सामान्य)? Chrome को `--no-sandbox` फ़्लैग की आवश्यकता है अन्यथा यह लॉन्च होने पर क्रैश हो जाता है। ProtOSINT पहले से ही इसे आपके लिए सेट करता है, इसलिए कुछ करने की आवश्यकता नहीं है। ## कॉन्फ़िगरेशन पहली बार जब आप स्क्रिप्ट चलाते हैं तो यह उसके बगल में एक `config.json` फ़ाइल बनाता है: ```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` में है)। यदि आप सत्र के बीच में ब्राउज़र बंद करते हैं, तो अगली जांच जिसे इसकी आवश्यकता होगी वह फिर से खुलेगी और अपने आप लॉग इन हो जाएगी। ## उपयोग ```bash python3 protosint.py ``` मेनू से एक मॉड्यूल चुनें और संकेतों का पालन करें। `q` बाहर निकलता है (और यदि ब्राउज़र खुला था तो उसे बंद कर देता है)। ## Proton Mail जांच के लिए सुझाव ### Proton Mail केस-असंवेदनशील है खाता नाम केस-असंवेदनशील है, और Proton `.`, `_` और `-` को पारदर्शी मानता है। `+` के बाद की कोई भी चीज़ भी अनदेखा की जाती है। तो ये सभी `[email protected]` जैसे ही खाते हैं: - `[email protected]` - `[email protected]` - `[email protected]` - `[email protected]` वे सभी समान कुंजी और टाइमस्टैम्प साझा करते हैं। ### टाइमस्टैम्प कुंजी तिथि है, हमेशा खाता तिथि नहीं ProtOSINT जो तिथि दिखाता है वह है जब खाते की *प्राथमिक PGP कुंजी* बनाई गई थी - जो हमेशा वह नहीं होती जब खाता बनाया गया था। **उदाहरण 1 - लक्ष्य ने कभी अपनी कुंजियों को नहीं छुआ।** यहाँ कुंजी तिथि वास्तविक खाता निर्माण तिथि है। - 2021-01-12: खाता `[email protected]` बनाया गया - 2021-01-15: ProtOSINT 2021-01-12 रिपोर्ट करता है **उदाहरण 2 - लक्ष्य ने अपनी कुंजी पुनर्जीवित की।** अब तिथि नई कुंजी को दर्शाती है, खाते को नहीं। - 2021-01-13: लक्ष्य सेटिंग्स → एन्क्रिप्शन कुंजियों में एक नई कुंजी उत्पन्न करता है - 2021-01-15: ProtOSINT 2021-01-13 रिपोर्ट करता है, 2021-01-12 नहीं ### एन्क्रिप्शन कुंजियाँ ProtOSINT दिखाता है कि खाता किस कुंजी प्रकार का उपयोग करता है। कुंजी सर्वर प्राथमिक कुंजी के लिए जो रिपोर्ट करता है वह निम्न में से एक है: - Curve25519 - आधुनिक ECC (एक Ed25519 हस्ताक्षर कुंजी); यह नए खातों पर डिफ़ॉल्ट है और सबसे तेज़ और सबसे सुरक्षित है - RSA 2048 - 2021 से पहले बनाए गए खातों पर पुराना डिफ़ॉल्ट - RSA 4096 - अधिक मजबूत लेकिन धीमा, आमतौर पर देखा जाता है जब कोई विरासत संगतता के लिए कुंजी आयात करता है आप कुछ कुंजियों पर 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()` में सेलेक्टर को थोड़ा अपडेट करने की आवश्यकता हो सकती है। यदि ब्राउज़र जांच काम करना बंद कर देती है तो यह देखने वाली पहली जगह है। ## लाइसेंस [MIT](https://choosealicense.com/licenses/mit/)