
أداة للاستماع على حافلة KNX عبر TPUART ومجموعة مشروع Calimero، ولتفريغ البيانات من الحزم إلى تفريغ سداسي عشري لملف متوافق مع Wireshark.
KNX هو بروتوكول أتمتة المباني الشائع ويُستخدم لربط أجهزة الاستشعار والمحركات والمكونات الأخرى لمبنى ذكي معًا. تستخدم أداة تفريغ ناقل KNX الخاصة بنا مكتبة Calimero Java، والتي ساهمنا فيها من أجل هذه الأداة، لتسجيل البرقيات المرسلة عبر ناقل KNX. على وجه الخصوص، تصل أداتنا إلى ناقل KNX عبر اتصال TPUART ولكن يمكن تغييرها لاستخدام وسائط اتصال مختلفة. يتم تفريغ البرقيات في ملف تفريغ سداسي عشري متوافق مع Wireshark. يتم توفير الطوابع الزمنية وتطبيعها إلى توقيت UTC بدقة نانوثانية لإجراء تحليل البيانات وتوفير خط زمني للبرقيات. يمكن استيراد ملف التفريغ السداسي العشري إلى Wireshark، والذي يمكن تكوينه لتفكيك برقيات KNX باستخدام أداة تفكيك cEMI الخاصة بـ Wireshark.
يمكن استخدام أداتنا لتحليل البروتوكول لأجهزة استشعار KNX والمحركات وأجهزة KNX الأخرى. على سبيل المثال، استخدمنا الأداة لفهم أجهزة KNX الخاصة بنا ووجدنا برقيات KNX غير منتظمة. الأداة مثالية أيضًا لتحليل أمان أجهزة KNX نظرًا لأنها تكشف جميع تفاصيل البروتوكول المعني والبيانات المرسلة عبر ناقل KNX.
لا يمكن استخدام Tcpdump و Wireshark لتفريغ البرقيات المرسلة عبر ناقل KNX لأننا نتعامل مع برقيات KNX أصلية، وليس حزم TCP/IP. يمكن لـ Wireshark و tcpdump تفريغ حزم KNXnet/IP، وهي حزم TCP/IP. KNXnet/IP هو بروتوكول لإرسال الأوامر والبيانات إلى ناقل KNX عبر شبكة TCP/IP.
تم تصميم هذه الأداة للعمل مع مكتبة Calimero Java وهي متوافقة مع Raspberry Pi 3 أو 4 وغطاء Raspberry Pi HAT لاتصال TPUART.
فيما يلي بعض الأدلة لإعداد البيئة:
ملاحظة: ستفترض الخطوات التالية أنك قمت بإعداد بيئتك وفقًا لهذه الأدلة.
ضع ملف KNXBusDump.java في المجلد introduction/src/main/java/ الخاص بمشروع Calimero Suite.
انتقل إلى المجلد introduction.
لتشغيل البرنامج، يمكنك ببساطة تشغيل:
./gradlew run -Pcalimero.serial.tpuart.maxInterByteDelay=60000 -DmainClass=KNXBusDump
راجع دليل استكشاف الأخطاء وإصلاحها أدناه لبعض حلول الأخطاء الشائعة.
الآن، انتظر حتى يتم إرسال بعض الرسائل على الناقل وستكون البرقيات التي تم تفريغها في ملف KNXBusDump-Telegrams.txt.
قم بإلغاء الأداة باستخدام Ctrl-C وأصبح الملف جاهزًا للاستيراد إلى Wireshark لتحليله.
في Wireshark، لديك القدرة على استيراد الحزم من تفريغ سداسي عشري وتحديد أداة تفكيك لتحليل الحزمة.
عند بدء تشغيل Wireshark، انتظر حتى ينتهي التحميل الأولي. ثم انقر فوق File -> Import From Hex Dump...
لتحليل هذا بشكل صحيح، نحتاج إلى إعطائه تعبيرًا منتظمًا مع بعض العلامات.
^\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 والصق التعبير المنتظم في المربع.
تأكد من أن ترميز البيانات هو 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.
