
PACK (पासवर्ड विश्लेषण और क्रैकिंग किट)
PACK (पासवर्ड विश्लेषण और क्रैकिंग टूलकिट) उपयोगिताओं का एक संग्रह है जो पासवर्ड सूचियों के विश्लेषण में सहायता के लिए विकसित किया गया है, ताकि मास्क, नियमों, कैरेक्टर-सेट और अन्य पासवर्ड विशेषताओं का पैटर्न पता लगाकर पासवर्ड क्रैकिंग को बढ़ाया जा सके। यह टूलकिट हैशकैट परिवार के पासवर्ड क्रैकर्स के लिए वैध इनपुट फ़ाइलें जनरेट करता है।
नोट: यह टूलकिट स्वयं पासवर्ड क्रैक करने में सक्षम नहीं है, बल्कि पासवर्ड क्रैकर्स के संचालन को अधिक कुशल बनाने के लिए डिज़ाइन किया गया है।
टूलकिट का उपयोग शुरू करने से पहले, हमें पासवर्ड सूचियों के लिए एक चयन मानदंड स्थापित करना होगा। चूँकि हम लोगों द्वारा अपने पासवर्ड बनाने के तरीके का विश्लेषण करना चाहते हैं, हमें लीक हुए पासवर्डों का यथासंभव बड़ा नमूना प्राप्त करना होगा। ऐसी ही एक उत्कृष्ट सूची RockYou.com समझौते पर आधारित है। यह सूची इतना बड़ा और विविध संग्रह प्रदान करती है कि समान साइटों (जैसे सोशल नेटवर्किंग) द्वारा उपयोग किए जाने वाले सामान्य पासवर्डों के लिए अच्छे परिणाम मिलते हैं। इस सूची से प्राप्त विश्लेषण विशिष्ट पासवर्ड नीतियों वाले संगठनों के लिए काम नहीं कर सकता है। इस प्रकार, नमूना इनपुट का चयन आपके लक्ष्य के जितना संभव हो उतना करीब होना चाहिए। इसके अलावा, पहले से क्रैक किए गए पासवर्डों पर आधारित सूचियाँ प्राप्त करने से बचने का प्रयास करें, क्योंकि इससे सूची को क्रैक करने वाले व्यक्ति(यों) द्वारा उपयोग किए गए नियमों और मास्क का सांख्यिकीय पूर्वाग्रह उत्पन्न होगा, न कि वास्तविक उपयोगकर्ताओं का।
सबसे बुनियादी विश्लेषण जो आप कर सकते हैं, वह है प्रदान की गई सूची में पासवर्डों की सबसे सामान्य लंबाई, कैरेक्टर-सेट और अन्य विशेषताओं को प्राप्त करना। नीचे दिए गए उदाहरण में, हम लगभग 14 मिलियन पासवर्डों वाली 'rockyou.txt' का उपयोग करेंगे। निम्नलिखित कमांड लाइन के साथ statsgen.py लॉन्च करें:
$ python statsgen.py rockyou.txt
नीचे उपरोक्त कमांड का आउटपुट है:
_
StatsGen #.#.# | |
_ __ __ _ ___| | _
| '_ \ / _` |/ __| |/ /
| |_) | (_| | (__| <
| .__/ \__,_|\___|_|\_\
| |
|_| [email protected]
[*] Analyzing passwords in [rockyou.txt]
[+] Analyzing 100% (14344390/14344390) of passwords
NOTE: Statistics below is relative to the number of analyzed passwords, not total number of passwords
[*] Length:
[+] 8: 20% (2966037)
[+] 7: 17% (2506271)
[+] 9: 15% (2191039)
[+] 10: 14% (2013695)
[+] 6: 13% (1947798)
...
[*] Character-set:
[+] loweralphanum: 42% (6074867)
[+] loweralpha: 25% (3726129)
[+] numeric: 16% (2346744)
[+] loweralphaspecialnum: 02% (426353)
[+] upperalphanum: 02% (407431)
...
[*] Password complexity:
[+] digit: min(0) max(255)
[+] lower: min(0) max(255)
[+] upper: min(0) max(187)
[+] special: min(0) max(255)
[*] Simple Masks:
[+] stringdigit: 37% (5339556)
[+] string: 28% (4115314)
[+] digit: 16% (2346744)
[+] digitstring: 04% (663951)
[+] othermask: 04% (576324)
...
[*] Advanced Masks:
[+] ?l?l?l?l?l?l?l?l: 04% (687991)
[+] ?l?l?l?l?l?l: 04% (601152)
[+] ?l?l?l?l?l?l?l: 04% (585013)
[+] ?l?l?l?l?l?l?l?l?l: 03% (516830)
[+] ?d?d?d?d?d?d?d: 03% (487429)
...
नोट: आप --hiderare फ़्लैग शामिल करके आउटलियर्स की संख्या कम कर सकते हैं, जो 1% से कम घटित होने वाली किसी भी वस्तु को नहीं दिखाएगा।
यहां बताया गया है कि हम उपरोक्त सूची से तुरंत क्या सीख सकते हैं:
अंतिम खंड, "Advanced Masks", में हैशकैट प्रारूप का उपयोग करके सबसे अधिक बार आने वाले मास्क शामिल हैं। व्यक्तिगत प्रतीकों की व्याख्या इस प्रकार की जा सकती है:
?l - एक एकल लोअरकेस कैरेक्टर
?u - एक एकल अपरकेस कैरेक्टर
?d - एक एकल अंक
?s - एक एकल विशेष कैरेक्टर
उदाहरण के लिए, सबसे पहला मास्क "?l?l?l?l?l?l?l?l" सभी लोअरकेस अल्फा पासवर्डों से मेल खाएगा। नमूना आकार को देखते हुए, आप लगभग 4% पासवर्ड क्रैक कर पाएंगे। हालांकि, प्रारंभिक आउटपुट जनरेट करने के बाद, आप पासवर्ड डेटा पर ध्यान केंद्रित करने के लिए फ़िल्टर का उपयोग करने में रुचि ले सकते हैं।
आइए देखते हैं कि RockYou उपयोगकर्ता "stringdigit" सरल मास्क (एक स्ट्रिंग के बाद संख्याएँ) का उपयोग करके अपने पासवर्ड कैसे चुनते हैं:
$ python statsgen.py ../PACK-0.0.3/archive/rockyou.txt --simplemask stringdigit -q --hiderare
[*] Analyzing passwords in [rockyou.txt]
[+] Analyzing 37% (5339556/14344390) of passwords
NOTE: Statistics below is relative to the number of analyzed passwords, not total number of passwords
[*] Length:
[+] 8: 23% (1267260)
[+] 7: 18% (981432)
[+] 9: 17% (939971)
[+] 10: 14% (750938)
[+] 6: 11% (618983)
[+] 11: 05% (294869)
[+] 12: 03% (175875)
[+] 13: 01% (103047)
[+] 14: 01% (65958)
[*] Character-set:
[+] loweralphanum: 88% (4720184)
[+] upperalphanum: 06% (325941)
[+] mixedalphanum: 05% (293431)
[*] Password complexity:
[+] digit: min(1) max(252)
[+] lower: min(0) max(46)
[+] upper: min(0) max(31)
[+] special: min(0) max(0)
[*] Simple Masks:
[+] stringdigit: 100% (5339556)
[*] Advanced Masks:
[+] ?l?l?l?l?l?l?d?d: 07% (420318)
[+] ?l?l?l?l?l?d?d: 05% (292306)
[+] ?l?l?l?l?l?l?l?d?d: 05% (273624)
[+] ?l?l?l?l?d?d?d?d: 04% (235360)
[+] ?l?l?l?l?d?d: 04% (215074)
...
आउटपुट के सबसे ऊपर यह निर्दिष्ट किया गया है कि कुल पासवर्डों में से कितने प्रतिशत का विश्लेषण किया गया। इस मामले में, केवल "stringdigit" मास्क से मेल खाने वाले पासवर्डों को क्रैक करके, मूल आउटपुट में दिखाए गए अनुसार कुल सेट का केवल लगभग 37% ही प्राप्त करना संभव है। इसके बाद, ऐसा प्रतीत होता है कि इस पासवर्ड प्रकार के केवल 11% में लोअरकेस के अलावा कुछ और उपयोग होता है। इसलिए इस मास्क से मेल खाने वाले केवल लोअरकेस स्ट्रिंग्स पर ध्यान केंद्रित करना समझदारी होगी। अंत में, "Advanced Mask" अनुभाग में हम देख सकते हैं कि अधिकांश "stringdigit" पासवर्डों में एक स्ट्रिंग के बाद दो या चार अंक होते हैं। उपरोक्त आउटपुट से प्राप्त जानकारी के साथ, हम लक्षित उपयोगकर्ताओं के पासवर्ड जनरेशन पैटर्न की एक मानसिक छवि बनाना शुरू कर सकते हैं।
पासवर्ड की लंबाई, मास्क और कैरेक्टर सेट के लिए कुछ अन्य फ़िल्टर उपलब्ध हैं:
Length: --minlength और/या --maxlength
Simple Mask: --simplemask [numeric, loweralpha, upperalpha, mixedalpha, loweralphanum, आदि.]
Character sets: --charset [digit, string, stringdigit, digitstring, digitstringdigit, आदि.]
नोट: एक ही वर्ग के एक से अधिक फ़िल्टर को अल्पविराम से अलग की गई सूची के रूप में निर्दिष्ट किया जा सकता है:
--simplemask="stringdigit,digitstring"
जबकि "Advanced Mask" अनुभाग केवल 1% से अधिक पासवर्डों से मेल खाने वाले पैटर्न प्रदर्शित करता है, आप निम्नलिखित कमांड का उपयोग करके किसी दिए गए शब्दकोश से मेल खाने वाले पासवर्ड मास्क की पूरी सूची प्राप्त कर सकते हैं और सहेज सकते हैं: