Mac पर एक binary फ़ाइल कैसे खोलें और पढ़ें
आपके पास एक ऐसी फ़ाइल है जिसका कोई उपयोगी extension नहीं है, या जिसे macOS पहचानता नहीं, एक .bin, एक firmware dump, एक पुराना game save, कुछ ऐसा जो किसी device ने export किया। उस पर डबल-क्लिक करें और या तो कुछ नहीं होता, या यह TextEdit में टूटे हुए अक्षरों की एक दीवार के रूप में खुलती है। आप जानना चाहते हैं कि बिना अनुमान लगाए और बिना फ़ाइल को ही जोखिम में डाले Mac पर एक binary फ़ाइल कैसे खोलें।
डबल-क्लिक करना क्यों काम नहीं करता
macOS किसी फ़ाइल को उसके extension के आधार पर खोलने का तरीका तय करता है और, उसके न होने पर, उसके type का अनुमान लगाता है। Binary फ़ाइलें, वे फ़ाइलें जो text के बजाय कच्चा data संग्रहीत करती हैं, का कोई मानक extension नहीं होता जिसे सिस्टम पहचानता हो, इसलिए macOS या तो उन्हें खोलने से इनकार करता है या उन्हें उस ऐप को सौंप देता है जिसे वह सबसे नज़दीकी समझता है। आमतौर पर वह TextEdit होता है, जो bytes को text के रूप में decode करने की कोशिश करता है और आपको ज़्यादातर अपठनीय प्रतीक दिखाता है जिनके बीच कभी-कभी कोई असली शब्द झलक जाता है।
शोर के बीच वह पठनीय-शब्द वाला असर आपकी कल्पना नहीं है। Binary फ़ाइलों में अक्सर embedded text (फ़ाइल paths, labels, version strings) होता है, भले ही आसपास का data सचमुच binary हो। TextEdit उस सबको text के रूप में render करता है, यही वजह है कि आपको वह आधा-टूटा, आधा-परिचित रूप दिखता है। यह वास्तव में आपको कुछ भी उपयोगी नहीं दिखा रहा, और अगर आप गलती से TextEdit से सहेजते हैं, तो आप फ़ाइल को दूषित कर सकते हैं।
आप वास्तव में क्या चाहते हैं: एक hex दृश्य
एक binary फ़ाइल बस bytes का एक अनुक्रम है, हर एक 0 से 255 तक की संख्या। उसे सुरक्षित रूप से देखने का मानक तरीका एक hex दृश्य है: हर byte को दो-अक्षरों वाले hexadecimal मान (00 से FF) के रूप में दिखाया जाता है, जो एक offset कॉलम (आप फ़ाइल में कहाँ हैं) और एक text कॉलम (वही bytes ASCII के रूप में व्याख्यायित, पठनीय हिस्सों के लिए) के बगल में पंक्तियों में सजे होते हैं। यही एक hex एडिटर आपको देता है, और यही एकमात्र दृश्य है जो आपको किसी format का अनुमान लगाए बिना असली सामग्री दिखाता है।
वहाँ पहुँचने के तीन तरीके
Terminal, xxd या hexdump के साथ। macOS दोनों के साथ आता है। xxd yourfile.bin | less चलाएँ और आपको सीधे Terminal में एक स्क्रॉल करने योग्य hex dump मिलेगा। यह तेज़ है और हमेशा उपलब्ध रहता है, लेकिन यह read-only है, इसमें कोई search नहीं, कोई jump-to-offset नहीं, और कच्चे hex से आगे आप जो देख रहे हैं उसकी कोई व्याख्या नहीं। एक झलक के लिए ठीक, किसी और चीज़ के लिए असहज।
TextEdit या कोई अन्य text एडिटर। मत करें। जैसा ऊपर बताया, यह bytes को text के रूप में decode करता है, जो binary data के लिए गलत नज़रिया है, और अगर यह सहेजी जाए तो फ़ाइल को चुपचाप दूषित करने का असली जोखिम है।
एक समर्पित hex एडिटर। अगर आप पाँच-सेकंड की एक झलक से ज़्यादा कर रहे हैं तो यही सही उपकरण है: एक बड़ी फ़ाइल में स्क्रॉल करना, एक विशिष्ट byte पैटर्न खोजना, एक ज्ञात offset पर jump करना, या यह जाँचना कि bytes का एक टुकड़ा वास्तव में क्या दर्शाता है (एक संख्या, एक तारीख़, एक रंग, किसी अलग encoding में एक string)। Hexter ठीक इसी के लिए बना है। यह हर फ़ाइल को डिफ़ॉल्ट रूप से read-only खोलता है, इसलिए एक अपरिचित binary फ़ाइल को देखने में उसे बदलने का कोई जोखिम नहीं है। फ़ाइलें आकार की परवाह किए बिना तुरंत खुलती हैं, क्योंकि Hexter पूरी फ़ाइल को memory में लोड करने के बजाय माँग पर bytes पढ़ता है।
चरण दर चरण
- फ़ाइल खोलें। इसे Hexter पर खींचें, या File > Open का उपयोग करें। पहले किसी फ़ाइल type का अनुमान लगाने की ज़रूरत नहीं है; Hexter किसी भी चीज़ को कच्ची bytes के रूप में खोलता है।
- लेआउट पढ़ें। बाईं ओर का offset कॉलम आपको बताता है कि आप फ़ाइल में कहाँ हैं। बीच में hex ग्रिड हर byte को दो hex अक्षरों के रूप में दिखाता है। दाईं ओर का text pane वही bytes ASCII के रूप में दिखाता है, फ़ाइल के जिन हिस्सों में असली text है।
- अगर आप पहले से जानते हैं कि कहाँ देखना है तो स्क्रॉल करने के बजाय ⌘J से एक विशिष्ट offset पर jump करें।
- उनका निरीक्षण करने के लिए bytes चुनें। एक श्रेणी चुनने पर Inspector साइडबार में वह data अलग-अलग numeric types (8, 16, 32, या 64-bit integers, signed या unsigned, किसी भी byte order में) के रूप में व्याख्यायित दिखता है। इस तरह आप पता लगाते हैं कि चार bytes एक फ़ाइल आकार हैं, एक timestamp हैं, या कुछ और।
- अगर आप हाथ से स्क्रॉल करने के बजाय एक विशिष्ट string या byte अनुक्रम खोज रहे हैं तो ⌘F से खोजें।
- संपादन तभी सक्षम करें जब आपको वास्तव में कुछ बदलने की ज़रूरत हो। Hexter फ़ाइलों को तब तक read-only रखता है जब तक आप स्पष्ट रूप से संपादन चालू नहीं करते, और तब भी, बदलाव तब तक एक वापस लौटाने योग्य patch परत में रहते हैं जब तक आप सहेजने का चुनाव न करें। बस देखते समय आप जो कुछ भी करते हैं वह मूल फ़ाइल को नहीं छू सकता।
अगर पता चलता है कि फ़ाइल एक ऐसा format है जिसे Hexter संरचनात्मक रूप से पहचानता है, PNG, ZIP, Mach-O, WAV, या SQLite, तो Analyze टैब असली संरचना (chunk सीमाएँ, headers, fields) को कच्ची bytes के साथ parse कर देगा, ताकि आपको केवल hex से ज़्यादा मिले।
यही पूरा वर्कफ़्लो है: खोलें, तीनों कॉलम पढ़ें, जहाँ पहुँचना है वहाँ jump या search करें, और जब आपको जानना हो कि bytes की एक विशिष्ट श्रृंखला वास्तव में क्या मतलब रखती है तो एक selection का निरीक्षण करें। कोई अनुमान नहीं, और जब तक आप न कहें तब तक कुछ भी जोखिम में नहीं।