
संभाव्य संदर्भ मुक्त व्याकरण (PCFG) पासवर्ड अनुमान जनरेटर
PCFG = Probabilistic Context Free Grammar (प्रसंग-मुक्त प्रसंभाव्य व्याकरण)
PCFG = Pretty Cool Fuzzy Guesser (बहुत बढ़िया फ़ज़ी अनुमानक)
संक्षेप में: उपकरणों का एक संग्रह जो यह शोध करने के लिए है कि मानव पासवर्ड कैसे उत्पन्न करते हैं। इनका उपयोग पासवर्ड हैश को क्रैक करने के लिए किया जा सकता है, लेकिन सिंथेटिक पासवर्ड (हनीवर्ड) बनाने या बेहतर पासवर्ड शक्ति एल्गोरिदम विकसित करने में मदद करने के लिए भी किया जा सकता है।
प्रशिक्षक: 4.4
अनुमानक: 4.6
PRINCE_LING: 4.3
Password_Scorer: 4.4
Sphinx का उपयोग कोड में डॉकस्ट्रिंग के आधार पर एक डेवलपर गाइड गतिशील रूप से बनाने के लिए किया जाता है। डेवलपर गाइड बनाने के लिए, /doc/INSTRUCTIONS.rst में दिए गए निर्देश देखें।
एक पूर्व-निर्मित डेवलपर गाइड PDF /doc/build/latex/pcfgdevelopersguide.pdf पर भी पाया जा सकता है। ध्यान दें, मैं इस गाइड को प्रमुख रिलीज़ों के बीच पुनर्निर्मित नहीं करूंगा ताकि git इतिहास साफ रहे। यानी PDFs को कमिट करना जल्दी गड़बड़ हो जाता है। इसका मतलब है कि पूर्व-निर्मित गाइड थोड़ा पुराना हो सकता है, इसलिए यदि आप कोड लिखने/संशोधित करने में मदद के लिए इसका उपयोग कर रहे हैं, तो पूर्व-निर्मित गाइड के बजाय स्वयं गाइड बनाने की अनुशंसा की जाती है।
यह परियोजना उपयोगकर्ताओं की पासवर्ड निर्माण आदतों की पहचान करने के लिए मशीन लर्निंग का उपयोग करती है। एक PCFG मॉडल खुलासा किए गए सादे पाठ/क्रैक किए गए पासवर्ड की सूची पर प्रशिक्षण देकर उत्पन्न किया जाता है। इस परियोजना के संदर्भ में, मॉडल को एक नियमसेट (ruleset) कहा जाता है और इसमें प्रशिक्षण के दौरान पहचाने गए पासवर्ड के कई अलग-अलग भाग और उनसे जुड़ी प्रायिकताएं शामिल होती हैं। यह विभाजन PRINCE जैसे अन्य क्रैकिंग उपकरणों के लिए उपयोगी हो सकता है, और/या नियमसेट के कुछ हिस्सों को सीधे अधिक पारंपरिक शब्दकोश-आधारित हमलों में शामिल किया जा सकता है। इस परियोजना में एक PCFG अनुमान जनरेटर भी शामिल है जो प्रायिकता क्रम में पासवर्ड अनुमान उत्पन्न करने के लिए इस नियमसेट का उपयोग करता है। यह मानक शब्दकोश हमलों की तुलना में कहीं अधिक शक्तिशाली है, और परीक्षण में यह साबित हुआ है कि यह औसतन काफी कम अनुमानों के साथ पासवर्ड क्रैक करने में सक्षम है, जितना कि अन्य सार्वजनिक रूप से उपलब्ध तरीके कर सकते हैं। नकारात्मक पक्ष यह है कि प्रायिकता क्रम में अनुमान उत्पन्न करना धीमा है, जिसका अर्थ है कि यह औसतन 50-100k अनुमान प्रति सेकंड बनाता है, जबकि GPU-आधारित एल्गोरिदम तेज़ हैशिंग एल्गोरिदम के खिलाफ प्रति सेकंड लाखों से अरबों (और उससे ऊपर) अनुमान बना सकते हैं। इसलिए, PCFG अनुमानक बड़ी संख्या में नमकीन हैश या अन्य धीमी हैशिंग एल्गोरिदम के खिलाफ सबसे अच्छा उपयोग किया जाता है, जहां एल्गोरिदम की प्रदर्शन लागत अनुमानों की सटीकता से पूरी हो जाती है।
pip3 install chardet का उपयोग करके स्थापित करेंइस रेपो में शामिल डिफ़ॉल्ट नियमसेट RockYou डेटासेट के 1 मिलियन पासवर्ड उपसमुच्चय पर प्रशिक्षण देकर बनाया गया था। RockYou के पूरे 32 मिलियन पासवर्ड सेट पर प्रशिक्षण देकर बेहतर प्रदर्शन प्राप्त किया जा सकता है, लेकिन डाउनलोड आकार को छोटा रखने के लिए इसे शामिल नहीं किया गया। आप बिना किसी नई सूची पर प्रशिक्षण दिए पासवर्ड उत्पन्न करना शुरू करने के लिए डिफ़ॉल्ट नियमसेट का उपयोग कर सकते हैं, लेकिन यह अनुशंसा की जाती है कि आप लक्ष्य पासवर्ड के एक सेट पर प्रशिक्षण दें जो आपके लक्ष्य के करीब हो सकता है। यदि आप अपना स्वयं का नियमसेट बनाते हैं, तो यहां एक त्वरित मार्गदर्शिका है:
python3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESETpython3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESET -c 0.6
b. --save_sensitive: यदि यह निर्दिष्ट किया गया है, तो प्रशिक्षण के दौरान खोजे गए संवेदनशील डेटा जैसे ईमेल पते और पूर्ण वेबसाइटें नियमसेट में सहेजी जाएंगी। जबकि PCFG अनुमान जनरेटर वर्तमान में इस डेटा का उपयोग नहीं करता है, यह वास्तविक पासवर्ड क्रैकिंग हमले के दौरान बहुत मूल्यवान है। यह डिफ़ॉल्ट रूप से बंद है ताकि इस उपकरण को शैक्षणिक सेटिंग में उपयोग करना आसान हो सके। ध्यान दें, भले ही यह बंद हो, फिर भी नियमसेट के अंदर लगभग निश्चित रूप से PII डेटा सहेजा जाएगा, इसलिए उत्पन्न नियमसेट की उचित रूप से रक्षा करें। उदाहरण: python3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESET --save_sensitive
c. --comments: आपके नियमसेट कॉन्फ़िग फ़ाइल में एक टिप्पणी जोड़ता है। यह उपयोगी है ताकि जब आप बाद में इसे देखें तो आपको पता चले कि आपने अपना नियमसेट क्यों और कैसे उत्पन्न किया। आप जिस टिप्पणी को जोड़ना चाहते हैं उसे उद्धरणों में शामिल करें।यह पहले से प्रशिक्षित PCFG नियमसेट का उपयोग करके stdout पर अनुमान उत्पन्न करता है। इन अनुमानों को फिर किसी भी प्रोग्राम में पाइप किया जा सकता है जिसका आप उपयोग करना चाहते हैं। यदि कोई नियमसेट निर्दिष्ट नहीं किया गया है, तो डिफ़ॉल्ट नियमसेट DEFAULT का उपयोग किया जाएगा। इस मार्गदर्शिका के प्रयोजनों के लिए यह माना जाएगा कि उपयोग किया जा रहा नियमसेट NEW_RULESET है।
python3 pcfg_guesser.py -r NEW_RULESET -s SESSION_NAMEpython3 pcfg_guesser.py -r NEW_RULESET -s SESSION_NAME --loadऐसे कई मामले हैं जहां आप पहले से प्रशिक्षित नियमसेट द्वारा उत्पन्न होने वाले पासवर्ड की संभावना का अनुमान लगाना चाह सकते हैं। उदाहरण के लिए, यह पासवर्ड शक्ति मीट्रिक का हिस्सा हो सकता है, या अन्य शोध उद्देश्यों के लिए उपयोग किया जा सकता है। इसे करने के लिए एक नमूना प्रोग्राम शामिल किया गया है।
python3 password_scorer -r NEW_RULESET -i INPUT_LISTनाम: PRINCE Language Idexed N-Grams (Prince-Ling)
अवलोकन: PRINCE शैली के कॉम्बिनेटर हमलों में उपयोग के लिए पहले से प्रशिक्षित PCFG नियमसेट/व्याकरण पर आधारित अनुकूलित शब्दसूची तैयार करता है। इसके पीछे विचार यह था कि चूंकि PCFG प्रशिक्षक पहले से ही प्रशिक्षण सेट के पासवर्ड को अलग-अलग पार्सिंग में तोड़ रहा है, इसलिए उस जानकारी का उपयोग अन्य हमलों के लिए लक्षित शब्दसूची बनाने के लिए किया जा सकता है।
बुनियादी तंत्र: हुड के नीचे, Prince-Ling उपकरण मूल रूप से एक मिनी-PCFG अनुमान जनरेटर है। यह मार्कोव अनुमान उत्पादन को हटा देता है, और सामान्य PCFG हमलों में उपयोग किए जाने वाले आधार संरचनाओं को PRINCE शब्दसूची उत्पन्न करने के लिए अनुकूलित एक काफी कम आधार-संरचना के साथ बदल देता है। यह प्रायिकता क्रम में शब्दकोश शब्दों को उत्पन्न करने की अनुमति देता है, इस बात को ध्यान में रखते हुए कि PRINCE हमले में उन शब्दों के कितने उपयोगी होने की उम्मीद है।
Prince-Ling का उपयोग करना
python3 prince-ling.py -r RULESET_NAME -s SIZE_OF_WORDLIST_TO_CREATE -o OUTPUT_FILENAMEpython3 pcfg_guesser -r NEW_RULESET -s SESSION_NAME | ./john --stdin --format=bcrypt PASSWORDS_TO_CRACK.txt
यदि आप कोई बग देखते हैं, या यदि आप कोई ऐसी सुविधा चाहते हैं जिसे जोड़ा जाना चाहिए, तो कृपया इस github पेज पर एक मुद्दा खोलें। मैं पुल रिक्वेस्ट भी स्वीकार करता हूं, हालांकि कृपया पुल रिक्वेस्ट को एक मुद्दे से लिंक करें ताकि मैं इसे अधिक आसानी से समीक्षा कर सकूं, प्रश्न पूछ सकूं, और आपके द्वारा किए जा रहे परिवर्तनों को बेहतर ढंग से समझ सकूं।
PCFG का उपयोग करके पासवर्ड निर्माण रणनीतियों को मॉडल करने में बहुत सारे सुधार किए जा सकते हैं। मैं नए विचारों, परिवर्तनों और सुझावों के लिए बहुत खुला हूं। सिर्फ इसलिए कि कोड वर्तमान में किसी निश्चित तरीके से कुछ करता है इसका मतलब यह नहीं है कि यह सबसे अच्छा विकल्प है। उदाहरण के लिए, वर्तमान दृष्टिकोण का मूलभूत आधार_संरचना जहां अल्फा स्ट्रिंग्स, अंक, अन्य आदि के लिए मास्क उत्पन्न किए जाते हैं, इसलिए चुना गया क्योंकि यह "सबसे आसान" विकल्प था। मेरी टीम में बहुत बहस हुई कि एक बेहतर विकल्प एक आधार शब्द से शुरू करना हो सकता है, और फिर PCFG में संक्रमण के रूप में उस पर लागू अधिक पारंपरिक मैंगलिंग नियमों को मॉडल करना। तो इस कोड के साथ स्वतंत्र महसूस करें!