Hexter

एक hex एडिटर क्या है (और आपको वास्तव में कब इसकी ज़रूरत होती है)

किसी ने आपसे कहा “इसे एक hex एडिटर में जाँचो,” या आपने एक hex व्यूअर की खोज की और पूरी तरह यकीन किए बिना यहाँ आ पहुँचे कि यह क्या है। कोई बात नहीं। एक hex एडिटर एक ऐसा प्रोग्राम है जो आपको किसी फ़ाइल की कच्ची सामग्री, byte दर byte, दिखाता है, बजाय इसके कि उसे एक document, एक image, या एक spreadsheet के रूप में व्याख्यायित करने की कोशिश करे। यह ठीक-ठीक देखने के सबसे करीब है कि disk पर क्या संग्रहीत है।

hex ही क्यों, खासकर

एक फ़ाइल, कोई भी फ़ाइल, बस bytes का एक अनुक्रम है, और हर byte 0 से 255 तक की एक संख्या है। आप उन संख्याओं को decimal में दिखा सकते हैं, लेकिन 0 से 255 तक तीन अंकों तक जगह लेता है और साफ़-सुथरे ढंग से पंक्तिबद्ध नहीं होता। आप उन्हें binary में दिखा सकते हैं, लेकिन एक अकेला byte 1 और 0 के आठ अंक होता है, जिसे नज़र से पढ़ना कठिन है। Hexadecimal (base 16, अंक 0-9 और अक्षर A-F का उपयोग करते हुए) समझौता है: हर byte ठीक दो अक्षरों में समा जाता है, 00 से FF तक, इसलिए bytes की एक पंक्ति एक साफ़, पढ़ने योग्य ग्रिड में पंक्तिबद्ध हो जाती है। यही पूरी वजह है कि “hex” मानक है, decimal या binary नहीं। यह एक पठनीयता का चुनाव है, कोई तकनीकी आवश्यकता नहीं।

आप वास्तव में क्या देख रहे हैं

किसी भी फ़ाइल को एक hex एडिटर में खोलें और आपको एक ही data के लिए तीन चीज़ें अगल-बगल दिखेंगी:

एक hex एडिटर के तीन कॉलम का आरेख: offset कॉलम जो फ़ाइल में स्थिति दिखाता है, hex ग्रिड जो हर byte को दो hex अक्षरों के रूप में दिखाता है, और text कॉलम जो वही bytes ASCII के रूप में व्याख्यायित दिखाता है।
वही bytes, तीन तरह से दिखाई गईं: वे कहाँ हैं, वे क्या हैं, और वे text के रूप में कैसी दिखेंगी।
  • Offset: आप फ़ाइल में कितनी दूर तक हैं, आमतौर पर hex में ही दिखाया जाता है, ताकि आप बाद में एक विशिष्ट स्थिति पर वापस jump कर सकें।
  • Hex bytes: असली data, प्रति byte दो अक्षर, पंक्तियों में समूहबद्ध (आमतौर पर प्रति पंक्ति 16 bytes)।
  • Text (ASCII) दृश्य: वही bytes अक्षरों के रूप में पुनः व्याख्यायित, फ़ाइल के जिस भी हिस्से में पठनीय text हो। गैर-text bytes आमतौर पर एक बिंदु placeholder के रूप में दिखती हैं।

वह तीसरा कॉलम ही वजह है कि फ़ाइल paths, labels, और version strings अक्सर उन फ़ाइलों में भी दिखाई देते हैं जो ज़्यादातर binary data होती हैं: कोई भी embedded text उस कॉलम में दिखता है, भले ही पूरी फ़ाइल एक text फ़ाइल न हो।

आपको वास्तव में इसकी कब ज़रूरत होगी

अधिकांश लोग एक hex एडिटर खोले बिना अपनी पूरी ज़िंदगी गुज़ार देते हैं, और यह पूरी तरह सामान्य है। जिन स्थितियों में यह सचमुच सही उपकरण है वे विशिष्ट हैं:

  • किसी फ़ाइल का extension उसकी असली सामग्री से मेल नहीं खाता। किसी ने एक .zip का नाम बदलकर .doc कर दिया, या आप सुनिश्चित नहीं हैं कि एक .db फ़ाइल वास्तव में एक डेटाबेस है। अधिकांश formats की पहली कुछ bytes एक विशिष्ट signature होती हैं (PNG 89 50 4E 47 से शुरू होता है, ZIP 50 4B से), और एक hex दृश्य इसे सेकंडों में पुष्टि कर देता है।
  • एक फ़ाइल दूषित है और आप जानना चाहते हैं कैसे। कटा हुआ डाउनलोड, ख़राब ट्रांसफ़र, एक header जो overwrite हो गया। कच्ची bytes देखना आपको बताता है कि क्षति शुरुआत में है, अंत में, या बिखरी हुई।
  • आप कुछ ऐसा debug कर रहे हैं जो binary data पढ़ता या लिखता है, एक save फ़ाइल format, एक config फ़ाइल, एक network protocol, और आपको पुष्टि करनी है कि ठीक-ठीक कौन सी bytes उत्पन्न हो रही हैं।
  • आप एक विशिष्ट मान सत्यापित करना चाहते हैं, जैसे यह पुष्टि करना कि चार bytes वाकई उस फ़ाइल आकार को दर्शाती हैं जिसकी आप उम्मीद करते हैं, या एक timestamp जाँचना, बिना एक black-box उपकरण पर उसे सही व्याख्यायित करने का भरोसा किए।
  • जिज्ञासा। बहुत से लोग एक hex एडिटर बस यह देखने के लिए एक बार खोलते हैं कि एक परिचित फ़ाइल format नीचे से वास्तव में कैसा दिखता है। यह एक पूरी तरह वैध कारण है।

अगर इनमें से कोई भी वह नहीं बताता जो आप कर रहे हैं, तो शायद आपको इसकी ज़रूरत नहीं है, और यह ठीक है। यह एक विशिष्ट तरह के सवाल के लिए एक विशेषज्ञ उपकरण है।

एक hex एडिटर को क्या अच्छा बनाता है, केवल कार्यात्मक नहीं

एक बार जब आपको वाकई एक की ज़रूरत होती है, तो उपकरण ज़्यादातर वही बुनियादी काम करते हैं: bytes दिखाना, आपको स्क्रॉल करने देना, आपको खोजने देना। जो अंतर मायने रखते हैं वे सुरक्षा और स्पष्टता के बारे में हैं, कच्ची विशेषताओं की गिनती के बारे में नहीं। Hex Fiend मुफ़्त, ओपन-सोर्स विकल्प है जिस पर अधिकांश Mac उपयोगकर्ता डिफ़ॉल्ट रूप से पहुँच जाते हैं, और यह सचमुच सक्षम है, खासकर बहुत बड़ी फ़ाइलों के साथ। Hexter एक संकीर्ण, ज़्यादा सतर्क नज़रिया अपनाता है: हर फ़ाइल read-only खुलती है, इसलिए किसी अपरिचित चीज़ को देखने में शून्य जोखिम है, संपादन डिफ़ॉल्ट स्थिति के बजाय एक स्पष्ट, वापस लौटाने योग्य कदम है, और आम फ़ाइल formats (PNG, ZIP, Mach-O, WAV, SQLite) की संरचना आपको headers हाथ से decode करने के लिए छोड़ने के बजाय अपने आप parse कर दी जाती है।

आप कौन सा चाहते हैं यह इस पर निर्भर करता है कि आप क्या कर रहे हैं। अगर आप दो multi-gigabyte फ़ाइलों की byte-दर-byte तुलना कर रहे हैं, तो Hex Fiend की diffing उसी पैमाने के लिए बनी है। अगर आपको बस यह पुष्टि करनी है कि एक फ़ाइल वास्तव में क्या है, कुछ bytes जाँचनी हैं, या मूल को गलती से बर्बाद करने की चिंता किए बिना एक छोटा, सावधान संपादन करना है, तो वही स्थिति है जिसके लिए Hexter बना है।