मुझे एक बाइनरी फ़ाइल मिली और मुझे इसका पासवर्ड (होमवर्क) क्रैक करना चाहिए। एक फ़ंक्शन भी दिया गया था (एक फ़ंक्शन जो बाइनरी फ़ाइल का एक हिस्सा है)। उस फ़ंक्शन ने दिखाया कि इनपुट स्ट्रिंग की तुलना चरित्र द्वारा सही पासवर्ड चरित्र के साथ की गई थी और एक चरित्र गलत होने पर तुरंत वापस लौट आया था (यह करने का सुरक्षित तरीका नहीं है मुझे लगता है क्योंकि यह समय लीक कर रहा है और हमें सही पासवर्ड लंबाई का एक विचार मिलता है। उदाहरण)। लेकिन हमारे शिक्षक ने एक यादृच्छिक टाइमर जोड़ा है जो परिणाम (सही / गलत) देता है ताकि यह हमारे लिए थोड़ा कठिन हो ...
वैसे भी, मैंने पहले ही रिवर्स इंजीनियरिंग के साथ इसे सफलतापूर्वक किया है और सही पासवर्ड प्राप्त किया है। अब मैं इसके साथ कमांड लाइन में खेल रहा हूँ:
/usr/bin/time -v ./program_name enter_password
इस कमांड के साथ, मुझे बहुत सी जानकारी मिलती है जैसे कि सिस्टम का समय, स्वैप, निष्पादन का समय..लेकिन मेरे लिए जो सबसे दिलचस्प है वह है "स्वैच्छिक संदर्भ स्विच" क्योंकि पासवर्ड के अधिक सही वर्ण जो मैं दर्ज करता हूं, कम "स्वैच्छिक संदर्भ स्विच" " मुझे मिला!
मैं जितने अधिक गलत चरित्र दर्ज करता हूं, उतना ही "स्वैच्छिक संदर्भ स्विच" मुझे मिलता है।
मुझे उस कमांड को दर्ज करके, वर्णों को दर्ज करने और "स्वैच्छिक संदर्भ स्विच" देखने के लिए पासवर्ड को क्रैक करने में लगभग दो घंटे लग गए। जब भी एक वर्ण सही था, "स्वैच्छिक संदर्भ स्विच" एक के बाद एक कम हो गया।
मेरा प्रश्न, वास्तव में "स्वैच्छिक संदर्भ स्विच" क्या हैं और उन्होंने मुझे पासवर्ड क्रैक करने में मदद क्यों की?