बाइनरी फ़ाइल के ऑक्टल या हेक्स डंप की व्याख्या कैसे करें?


14

बाइनरी फ़ाइल में स्ट्रिंग्स और कुछ नंबर हैं, यदि मैं करता हूं od -c filenameया strings filename, मैं स्ट्रिंग्स को ठीक से देख सकता हूं। लेकिन, संख्या के बारे में क्या? वे कुछ अजीब प्रारूप में हैं।

करने के बाद का पाठ od -c filenameइस प्रकार है:

0000000 036 \ 0 032 004 SD \ 0 \ 0 \ 0 \ 0 seq 1
0000020 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ t \ 0 ó 002 3 001
0000040 और \ 0 032 \ f O 2 006 \ 0 \ 0 \ 0 osfus 1
0000060 ó 002 3 001 \ \ r \ 0 \ 0 \ t \ 0 \ 0 @ 3 ×
0000100 233 4 004 \ 0 é 003 \ 0 \ 0 & \ 0 032 \ f O 2 7 \ 0
0000120 \ 0 \ 0 ओसफू 1 ó 002 3 001 é 235
0000140 \ 0 \ 0 035 003 \ 0 @ 3 × 233 \ 004 \ 0 Ñ \ a \ 0 0 0
0000160 ä \ 0 032 \ f O r E \ 0 \ 0 \ 0 osfap 1

इसे कैसे समझें?

मैंने भी कोशिश की hexdump -C filename

आउटपुट इस प्रकार है:

00000000 1e 00 1a 04 53 44 00 00 00 73 65 71 31 31 20 20 | .... SD .... seq1 |
00000010 20 20 00 00 00 00 00 00 00 09 00 f3 02 33 01 | .......... ó.3। |
00000020 26 00 1a 0c 4f 32 06 00 00 6f 73 66 75 73 31 31 | & ... O2 .... osfus1 |
00000030 20 20 f3 02 33 01 ff 0d 00 00 09 00 00 40 33 d7 | ó.3.ÿ ...... @ 3 × |
00000040 9b ba 04 00 e9 03 00 00 26 00 1a 0c 4f 32 37 00 | º..é ... & ... O27 |
00000050 00 00 6f 73 66 65 75 31 20 20 f3 02 33 01 e9 9d | ..osfeu1 ó.3.é. |
00000060 00 00 1d 03 00 40 33 d7 9b ba 04 00 d1 07 00 00 | ..... @ 3 × .Ñ..º ... ... |
00000070 e4 00 1a 0c 4f 72 45 00 00 6f 73 66 61 70 31 | ä ... OrE ... osfap1 |

स्पष्ट करने के लिए, मुख्य फ़ाइल जो एक नियमित फ़ाइल है, जिसमें एक विशेषता थी जो प्रदर्शित कर रही थी कुछ अजीब प्रारूप है, इसलिए हम कच्चे / बाइनरी फ़ाइल को देख रहे हैं।

नियमित फ़ाइल पर ऑक्टल डंप करते हुए, देखने की समस्या को हल किया।

के साथ grep 'id=123' regular_file | head -1 | od -c, मैं यह देखने में सक्षम था कि वहां क्या संख्या थी। मैं 1 की उम्मीद कर रहा था, यह हमें 001 के रूप में दिखा।


4
इसे "व्याख्या" करने के लिए, आपको यह जानना होगा कि यह किस प्रारूप में संग्रहीत है।
केविन

मुझे बताया गया है कि संख्याएं द्विआधारी प्रारूप में हैं, विशेष रूप से द्विआधारी पूर्णांक। क्या यह मेरे सवाल में मदद करता है?

नहीं, कंप्यूटर पर सब कुछ बाइनरी है, आपको फ़ाइल के लेआउट को जानना होगा - जहां प्रत्येक संख्या है, प्रत्येक संख्या का क्या मतलब है। आपको यह फ़ाइल कहां से मिली?
केविन

बस स्पष्ट करने के लिए, मेरे पास सामान्य फ़ाइल है। ] सामान्य फ़ाइल आमतौर पर लॉग पढ़ने के लिए उपयोग की जाती है, लेकिन यह सुनिश्चित करने के लिए कि इसका सही मूल्य है, लेकिन विभिन्न प्रारूप में, हम इस बाइनरी फ़ाइल को देख रहे हैं।

एक "मानक" हेक्स डंप का दाईं ओर आम तौर पर उस डेटा का ASCII प्रतिनिधित्व है। यदि आप इस पाठ को देखते हैं: not textउस ASCII दृश्य में, इसका मतलब यह नहीं है कि यह ASCII उस प्रोग्राम के लिए है जो फ़ाइल पढ़ता है। जैसे। संख्या 7957706749327538292 जब एक 64-बिट थोड़ा-endian अहस्ताक्षरित पूर्णांक के रूप में एन्कोड। ASCII दृश्य में इस तरह दिखता है not text:।
पीटर।।

जवाबों:


4

संख्याओं के संचय के बहुत सारे तरीके हैं - ASCII (जिसमें स्थानीय विशिष्ट रूप हो सकते हैं, जैसे कि 'का उपयोग करना', 'भिन्न भाग को अलग करने के लिए या हजारों समूह के रूप में), बाइनरी पूर्णांक (बिट्स की चर संख्या) / फ्लोट / डबल (सभी) जो एंडियन आर्किटेक्चर के आधार पर भिन्न हो सकता है और क्या सॉफ्टवेयर फ़ाइल को प्रतिनिधित्व को औपचारिक बनाता है), बीसीडी (असम्पीडित, पैक्ड, फिक्स्ड पॉइंट और अन्य वेरिएंट), द्वि-क्वीन कोडित दशमलव ...

कोई मानक नहीं है।


19

कंप्यूटर विज्ञान के लिए मुझे याद रखने वाली पहली चीजों में से एक डेटा + इंटरप्रिटेशन = उपयोगी जानकारी थी । इसका एक आधार यह है कि यदि आप डेटा या व्याख्या याद कर रहे हैं, तो आपके पास कुछ भी नहीं है। डेटा ही आपको यह नहीं बता सकता है कि इसकी व्याख्या कैसे करें। (आपके पास मेटाडेटा हो सकता है जो आपको यह बताता है, लेकिन फिर आपको यह जानना होगा कि मेटाडेटा की व्याख्या कैसे करें )

परिस्थितियों में, मेरा यह सुझाव है:

file filename

अगर यह कुछ इस तरह से आता है:

filename: data

और आपको पूरी तरह से पता नहीं है कि प्रारूप क्या है, यह किस कार्यक्रम से है, इसका उपयोग क्या है, या सामग्री के बारे में कुछ भी है filename, तो आपको संभवतः छोड़ देना चाहिए।

ऑक्टल डंप आउटपुट

od(ऑक्टल डंप) हाइब्रिड टेक्स्ट-एंड-ऑक्टल डंप का उत्पादन करता है। गैर-संख्या में इस तरह के रूप में या तो प्रिंट करने योग्य चरित्र o, s, f, जैसे आदि, या प्रिंट न हो सकने वर्ण \0(ASCII 0, NUL), या \a(ASCII 7, BEL), या संख्याओं आधार 8 में, मानक सी उपसर्ग के साथ 0(जैसे 032= 26 में दशमलव)। आपकी फ़ाइल को 8-बिट बाइट्स की एक धारा के रूप में व्याख्या की गई है ।

हेक्स डंप आउटपुट

hexdumpएक हेक्साडेसिमल में 8-बिट बाइट्स को सूचीबद्ध करने वाले एक कॉलम के साथ एक पारंपरिक हेक्स डंप का उत्पादन होता है, दूसरा यह दिखाता है कि इन बाइट्स में कौन-सा ASCII अक्षर हैं, यदि कोई हो (यदि बाइट मान गैर-मुद्रण योग्य ASCII वर्ण है, या ASCII वर्ण बिल्कुल नहीं है , .उस स्थिति में दिखाया गया है)। दोबारा, आपकी फ़ाइल को 8-बिट बाइट्स की एक धारा के रूप में व्याख्या की गई है ।

पूर्णांकों

यदि आपकी फ़ाइल में 100% बाइनरी पूर्णांक शामिल हैं (जैसे कि किसी प्रकार के पूर्णांक निरूपण का एक शीर्षकहीन, एक समान, एक आयामी सरणी), तो आपको इन सभी प्रश्नों का उत्तर देना होगा:

संभवत: मैं अभी भूल रहा हूं।

और यह कंप्यूटर के एक सामान्य, आधुनिक वास्तुकला से आने वाले पूर्णांक के एकल आयामी समान सरणी के लिए है। यदि आपके डेटा में किसी भी प्रकार की जटिलता है, तो चीजें बहुत बालों वाली होने जा रही हैं, यह लॉटरी को जीतने के लिए प्रारूप का अनुमान लगाने की तुलना में जल्दी से आसान हो जाएगा। और तुम हो , (सही अनुमान लगाने के लिए, लेकिन एक अनुमान) का अनुमान लगाना जब तक आप प्रारूप पता है।

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