2008-09-29 15 views
14

मान लीजिए कि मेरे पास अंत में 16-बिट चेकसम के साथ कुछ पैकेट हैं। मैं अनुमान लगाऊंगा कि कौन से चेकसम एल्गोरिदम का उपयोग किया जाता है।मैं चेकसम एल्गोरिदम का अनुमान कैसे लगा सकता हूं?

शुरुआत के लिए, डंप डेटा से मैं देख सकता हूं कि पैकेट के पेलोड में एक बाइट परिवर्तन पूरी तरह से चेकसम बदलता है, इसलिए मैं मान सकता हूं कि यह किसी प्रकार का सरल एक्सओआर या योग नहीं है।

फिर मैंने several variations of CRC16 की कोशिश की, लेकिन बिना किस्मत के।

यह प्रश्न क्रिप्टोग्राफी की ओर अधिक पक्षपातपूर्ण हो सकता है, लेकिन मुझे यह पता लगाने के लिए सांख्यिकीय उपकरण को समझने में कोई दिलचस्पी है कि यह कौन सी सीआरसी हो सकती है। यदि सब कुछ विफल हो जाता है तो मैं drawing different CRC algorithms पर भी जा सकता हूं।

बैकग्राउड कहानी: मेरे पास किसी प्रकार के चेकसम के साथ सीरियल आरएफआईडी प्रोटोकॉल है। मैं बिना किसी समस्या के संदेशों को दोबारा चला सकता हूं, और परिणामों की व्याख्या कर सकता हूं (चेकसम चेक के बिना), लेकिन मैं संशोधित पैकेट नहीं भेज सकता क्योंकि डिवाइस उन्हें फर्श पर छोड़ देता है।

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

dump files with data उपलब्ध हैं, तो अपने आप में सवाल काफी :-)

संदर्भ दस्तावेज़ की आवश्यकता नहीं है?A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS एक अच्छा संदर्भ है जो मुझे यहां प्रश्न पूछने के बाद मिला।

अंत में, मैं used this CRC calculator, और 0xffff जो मुझे इस निष्कर्ष करने के लिए नेतृत्व कि अंतिम XOR CCITT के 0x0000 की 0xffff instread है प्राप्त करने के लिए जाना जाता है चेकसम साथ checksum उत्पन्न xored स्वीकार किए जाते हैं जवाब में बहुत सहायक संकेत की तुलना में यह CCITT है, के बाद।

+0

आप आप चाहते हैं किसी भी डेटा के लिए चेकसम मिल सकता है? –

+0

नहीं, मैं नहीं कर सकता। मैं डेटा का हिस्सा बदल सकता हूं और मौजूदा एप्लिकेशन का उपयोग कर उस के चेकसम उत्पन्न कर सकता हूं जो डिवाइस से बात करता है, लेकिन यह पूरा पैकेट नहीं है। – dpavlin

+0

सीसीआईटीटी के लिए मानक 0x0000 के साथ एक एक्सओआर निर्दिष्ट करता है? क्या वह हमेशा नो-ऑप नहीं है? – unwind

उत्तर

17

अनेक कारकों एक सीआरसी के लिए विचार करने के लिए कर रहे हैं:

Polynomial 
No of bits (16 or 32) 
Normal (LSB first) or Reverse (MSB first) 
Initial value 
How the final value is manipulated (e.g. subtracted from 0xffff), or is a constant value 

ठेठ सीआरसी:

LRC: Polynomial=0x81; 8 bits; Normal; Initial=0; Final=as calculated 
CRC16: Polynomial=0xa001; 16 bits; Normal; Initial=0; Final=as calculated 
CCITT: Polynomial=0x1021; 16 bits; reverse; Initial=0xffff; Final=0x1d0f 
Xmodem: Polynomial=0x1021; 16 bits; reverse; Initial=0; Final=0x1d0f 
CRC32: Polynomial=0xebd88320; 32 bits; Normal; Initial=0xffffffff; Final=inverted value 
ZIP32: Polynomial=0x04c11db7; 32 bits; Normal; Initial=0xffffffff; Final=as calculated 

करने के लिए पहली बात यह कहना आखिरी बाइट बदलकर कुछ नमूने प्राप्त करने के लिए है। यह आपको सीआरसी में बाइट्स की संख्या जानने के लिए सहायता करेगा।

क्या यह एक "घर का बना" एल्गोरिदम है। इस मामले में इसमें कुछ समय लग सकता है। अन्यथा मानक एल्गोरिदम का प्रयास करें।

या तो अंतिम बाइट के एमएसबी या एलएसबी को बदलने का प्रयास करें, और देखें कि यह सीआरसी कैसे बदलता है। यह दिशा का संकेत देगा।

इसे और अधिक कठिन बनाने के लिए, ऐसे कार्यान्वयन हैं जो सीआरसी में हेरफेर करते हैं ताकि यह संचार माध्यम (प्रोटोकॉल) को प्रभावित न करे।

आरएफआईडी के बारे में आपकी टिप्पणी से, इसका तात्पर्य है कि सीआरसी संचार से संबंधित है। आम तौर पर सीआरसी 16 संचार के लिए प्रयोग किया जाता है, हालांकि कुछ सिस्टमों पर सीसीआईटीटी का भी उपयोग किया जाता है।

दूसरी तरफ, यदि यह यूएचएफ आरएफआईडी टैगिंग है, तो कुछ सीआरसी योजनाएं हैं - 5 बिट एक और कुछ 16 बिट वाले। ये आईएसओ मानकों और आईपीएक्स डेटा शीट में दस्तावेज हैं।

IPX: Polynomial=0x8005; 16 bits; Reverse; Initial=0xffff; Final=as calculated 
ISO 18000-6B: Polynomial=0x1021; 16 bits; Reverse; Initial=0xffff; Final=as calculated 
ISO 18000-6C: Polynomial=0x1021; 16 bits; Reverse; Initial=0xffff; Final=as calculated 
    Data must be padded with zeroes to make a multiple of 8 bits 
ISO CRC5: Polynomial=custom; 5 bits; Reverse; Initial=0x9; Final=shifted left by 3 bits 
    Data must be padded with zeroes to make a multiple of 8 bits 
EPC class 1: Polynomial=custom 0x1021; 16 bits; Reverse; Initial=0xffff; Final=post processing of 16 zero bits 

आपका उत्तर यहां है !!!!

आपके लॉग के माध्यम से काम करने के बाद, सीआरसी सीसीआईटीटी एक है। पहला बाइट 0xd6 सीआरसी से बाहर रखा गया है।

+0

धन्यवाद, मैं अभी कोशिश कर रहा हूँ! :-) – dpavlin

+0

मैं धीरे-धीरे अपने बालों को खो रहा हूं (दोबारा)। मैंने अपने डेटा के साथ सीसीआईटीटी का उपयोग करने की कोशिश की, लेकिन यह मेरे लिए काम नहीं करता है। क्या आप कार्यान्वयन का एक स्निपेट साझा कर सकते हैं और/या http://www.zorc.breitbandkatze.de/crc.html या http://www.lammertbies.nl/comm/info/crc-calculation.html – dpavlin

+0

पर सीआरसी को पुन: पेश कर सकते हैं Ignore मैं, अंतिम xor 0x00ff 0x0000 ccitt के साथ नहीं है ... मैंने चेकसम के साथ ccitt चेकसम को एक्सबॉक्स किया है, और यह मुझे सही दिशा में ले जाता है ... – dpavlin

1

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

मैं वास्तव में नहीं देखता कि कोई ऐसा क्यों जानना चाहता है।

+1

मैं देख सकता हूं कि कोई इसे क्यों चाहेगा - अगर वे उन फ़ाइलों को उत्पन्न करने के लिए एक फ़ाइल प्रारूप को रिवर्स इंजीनियरिंग कर रहे हैं। मेंने यह किया है। –

+1

सही। मेरे पास कुछ प्रकार के चेकसम के साथ सीरियल आरएफआईडी प्रोटोकॉल है। मैं बिना किसी समस्या के संदेशों को दोबारा चला सकता हूं, और परिणामों की व्याख्या कर सकता हूं (चेकसम चेक के बिना), लेकिन मैं संशोधित पैकेट नहीं भेज सकता क्योंकि डिवाइस उन्हें फर्श पर छोड़ देता है। – dpavlin

1

यह सीआरसी नहीं हो सकता है, यह रीड-सोलोमन जैसे कोड को सही करने में त्रुटि हो सकती है।

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

+0

सच है, लेकिन संदेश 256 बाइट से नीचे हैं, और चेकसम की बजाय सरल हार्डवेयर डिवाइस पर चेक किया गया है, इसलिए अब मेरा सबसे अच्छा अनुमान यह है कि यह किसी प्रकार का सीआरसी है। – dpavlin

+0

सटीक होने के लिए, मेरा सबसे लंबा संदेश 70 बाइट है। लंबाई से पहले पैकेट में छेद है जो एक बाइट पर संभव लंबाई बढ़ा सकता है, लेकिन मैंने अभी तक 70 बाइट्स से अधिक वास्तविक जीवन संदेश नहीं देखा है। – dpavlin

0

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

वेबसाइट https://defuse.ca/checksums.htm

+0

एक ऐसा है जो संभव हो तो दूसरी तरफ जा सकता है? – CQM

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

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