जब से पहले व्यक्ति ने एक कैलकुलेटर पर 5318008 लिखा है, nerds आपके पीसी के अंदर गुप्त संख्या छिपा रहा है, और अनुप्रयोगों और फ़ाइलों के बीच गुप्त हैंडशेक पर बातचीत करने के लिए उनका उपयोग कर रहा है। आज हम कुछ अधिक मनोरंजक उदाहरणों पर एक नज़र डालते हैं।
मैजिक नंबर क्या हैं?
अधिकांश प्रोग्रामिंग भाषाएं दृश्यों के पीछे कुछ प्रकार के डेटा का प्रतिनिधित्व करने के लिए 32-बिट पूर्णांक प्रकार का उपयोग करती हैं - आंतरिक रूप से संख्या को रैम में संग्रहीत किया जाता है या सीपीयू द्वारा 32 लोगों और शून्य के रूप में उपयोग किया जाता है, लेकिन स्रोत कोड में इसे बाहर भी लिखा जाएगा। नियमित दशमलव प्रारूप, या हेक्साडेसिमल प्रारूप के रूप में, जो 9 के माध्यम से संख्या 0 और एफ के माध्यम से अक्षर का उपयोग करता है।
जब ऑपरेटिंग सिस्टम या एप्लिकेशन फ़ाइल के प्रकार को निर्धारित करना चाहता है, तो यह एक विशेष मार्कर के लिए फ़ाइल की शुरुआत को देख सकता है जो फ़ाइल के प्रकार को दर्शाता है। उदाहरण के लिए, एक पीडीएफ फाइल हेक्स मान 0x255044462D312E33 के साथ शुरू हो सकती है, जो ASCII प्रारूप में "% PDF-1.3" के बराबर है, या एक ज़िप फ़ाइल 0x504B के साथ शुरू होती है, जो कि "PK" के बराबर होती है, जो मूल PKZip उपयोगिता से उतरती है। इस "हस्ताक्षर" को देखकर, किसी भी अन्य मेटाडेटा के बिना भी एक फ़ाइल प्रकार आसानी से पहचाना जा सकता है।
लिनक्स उपयोगिता "फ़ाइल" का उपयोग टर्मिनल से किसी फ़ाइल के प्रकार को निर्धारित करने के लिए किया जा सकता है - वास्तव में, यह एक फ़ाइल से मैजिक नंबर पढ़ता है जिसे "जादू" कहा जाता है।
जब कोई एप्लिकेशन किसी फ़ंक्शन को कॉल करना चाहता है, तो यह पूर्णांक जैसे मानक प्रकारों का उपयोग करके उस फ़ंक्शन को मान दे सकता है, जिसे हेक्साडेसिमल प्रारूप में स्रोत कोड में व्यक्त किया जा सकता है। यह स्थिरांक के लिए विशेष रूप से सच है, जो पहचानकर्ता हैं जो मानव-पढ़ने योग्य नामों जैसे कि AUTOSAVE_INTERVAL से परिभाषित हैं, लेकिन वे वास्तविक पूर्णांक (या अन्य प्रकार) मानों के लिए मैप करते हैं। इसलिए प्रोग्रामर को स्रोत कोड में फ़ंक्शन को कॉल करने पर हर बार 60 की तरह एक मान टाइप करने के बजाय, वे बेहतर पठनीयता के लिए AUTOSAVE_INTERVAL निरंतर का उपयोग कर सकते हैं। (स्थिरांक आमतौर पर आसानी से पहचाने जाते हैं क्योंकि वे सभी बड़े अक्षरों में लिखे गए हैं)।
ये सभी उदाहरण शब्द के अंतर्गत आ सकते हैं मैजिक नंबर , क्योंकि उन्हें किसी फ़ंक्शन या फ़ाइल प्रकार को ठीक से काम करने के लिए एक विशिष्ट हेक्साडेसिमल नंबर की आवश्यकता हो सकती है ... यदि मान सही नहीं है तो यह काम नहीं करेगा। और जब कोई प्रोग्रामर थोड़ी मस्ती करना चाहता है, तो वे हेक्साडेसिमल नंबरों का उपयोग करके इन मूल्यों को परिभाषित कर सकते हैं जो अंग्रेजी में कुछ बोलते हैं, अन्यथा। hexspeak .
मैजिक नंबर के साथ मज़ा: कुछ उल्लेखनीय उदाहरण
यदि आप एक त्वरित देखो लिनक्स स्रोत कोड में , आप देखेंगे कि लिनक्स पर _reboot () सिस्टम कॉल के लिए हेक्साडेसिमल नंबर 0xfee1dead के बराबर होने वाले "मैजिक" चर की आवश्यकता होती है। अगर किसी चीज ने पहले उस मैजिक वैल्यू को पास किए बिना उस फंक्शन को कॉल करने की कोशिश की, तो यह सिर्फ एक त्रुटि होगी।
GUID (विश्व स्तर पर विशिष्ट पहचानकर्ता) के लिए BIOS बूट विभाजन में जीपीटी विभाजन योजना 21686148-6449-6E6F-744E-656564454649 है, जो ASCII स्ट्रिंग "Hah! IdontNeedEFI" बनाता है, इस तथ्य के लिए एक भ्रम है कि GPT का सामान्य रूप से उपयोग किया जाएगा! कंप्यूटर जो UEFI के साथ BIOS को प्रतिस्थापित करते हैं , लेकिन यह जरूरी नहीं है
Microsoft प्रसिद्ध है 0x0B00B135 छुपाया तब उनके हाइपर- V वर्चुअल-मशीन सपोर्टिंग सोर्स कोड को लिनक्स में सबमिट किया जाता है उन्होंने मान को 0xB16B00B5 में बदल दिया , और अंत में वे इसे दशमलव में बदल दिया इससे पहले कि यह स्रोत कोड से पूरी तरह हटा दिया गया था।
अधिक मजेदार उदाहरणों में शामिल हैं:
- 0xbaaaaaad - द्वारा उपयोग किया जाता है iOS क्रैश लॉगिंग यह इंगित करने के लिए कि लॉग पूरी प्रणाली का एक स्टैकशॉट है।
- 0xbad22222 - iOS क्रैश लॉगिंग द्वारा यह इंगित करने के लिए उपयोग किया जाता है कि iOS द्वारा वीओआईपी ऐप को मार दिया गया है क्योंकि यह गलत व्यवहार करता है।
- 0x8badf00d - (Ate Bad Food) जिसका उपयोग iOS क्रैश लॉग द्वारा किया जाता है, यह दर्शाता है कि किसी एप्लिकेशन को कुछ करने में बहुत लंबा समय लगा और वॉचडॉग टाइमआउट द्वारा मारा गया।
- 0xdeadfa11 - (डेड फॉल) एक ऐप द्वारा उपयोगकर्ता द्वारा छोड़े जाने पर iOS क्रैश लॉगिंग द्वारा उपयोग किया जाता है।
- 0xDEADD00D - एक वीएम एबॉर्ट को इंगित करने के लिए एंड्रॉइड द्वारा उपयोग किया जाता है।
- 0xDEAD10CC (डेड लॉक) का उपयोग iOS क्रैश लॉगिंग द्वारा किया जाता है जब कोई एप्लिकेशन बैकग्राउंड में किसी संसाधन को लॉक करता है।
- 0xBAADF00D (खराब खाद्य) द्वारा उपयोग किया जाता है LocalAlloc डिबगिंग के लिए विंडोज में कार्य करते हैं।
- 0xCAFED00D (कैफ़े दोस्त) जावा के pack200 संपीड़न द्वारा उपयोग किया जाता है।
- संकलित वर्ग फ़ाइलों के लिए पहचानकर्ता के रूप में जावा द्वारा प्रयुक्त 0xCAFEBABE (कैफे बेब)
- पर Nintendo द्वारा प्रयुक्त 0x0D15EA5E (रोग) Gamecube और Wii इंगित करने के लिए एक सामान्य बूट हुआ।
- द्वारा उपयोग किया गया 0x1BADB002 (1 खराब बूट) मल्टीबूट एक जादू की संख्या के रूप में विनिर्देश
- 0xDEADDEAD - Windows द्वारा इंगित करने के लिए उपयोग किया जाता है a मैन्युअल रूप से आरंभ डिबग क्रैश , अन्यथा ब्लू स्क्रीन ऑफ डेथ के रूप में जाना जाता है।
ये केवल वहाँ से बाहर नहीं हैं, ज़ाहिर है, लेकिन उदाहरणों की एक छोटी सूची जो मज़ेदार लग रही थी। किसी और का पता है? हमें टिप्पणियों में बताएं।
खुद के लिए उदाहरण देखना
आप एक हेक्स संपादक खोलकर और फिर किसी भी प्रकार की फ़ाइल प्रकार खोलकर अधिक उदाहरण देख सकते हैं। विंडोज, ओएस एक्स या लिनक्स के लिए बहुत सारे फ्रीवेयर हेक्स संपादक उपलब्ध हैं - बस सुनिश्चित करें कि आप फ्रीवेयर स्थापित करते समय सावधान रहें बकवास या स्पाइवेयर से संक्रमित होने के लिए नहीं।
एक अतिरिक्त उदाहरण के रूप में, क्लॉकवर्कमॉड जैसे एंड्रॉइड फोन के लिए रिकवरी इमेज "ANDROID!" से शुरू होती है। अगर ASCII प्रारूप में पढ़ा जाता है।
ध्यान दें: जब भी आप चारों ओर देख रहे हों, तब तक कुछ भी न बदलें। हेक्स संपादक चीजों को तोड़ सकते हैं!