परिचय
एक हेक्स डंप डेटा का हेक्साडेसिमल दृश्य है। प्रोग्राम को डिबग करने या प्रोग्राम को रिवर्स करने के लिए आप हेक्साडेसिमल का उपयोग करना चाह सकते हैं।
उदाहरण के लिए, कई फ़ाइल स्वरूपों में उनके प्रकार को इंगित करने के लिए विशिष्ट हेक्स वर्ण होते हैं। यदि आप किसी प्रोग्राम का उपयोग करके फ़ाइल पढ़ने की कोशिश कर रहे हैं और किसी कारण से यह सही ढंग से लोड नहीं हो रहा है, तो हो सकता है कि फ़ाइल उस प्रारूप में न हो जो आप उम्मीद कर रहे हैं।
यदि आप देखना चाहते हैं कि कोई प्रोग्राम कैसे काम करता है और आपके पास स्रोत कोड या सॉफ़्टवेयर का टुकड़ा नहीं है जो इंजीनियरों को कोड को उलट देता है, तो आप क्या हो रहा है, कोशिश करने और काम करने के लिए हेक्स डंप देख सकते हैं।
हेक्साडेसिमल क्या है?
कंप्यूटर बाइनरी में सोचते हैं। प्रत्येक चरित्र, संख्या, और प्रतीक को बाइनरी या एकाधिक बाइनरी मानों द्वारा संदर्भित किया जाता है।
हालांकि, मनुष्य दशमलव में सोचते हैं।
हजारों | सैकड़ों | दसियों | इकाइयों |
1 | 0 | 1 | 1 |
इंसानों के रूप में, हमारी सबसे कम संख्या को इकाइयों कहा जाता है और संख्या 0 से 9 तक दर्शाता है। जब हम 10 तक पहुंचते हैं तो हम इकाइयों के कॉलम को 0 पर रीसेट कर देते हैं और दस कॉलम (10) में 1 जोड़ते हैं।
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
बाइनरी में, सबसे कम संख्या केवल 0 और 1 का प्रतिनिधित्व करती है। जब हम पिछले 1 प्राप्त करते हैं तो हम 1 के कॉलम में 1 और 1 कॉलम में 0 डालते हैं। जब आप 4 का प्रतिनिधित्व करना चाहते हैं तो आप 4 कॉलम में 1 डाल दें और 2 और 1 के कॉलम को रीसेट करें।
इसलिए 15 का प्रतिनिधित्व करने के लिए आपके पास 1111 होगा जो 1 आठ, 1 चार, 1 दो और 1 एक के लिए खड़ा होगा। (8 + 4 + 2 + 1 = 15)।
यदि हमने बाइनरी प्रारूप में डेटा फ़ाइल देखी है तो यह समझने के लिए बिल्कुल विशाल और लगभग असंभव होगा।
बाइनरी से अगला कदम ऑक्टल है, जो आधार संख्या के रूप में 8 का उपयोग करता है।
24 | 16 | 8 | 1 |
0 | 1 | 1 | 0 |
एक ऑक्टल सिस्टम में पहला कॉलम 0 से 7 तक जाता है, दूसरा कॉलम 8 से 15 होता है, तीसरा कॉलम 16 से 23 और चौथा कॉलम 24 से 31 और इसी तरह होता है। जबकि आमतौर पर बाइनरी से पढ़ने के लिए अधिकतर लोग हेक्साडेसिमल का उपयोग करना पसंद करते हैं।
हेक्साडेसिमल आधार संख्या के रूप में 16 का उपयोग करता है। अब यह वह जगह है जहां यह भ्रमित हो जाता है क्योंकि इंसानों के रूप में हम संख्याओं के बारे में 9 से 9 तक सोचते हैं।
तो 10, 11, 12, 13, 14, 15 के लिए क्या उपयोग किया जाता है? जवाब पत्र है।
- 0 = 0
- 1 = 1
- 2 = 2
- 3 = 3
- 4 = 4
- 5 = 5
- 6 = 6
- 7 = 7
- 8 = 8
- 9 = 9
- 10 = ए
- 11 = बी
- 12 = सी
- 13 = डी
- 14 = ई
- 15 = एफ
इसलिए मूल्य 100 को 64 द्वारा दर्शाया गया है। आपको 16 में से 6 कॉलम की आवश्यकता होगी जो यूनिट कॉलम में 96 और फिर 4 लाता है।
फ़ाइल में सभी वर्णों को हेक्साडेसिमल मान द्वारा दर्शाया जाएगा। इन मानों का अर्थ फ़ाइल के प्रारूप पर निर्भर करता है। फ़ाइल का स्वरूप हेक्साडेसिमल मानों द्वारा इंगित किया जाता है जो आमतौर पर फ़ाइल की शुरुआत में संग्रहीत होते हैं।
फ़ाइलों की शुरुआत में दिखाई देने वाले हेक्साडेसिमल मानों के अनुक्रम के ज्ञान के साथ, आप मैन्युअल रूप से कार्य कर सकते हैं कि फ़ाइल किस प्रारूप में है। हेक्स डंप में फ़ाइल देखना आपको छुपे हुए वर्ण ढूंढने में मदद कर सकता है जो फ़ाइल नहीं होने पर दिखाए जाते हैं एक सामान्य पाठ संपादक में लोड किया गया।
लिनक्स का उपयोग कर हेक्स डंप कैसे बनाएं
लिनक्स का उपयोग करके हेक्स डंप बनाने के लिए हेक्सडम्प कमांड का उपयोग करें।
एक फ़ाइल को टर्मिनल (मानक आउटपुट) में हेक्स के रूप में प्रदर्शित करने के लिए निम्न आदेश चलाएं:
हेक्सडम्प फ़ाइल नाम
उदाहरण के लिए
हेक्सडम्प image.png
डिफ़ॉल्ट आउटपुट लाइन नंबर (हेक्साडेसिमल प्रारूप में) और फिर प्रति पंक्ति 4 हेक्साडेसिमल मानों के 8 सेट प्रदर्शित करेगा।
उदाहरण के लिए:
00000000 5089 474e 0a0d 0a1a 0000 0d00 4849 5244
आप डिफ़ॉल्ट आउटपुट को बदलने के लिए विभिन्न स्विच की आपूर्ति कर सकते हैं। उदाहरण के लिए, माइनस बी स्विच निर्दिष्ट करने के बाद 8 अंकों के ऑफसेट का उत्पादन होगा, इसके बाद 16 तीन स्तंभ, शून्य भरे, ऑक्टेट प्रारूप में इनपुट डेटा के बाइट्स होंगे।
hexdump -b image.png
इसलिए उपर्युक्त उदाहरण अब निम्नानुसार प्रदर्शित किया जाएगा:
00000000 211 120 116 107 015 012 032 012 000 000 000 015 111 110 104 122
उपरोक्त प्रारूप को एक बाइट ऑक्टल डिस्प्ले के रूप में जाना जाता है।
फ़ाइल को देखने का एक और तरीका माइनस सी स्विच का उपयोग करके एक-बाइट वर्ण डिस्प्ले में है।
hexdump -c image.png
यह फिर ऑफसेट प्रदर्शित करता है लेकिन इस बार सोलह स्पेस से अलग, तीन स्तंभ, प्रति पंक्ति इनपुट डेटा के स्पेस भरे वर्णों के बाद।
अन्य विकल्पों में कैनोनिक हेक्स + एएससीआई डिस्प्ले शामिल है जिसे माइनस सी स्विच और दो-बाइट दशमलव डिस्प्ले का उपयोग करके प्रदर्शित किया जा सकता है जिसे माइनस डी स्विच का उपयोग करके प्रदर्शित किया जा सकता है। माइनस ओ स्विच का उपयोग दो बाइट ऑक्टल डिस्प्ले को प्रदर्शित करने के लिए किया जा सकता है। आखिरकार मिनक्स एक्स स्विच का उपयोग दो-बाइट हेक्साडेसिमल डिस्प्ले को प्रदर्शित करने के लिए किया जा सकता है।
हेक्सडम्प-सी image.png
hexdump -d image.png
hexdump -o image.png
hexdump -x image.png
यदि उपरोक्त में से कोई भी प्रारूप आपकी आवश्यकताओं को अनुरूप नहीं करता है तो प्रारूप निर्दिष्ट करने के लिए शून्य और स्विच का उपयोग करें।
यदि आपको पता है कि डेटा फ़ाइल बहुत लंबी है और आप अपने पहले प्रकार के अक्षर निर्धारित करने के लिए पहले कुछ वर्ण देखना चाहते हैं तो आप यह निर्दिष्ट करने के लिए -n स्विच का उपयोग कर सकते हैं कि हेक्स में कितनी फ़ाइल प्रदर्शित की जाए।
hexdump -n100 image.png
उपरोक्त आदेश पहले सौ बाइट प्रदर्शित करता है।
अगर आप फ़ाइल के एक हिस्से को छोड़ना चाहते हैं तो आप से शुरू करने के लिए ऑफ़सेट सेट करने के लिए माइनस स्विच का उपयोग कर सकते हैं।
hexdump -s10 image.png
यदि आप फ़ाइल नाम की आपूर्ति नहीं करते हैं तो पाठ मानक इनपुट से पढ़ा जाता है।
बस निम्न आदेश दर्ज करें:
hexdump
फिर मानक इनपुट में टेक्स्ट दर्ज करें और छोड़ने के द्वारा समाप्त करें। हेक्स मानक आउटपुट में प्रदर्शित किया जाएगा।
सारांश
हेक्सडम्प उपयोगिता स्पष्ट रूप से एक काफी शक्तिशाली उपकरण है और आपको निश्चित रूप से सभी सुविधाओं के साथ पकड़ने के लिए मैन्युअल पृष्ठ को पढ़ना चाहिए।
आउटपुट पढ़ने के दौरान आपको जो भी दिख रहा है उसकी अच्छी समझ की भी आवश्यकता होगी।
मैन्युअल पृष्ठ को देखने के लिए निम्न आदेश चलाएं:
आदमी हेक्सडम्प