
TPUART और Calimero Project सूट के माध्यम से KNX बस पर सुनने और पैकेट से डेटा को Wireshark-संगत फ़ाइल हेक्स डंप में डालने का एक उपकरण।
KNX एक लोकप्रिय बिल्डिंग ऑटोमेशन प्रोटोकॉल है और इसका उपयोग स्मार्ट बिल्डिंग के सेंसर, एक्ट्यूएटर और अन्य घटकों को आपस में जोड़ने के लिए किया जाता है। हमारा KNX Bus Dump टूल Calimero जावा लाइब्रेरी का उपयोग करता है, जिसमें हमने इस टूल के लिए योगदान दिया है, ताकि KNX बस पर भेजे गए टेलीग्राम को रिकॉर्ड किया जा सके। विशेष रूप से, हमारा टूल TPUART कनेक्शन के माध्यम से KNX बस तक पहुँचता है, लेकिन इसे विभिन्न कनेक्शन मीडिया का उपयोग करने के लिए बदला जा सकता है। टेलीग्राम को Wireshark-संगत हेक्स डंप फ़ाइल में डंप किया जाता है। टाइमस्टैम्प प्रदान किए जाते हैं और डेटा विश्लेषण करने और टेलीग्राम की समयरेखा प्रदान करने के लिए UTC समय पर नैनोसेकंड सटीकता के साथ सामान्यीकृत किए जाते हैं। हेक्स डंप फ़ाइल को Wireshark में आयात किया जा सकता है, जिसे Wireshark के cEMI डिसेक्टर के साथ KNX टेलीग्राम को विच्छेदित करने के लिए कॉन्फ़िगर किया जा सकता है।
हमारे टूल का उपयोग KNX सेंसर, एक्ट्यूएटर और अन्य KNX उपकरणों के प्रोटोकॉल विश्लेषण के लिए किया जा सकता है। उदाहरण के लिए, हमने अपने KNX उपकरणों को समझने के लिए टूल का उपयोग किया और अनियमित KNX टेलीग्राम पाए। यह टूल KNX उपकरणों के सुरक्षा विश्लेषण के लिए भी आदर्श है, क्योंकि यह शामिल प्रोटोकॉल और KNX बस पर भेजे गए डेटा के सभी विवरणों को उजागर करता है।
Tcpdump और Wireshark का उपयोग KNX बस पर भेजे गए टेलीग्राम को डंप करने के लिए नहीं किया जा सकता, क्योंकि हम मूल KNX टेलीग्राम से निपट रहे हैं, TCP/IP पैकेट से नहीं। Wireshark और tcpdump KNXnet/IP पैकेट को डंप कर सकते हैं, जो TCP/IP पैकेट हैं। KNXnet/IP TCP/IP नेटवर्क पर KNX बस को कमांड और डेटा भेजने का एक प्रोटोकॉल है।
यह टूल Calimero Java लाइब्रेरी के साथ काम करने के लिए डिज़ाइन किया गया है और TPUART कनेक्शन के लिए Raspberry Pi 3 या 4 और Raspberry Pi HAT के साथ संगत है।
पर्यावरण को सेटअप करने के लिए यहाँ कुछ गाइड दिए गए हैं:
नोट: आगे के चरण मान लेंगे कि आपने अपने पर्यावरण को इन गाइडों के अनुसार सेटअप किया है।
KNXBusDump.java फ़ाइल को Calimero Project सूट के introduction/src/main/java/ फ़ोल्डर में रखें।
introduction फ़ोल्डर में जाएँ।
प्रोग्राम को चलाने के लिए, आप बस चला सकते हैं:
./gradlew run -Pcalimero.serial.tpuart.maxInterByteDelay=60000 -DmainClass=KNXBusDump
कुछ सामान्य एरर समाधानों के लिए नीचे दिए गए समस्या समाधान गाइड देखें।
अब, बस पर कुछ संदेश प्रसारित होने की प्रतीक्षा करें और डंप किए गए टेलीग्राम KNXBusDump-Telegrams.txt फ़ाइल में होंगे।
Ctrl-C का उपयोग करके टूल को रद्द करें और फ़ाइल अब Wireshark में आयात करके विश्लेषण करने के लिए तैयार है।
Wireshark में, आपके पास हेक्स डंप से पैकेट आयात करने और पैकेट का विश्लेषण करने के लिए एक डिसेक्टर निर्दिष्ट करने की क्षमता है।
Wireshark शुरू करने पर, प्रारंभिक लोडिंग समाप्त होने तक प्रतीक्षा करें। फिर File -> Import From Hex Dump... पर क्लिक करें।
इसे ठीक से पार्स करने के लिए, हमें कुछ टैग के साथ एक रेगुलर एक्सप्रेशन (regex) देने की आवश्यकता है।
^\s*(?<time>\d{4}-\d\d\-\d\dT(\d\d\:){2}\d\d.(\d){6}[Z])\s(?<seqno>\d{6})\s+(?<data>[0-9a-fA-F]*)$
हेक्स डंप फ़ाइल को स्रोत के रूप में चुनें।
नए डायलॉग के तहत, Regular Expression टैब पर जाएँ और regex को बॉक्स में पेस्ट करें।
सुनिश्चित करें कि डेटा एन्कोडिंग Plain hex है 200*16
Timestamp format टेक्स्टबॉक्स में, हमें उस पैटर्न को निर्दिष्ट करने की आवश्यकता है जो टूल द्वारा उत्पन्न होता है।
%Y-%m-%dT%H:%M:%S.%fZ
नोट: टाइमस्टैम्प प्रारूप इसके बिल्कुल समान होना चाहिए। अन्यथा, कोई टाइमस्टैम्प पार्स नहीं किया जाएगा।
Encapsulation अनुभाग के तहत, Encapsulation Type को Wireshark Upper PDU Export में बदलें।
ExportPDU को चेक करें ताकि cemi डिसेक्टर निर्दिष्ट हो सके।
अब आप फ़ाइल आयात कर सकते हैं और टेलीग्राम का विश्लेषण कर सकते हैं।
Wireshark टाइमस्टैम्प:
संबंधित हेक्स डंप फ़ाइल
नोट: हाइलाइट किया गया समय सामान्यीकृत UTC समय है। समय के आगे टाइमज़ोन चाहे जो भी हो, यह हमेशा UTC में सही समय होगा।
विचारणीय बातें:
ये कुछ सामान्य त्रुटियाँ हैं जो इस सेटअप गाइड के साथ इस प्रोग्राम को चलाने पर हो सकती हैं। मैंने उम्मीद के साथ समाधान प्रदान किए हैं कि यह त्रुटि को ठीक कर देगा।
सुनिश्चित करें कि आप सभी कमांड बिल्कुल सही टाइप करें। "Dmainclass" के साथ कमांड चलाने से प्रोग्राम डिफ़ॉल्ट रूप से Discover KNX Servers प्रोग्राम में चला जाएगा। सुनिश्चित करें कि यह "DmainClass" है।
सुनिश्चित करें कि KNXD (यदि आपने इसे इन गाइडों के अनुसार स्थापित किया है) नहीं चल रहा है। यदि इस गाइड का पालन कर रहे हैं, तो KNXD उसी पोर्ट का उपयोग कर रहा होगा और एक समय में केवल एक प्रक्रिया ही सीरियल पोर्ट का उपयोग कर सकती है।
यदि आपने ऊपर से हेक्स डंप फ़ाइलों की सामग्री को कॉपी और पेस्ट किया है, तो आप एक अतिरिक्त न्यू लाइन कैरेक्टर खो सकते हैं। उदाहरण के लिए, "SampleData1.txt" में, GitHub प्रस्तुति डेटा की 4 पंक्तियाँ दिखाती है जबकि वास्तव में यह डेटा की 4 पंक्तियाँ और एक न्यूलाइन कैरेक्टर है। तो एक संभावित विकल्प यह है कि आप आयात कर रही फ़ाइल में डेटा के अंतिम बाइट के बाद बस "Enter" दबाएँ।
इस रिपॉजिटरी में, मैंने Sample-KNXBusDump-Telegrams.txt में नमूना फ़ाइल डेटा प्रदान किया है जिसका उपयोग स्क्रीनशॉट बनाने के लिए किया गया था। बेझिझक इसे Wireshark में आयात करके स्वयं परीक्षण करें।
टूल का परीक्षण इस स्थानीय KNX टेस्टबेड पर किया गया था।
