वास्तव में "स्वैच्छिक संदर्भ स्विच" क्या हैं?


34

मुझे एक बाइनरी फ़ाइल मिली और मुझे इसका पासवर्ड (होमवर्क) क्रैक करना चाहिए। एक फ़ंक्शन भी दिया गया था (एक फ़ंक्शन जो बाइनरी फ़ाइल का एक हिस्सा है)। उस फ़ंक्शन ने दिखाया कि इनपुट स्ट्रिंग की तुलना चरित्र द्वारा सही पासवर्ड चरित्र के साथ की गई थी और एक चरित्र गलत होने पर तुरंत वापस लौट आया था (यह करने का सुरक्षित तरीका नहीं है मुझे लगता है क्योंकि यह समय लीक कर रहा है और हमें सही पासवर्ड लंबाई का एक विचार मिलता है। उदाहरण)। लेकिन हमारे शिक्षक ने एक यादृच्छिक टाइमर जोड़ा है जो परिणाम (सही / गलत) देता है ताकि यह हमारे लिए थोड़ा कठिन हो ...

वैसे भी, मैंने पहले ही रिवर्स इंजीनियरिंग के साथ इसे सफलतापूर्वक किया है और सही पासवर्ड प्राप्त किया है। अब मैं इसके साथ कमांड लाइन में खेल रहा हूँ:

/usr/bin/time -v ./program_name enter_password

इस कमांड के साथ, मुझे बहुत सी जानकारी मिलती है जैसे कि सिस्टम का समय, स्वैप, निष्पादन का समय..लेकिन मेरे लिए जो सबसे दिलचस्प है वह है "स्वैच्छिक संदर्भ स्विच" क्योंकि पासवर्ड के अधिक सही वर्ण जो मैं दर्ज करता हूं, कम "स्वैच्छिक संदर्भ स्विच" " मुझे मिला!

मैं जितने अधिक गलत चरित्र दर्ज करता हूं, उतना ही "स्वैच्छिक संदर्भ स्विच" मुझे मिलता है।

मुझे उस कमांड को दर्ज करके, वर्णों को दर्ज करने और "स्वैच्छिक संदर्भ स्विच" देखने के लिए पासवर्ड को क्रैक करने में लगभग दो घंटे लग गए। जब भी एक वर्ण सही था, "स्वैच्छिक संदर्भ स्विच" एक के बाद एक कम हो गया।

मेरा प्रश्न, वास्तव में "स्वैच्छिक संदर्भ स्विच" क्या हैं और उन्होंने मुझे पासवर्ड क्रैक करने में मदद क्यों की?


5
अपने आप को अमीर की खोज करने के लिए बधाई और अभी भी साइड-चैनल हमलों के पूरी तरह से समझा क्षेत्र नहीं है ।
zwol

1
@zwol आपको "अमीर" से क्या मतलब है? और इसके अलावा, हम वर्तमान में कक्षा में साइड-चैनल हमलों से निपट रहे हैं, मुझे क्षमा करें कि मुझे इसका क्षेत्र "पूरी तरह से" समझ में नहीं आया है कि ....
cnmesr

15
@cnmesr मैंने इसे एक गंभीर टिप्पणी के रूप में लिया, व्यंग्यात्मक नहीं, यह कहते हुए कि ज़्वोल क्षेत्र को एक दिलचस्प मानता है क्योंकि नई खोज अभी भी की जा रही है। ऐसा नहीं है कि आपने इसे पूरी तरह से नहीं समझा है, यह है कि कोई भी इसे पूरी तरह से नहीं समझता है, और यही इसे दिलचस्प बनाता है।
hvd

3
@hvd cnmesr हां, मेरा यही मतलब है।
zwol

@zwol ओह सॉरी फिर! मैंने आपकी गलत व्याख्या की और इसे एक हमले के रूप में देखा: p
cnmesr

जवाबों:


36

के लिए आदमी पेजtime स्वैच्छिक और अस्वैच्छिक संदर्भ स्विच की अवधारणा की व्याख्या:

The resource specifiers [...] are:
   c      Number of times the process was context-switched involuntarily
          (because the time slice expired).
   w      Number of times that the program was context-switched voluntarily, 
          for instance while waiting for an I/O operation to complete.

(उद्धरण मेरे डेबियन सिस्टम से है, लिंक किए गए मैन पेज में थोड़ा अलग पाठ है)

यही है, एक संदर्भ स्विच स्वैच्छिक है, अगर प्रक्रिया सीपीयू को छोड़ देती है क्योंकि इसमें कुछ और नहीं है (जबकि कुछ बाहरी होने की प्रतीक्षा कर रहा है)। अनैच्छिक, अगर यह कुछ संगणना जारी रखना चाहेगा, लेकिन OS यह निर्णय लेता है कि यह किसी अन्य प्रक्रिया में बदल जाए।


यह पासवर्ड-चेकिंग प्रोग्राम से कैसे संबंधित है, यह इस बात पर निर्भर करता है कि प्रोग्राम वास्तव में क्या करता है।

टिप्पणियों में लिंक किए गए स्रोत कोड से, हम देखते हैं कि कार्यक्रम usleep()प्रत्येक गैर-मिलान वाले चरित्र के लिए एक बार कॉल करता है, अगले चरित्र पर तुलना लूप को आगे की ओर जारी रखता है। स्लीपिंग लगभग स्वैच्छिक रूप से सीपीयू की उपज के रूप में होती है, इसलिए ये कॉल प्रत्येक गैर-मचिंग चरित्र के लिए स्वैच्छिक संदर्भ स्विच के रूप में दिखाई देंगे।

लिनक्स पर, आपको कॉल को straceभी देखने में सक्षम होना चाहिए ।

अंतिम विलंब एक यादृच्छिक नींद से होता है T * (rand() % 3), यानी 0, 1, या 2 बार स्थिर। यह एक बल्कि दानेदार हिस्सा है, इसलिए एक ही पासवर्ड के साथ कई प्रयास करके औसत निकालना आसान होना चाहिए।


3
यहाँ फ़ंक्शन का स्रोत कोड है, जिसका मैंने ऊपर उल्लेख किया है pastebin.com/iTzheD4u धन्यवाद, मैं स्ट्रेस के साथ कॉल पर एक नज़र डालूंगा और उम्मीद है कि कुछ और जानकारी मिलेगी। यादृच्छिक टाइमर के बारे में: यदि पासवर्ड की लंबाई गलत है, तो आउटपुट समय एक ही है (बहुत तेज) और यादृच्छिक टाइमर निष्पादित नहीं होता है। यदि पासवर्ड की लंबाई सही है, तो आउटपुट यादृच्छिक है क्योंकि यादृच्छिक टाइमर निष्पादित होता है।
cnmesr

@cnmesr, ओह, यह बहुत अच्छा है!
इलकाचू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.