2008-10-10 8 views
5

मैं विभिन्न उपकरणों के साथ धारावाहिक संचार के साथ बहुत काम करता हूं, और इसलिए मुझे अक्सर लॉग फ़ाइलों में हेक्स डंप का विश्लेषण करना पड़ता है। वर्तमान में, मैं इसे डंप को देखकर मैन्युअल रूप से करता हूं, प्रोटोकॉल स्पेक को देखता हूं, और परिणाम लिखता हूं। हालांकि, यह थकाऊ और त्रुटि-प्रवण है, विशेष रूप से whem संदेशों में सैकड़ों बाइट होते हैं और इसमें बड़े-एंडियन और छोटे-अंत डेटा, एएससीआईआई, यूनिकोड, संपीड़न, सीआरसी, के मिश्रण होते हैं। । । ।हेक्स डंप को मानव-पठनीय रूप में परिवर्तित करने के लिए कोई जेनेरिक उपयोगिताओं या पुस्तकालय?

मैंने अधिक सामान्य मामलों में सहायता के लिए कुछ पायथन स्क्रिप्ट लिखी हैं। लेकिन इसके साथ निपटने के लिए बहुत से प्रोटोकॉल हैं, और जब तक मुझे पता नहीं है कि मुझे विश्लेषण करने के लिए बहुत सारे डंप होंगे, तब तक कस्टम स्क्रिप्ट लिखने में समय बिताना नहीं समझता है।

मुझे जो कुछ चाहिए वह कुछ प्रकार की उपयोगिता है जो इस गतिविधि को स्वचालित कर सकती है। तो, उदाहरण के लिए, अगर मैं एक शाब्दिक है हेक्स इस तरह डंप:

7e ff 00 7b 00 13 86 04 
00 41 42 43 44 56 ef 7e 

और संदेश स्वरूप का वर्णन किसी प्रकार का, इस तरह:

# Field   Size  Byte Order Output Format 
Flag   1      hex 
Address   1      hex 
Control   1      hex 
DataType  1      decimal 
LineIndex  1      decimal 
PollAddress  2   msb   hex 
DataSize  2   lsb   decimal 
Data   (DataSize)    ascii 
CRC    2   lsb   hex 
Flag   1      hex 

मैं इस तरह आउटपुट प्राप्त चाहते हैं:

Flag   0x7e 
Address   0xff 
Control   0x00 
DataType  123 
LineIndex  0 
PollAddress  0x1386 
DataSize  4 
Data   "ABCD" 
CRC    0xef56 
Flag   0x7e 

हार्डवेयर आधारित प्रोटोकॉल विश्लेषक अक्सर बात इस तरह का करने के लिए फैंसी सुविधाओं है, लेकिन मैं शाब्दिक लॉग फ़ाइलों के साथ काम करने की जरूरत है।

क्या ऐसी कोई उपयोगिता या पुस्तकालय मौजूद है?


कुछ अच्छे उत्तर आ गए हैं क्योंकि मैंने बक्षीस स्थापित किया है। मुझे लगता है कि बक्षीस काम करते हैं!

Wireshark और HexEdit दोनों आशाजनक दिखते हैं; मैं उन पर एक नज़र डालेगा, और जो भी मेरी जरूरतों के अनुरूप है, वह बकाया राशि का पुरस्कार देगा। लेकिन मैं अभी भी अन्य विचारों के लिए खुला हूं।

उत्तर

2

Wireshark पर एक नजर है है खोलने नेटवर्क प्रोटोकॉल पर काफी अच्छा है।

+0

क्या वायरशर्क एक टेक्स्ट लॉग फ़ाइल से एक हेक्स डंप का विश्लेषण कर सकता है, या केवल सामान जो इसे कैप्चर करता है? –

+0

वायर्सहार्क आमतौर पर चीजों को पीसीएपी प्रारूप में होने की अपेक्षा करता है। हालांकि, पीसीएपी डंप प्रारूप में चीजों को लपेटना बहुत मुश्किल नहीं है (कम से कम पीसीएपी डंप रीडर लिखना बहुत मुश्किल नहीं था)। – Vatine

0

मुझे यकीन है कि मैंने सीपीएएन पर ऐसा कुछ देखा है। यदि आप चाहें तो मैं अधिक अस्पष्ट हो सकता हूं। :-)

अद्यतन: यह नहीं आप वास्तव में क्या चाहते हैं, लेकिन Parse::Binary::FixedFormat

+0

उह-ओह, ऐसा लगता है कि मेरे बक्षीस पोस्टिंग ने इस उत्तर के लिए नकारात्मक रेटिंग में वृद्धि की है। –

+0

बाउंटी पोस्ट करने के बाद यह नीचे चला गया, लेकिन इससे मुझे अपडेट पोस्ट कर दिया गया, और फिर यह एक ऊपर चला गया, इसलिए मैं प्रतिनिधि पर सकारात्मक सकारात्मक हूं। –

1

आमतौर पर, मैं बाइनरी फ़ाइलों को "टेक्स्ट-डंप" के रूप में देखने के लिए emacs हेक्सल-मोड का उपयोग करता हूं। जब मुझे अधिक विशिष्ट आउटपुट की आवश्यकता होती है, तो मैं बस आपके जैसा करता हूं और सी ++ में पार्सर लिखता हूं।

1

मेरे काम में हम एम्बेडेड हार्डवेयर को नियंत्रित करने के लिए नेटवर्क और सीरियल प्रोटोकॉल डिजाइन कर रहे थे। मैं गलत गड़बड़ पढ़ने और प्रत्येक प्रोटोकॉल के लिए लिपियों को लिखने से थक गया, इसलिए मैंने जो वर्णन किया है, वही करने के लिए मैंने एक लाइब्रेरी लिखी है। आप इसे प्रोटोकॉल का एक टेक्स्ट फ़ाइल विवरण दे सकते हैं, और इसमें सिंगल बिट्स, बिट्स के वैध संयोजनों के बीच चयन करने के लिए रेडियो बटन और बहुत सारे विकल्प होने पर ड्रॉप-डाउन सूचियों के लिए एक गुई सहायक चेक बॉक्स थे। आप डेटा के हेक्स व्यू, प्रत्येक फ़ील्ड के द्विआधारी दृश्य को संपादित कर सकते हैं, या यहां तक ​​कि बिंदुओं पर क्लिक करके फ़ील्ड पर क्लिक कर सकते हैं, और अन्य सभी विचार अपडेट होंगे। यह हमें एक टन बचाया। यह थोड़ा तेज़ और गंदा है, लेकिन अगर मैं अपने नियोक्ता के स्वामित्व में नहीं था तो मैं इसे पोस्ट करूंगा। मुद्दा यह है कि लिखना बहुत मुश्किल नहीं था, और एक बार जब मैं प्रत्येक प्रोटोकॉल के लिए स्क्रिप्ट से दूर चला गया और प्रोटोकॉल के विवरण को समझने वाला एक प्रोग्राम, चीजें बहुत अच्छी थीं। हमने डंप को गलत तरीके से पढ़ने से संबंधित स्क्रू अप को रोक दिया, और नए प्रोटोकॉल जोड़ना तुच्छ हो गया।इसके अलावा प्रोटोकॉल का पाठ विवरण सीधे विकास चश्मा में चला गया ताकि सॉफ़्टवेयर लोगों को पता चले कि हार्डवेयर के साथ क्या करना है। मैं आपको इस पर एक दरार लेने के लिए प्रोत्साहित करता हूं।

2

मुझे लगता है कि आपको एक अच्छे हेक्स संपादक की आवश्यकता है। hexedit पर एक नज़र डालें। मैंने अतीत में मुफ्त संस्करण का उपयोग किया है और यह अच्छा है, लेकिन मुझे नहीं पता कि यह क्या पेशकश करता है जो आप खोज रहे हैं। असल में आप एक संरचना को परिभाषित करने में सक्षम होना चाहते हैं और उसके बाद हेक्स डेटा को डीकोड करने में सक्षम होना चाहते हैं। मुझे लगता है कि एक अच्छा हेक्स संपादक इसका समर्थन करेगा। HexEdit के भुगतान संस्करण या किसी अन्य संपादक के लिए Google की जांच करें; बहुत सारे उपलब्ध हैं।

1

एक संभावित प्रारंभिक बिंदु libPDL, एक सी ++ लाइब्रेरी होगा।

एक और विकल्प NetPDL हो सकता है।

1

आपको इस तरह की सामग्री के लिए Tcl binary आदेशों का उपयोग करना चाहिए। उपरोक्त आपके उदाहरण के लिए शुरुआती बिंदु क्या है। टीसीएल सीखना और स्क्रिप्ट लिखना वाकई आसान है। यदि आप सीरियल कॉम सामान कर रहे हैं तो कम से कम मूल बातें सीखने के लिए आप इसे अपने आप दे देते हैं।

bash$ tclsh 
% binary scan [binary format H* 7eff007b00138604004142434456ef7e] \ 
    H2H2H2ccH4sa4h4H2 \ 
    flag1 addr ctl datatype lineidx polladdr datasize data crc flag2 
10 
% puts "$flag1 $addr $ctl $datatype $lineidx \ 
    $polladdr $datasize $data $crc $flag2" 
7e ff 00 123 0 1386 4 ABCD 65fe 7e 

जब आप अपने बाइट-आदेश सामान आप बाइट्स के आसपास नहीं लेकिन बिट्स बंद था, इसलिए मैं वास्तव में यकीन है कि तुम वहाँ क्या देख रहे थे नहीं कर रहा हूँ। वैसे भी, यह आपको शुरू कर देगा।

1

हेक्स डंप विश्लेषण करने के लिए साल के लिए hexworkshop

पर एक नज़र मैं इसे का उपयोग किया गया है। इसमें एक संरचना व्यूअर है जो आपको डेटा संरचना को सी/सी ++ शैली में परिभाषित करने देता है और फिर उस प्रारूप में डेटा प्रदर्शित करता है।

0

पर कुछ उदाहरण हैं hexdump नामक एक बीएसडी कमांड लाइन उपयोगिता है जो प्रारूप स्ट्रिंग्स (जो बाहरी फ़ाइल में हो सकती है) के उपयोग के माध्यम से करती है। एक परिचय के लिए https://www.suse.com/communities/blog/making-sense-hexdump/ देखें, और उदा। मैनुअल पेज के लिए https://www.freebsd.org/cgi/man.cgi?query=hexdump&sektion=1 (-e और -f विकल्पों पर विशेष ध्यान देने के साथ और शीर्षक वाले अनुभाग)।

संबंधित मुद्दे

 संबंधित मुद्दे