MOXA Nport - نظرة داخلية

تعد خوادم جمع بيانات المنفذ التسلسلي MOXA Nport وما شابهها هي المعيار الفعلي في مجال بناء أنظمة إرسال أو استقبال البيانات عبر واجهات RS-232 و RS-485 و RS-422.

عدادات الكهرباء ، والصمامات الخاضعة للرقابة وصمامات البوابة ، ومقاييس التدفق ، وأجهزة استشعار الاهتزاز ، وأجهزة التحكم عن بُعد.

كل ما يمكن أن يولد بيانات أو يمكن التحكم فيه عن بعد وله واجهة RS-232 و RS-485 و RS-422 - يعمل من خلال هذه المحولات.

عادةً ما يكون المعنى العام لاستخدامها كما يلي: إعادة توجيه واجهات RS-232 و RS-485 و RS-422 من خلال شبكة محلية موجودة أو توصيل جهاز أو جهاز به إحدى الواجهات التسلسلية بجهاز كمبيوتر (خادم ، SCADA) عبر Ethernet ، الاتصال بالجهاز وجود واجهة تسلسلية عبر الإنترنت للتحكم عن بعد ، إلخ.

أسعار هذه المحولات ليست عالية جدًا ، ويمكن استعارة الطُرز الأصغر من 100 إلى 200 دولار. ولكن بالنظر إلى أنه يمكن تثبيت المئات أو حتى الآلاف على أي إنتاج تلقائي لهذه الأجهزة ، فإن هناك حلاً صعبًا عن "بدائل الاستيراد" المحلية تلوح في الأفق.

سأحاول مساعدتهم اليوم.

ماذا سنفعل؟

أولاً ، سوف نفهم نظرية كيفية ترتيبها في الداخل.

ثانياً ، نعزل الحد الأدنى من الوظائف لبدء العمل في وضع Real Com (أي ، في الواقع ، لإعادة توجيه منفذ COM الظاهري إلى الجهاز عبر Ethernet).

ثالثًا ، من أجل الاهتمام ، سنقوم بتحليل بروتوكول البحث عن الجهاز وتكوينه من خلال الأداة المساعدة NPort Administration Suite. سوف نتفهم تمامًا كيفية إنشاء تماثلي مثبت من طرف إلى قطعة من الحديد يمكن تعليقه بدلاً من MOXA Nport الحالي ، مع تلقي الدعم الكامل من البرنامج الأصلي وبرنامج التشغيل.

وأخيرًا ، دعونا نحاول حساب عدد الهنود الذين كتبوا رمز البرنامج الثابت MOXA.

الجزء 1. تمهيدية


لذلك ، لدينا موضوع اختبار على طاولتنا (كان هناك العديد منهم في الواقع ، لذلك لا تفاجأ إذا رأيت معرفات طراز مختلفة وعناوين مختلفة MAC في المقالة)



لديه منفذ إيثرنت ومنفذان RS-422 / RS-485 - وهذا مادي.
وفي خطة البرنامج - على الجهاز مفتوحة:
منفذ UDP 4800 - مسؤول عن التقاط حزم بحث الجهاز وإرسال البيانات حول الجهاز نفسه إلى أداة التكوين المساعدة.

منفذ TCP 4900 - يتلقى أوامر تكوين الجهاز. يمكن تهيئة وقت الجهاز والاسم وعنوان IP ووضع التشغيل وإعدادات السرعة والمنفذ والمعلمات الأساسية الأخرى من خلال هذا المنفذ ، والذي يمكن تهيئته من خلال الواجهة الرئيسية للأداة المساعدة NPort Administration Suite:



منفذ TCP 80 - مسؤول عن تشغيل واجهة WEB
منافذ TCP 966 و 967 و (968 و 969 لأربعة منافذ) هي منافذ للتحكم في الإرسال. يقوموا بتشغيل أوامر لفتح / إغلاق منفذ COM المقابل ، وتعيين سرعة المنفذ ، ودفع البيانات ، ومراقبة امتلاء المخزن المؤقت للإرسال / الاستقبال ، إلخ. المنفذ 966 مسؤول عن تشغيل المنفذ الأول ، على التوالي.

منافذ TCP (بشكل افتراضي) 950 و 951 و (و 952 و 953 لأربعة منافذ أجهزة) هي منافذ نقل بيانات مباشرة. بمعنى ، ما يجب أن يظهر مباشرة على منفذ RS-232/485/422 الخاص بالجهاز يتم إرساله إلى منفذ البيانات. ينتقل التحكم في تدفق البيانات فقط في هذا المنفذ إلى 966 ، 967 ، 968 ، 969 ، على التوالي.

آمل أن تكون الصورة العامة لفهم تشغيل الجهاز في رأسي قد تطورت. دعنا ننتقل إلى الجزء التالي:

الجزء 2. محاكاة موكسا


بالتأكيد أصبح من الواضح بالفعل للكثيرين أنه من أجل التظاهر بأنه MOXA Nport في التكوين الأدنى ، من الضروري رفع خادم TCP على أجهزته الخاصة على منفذين: 966 للتحكم في الإرسال و 950 لنقل البيانات المباشر. بطبيعة الحال ، سيتعين عليك الإجابة عن طلبات برنامج التشغيل ومعالجتها بشكل صحيح على المنفذ 966 ، ولكن كما هو موضح في تحليل wireshark ، لا يوجد الكثير من الطلبات وهي أبسطها.

من أجل عدم التحميل الزائد لنص المقالة بالحسابات التي تصف الطلبات والإجابات ، قمت بإعداد ونشر بشكل منفصل في شكل ملف pdf وصفًا لجميع الطلبات التي تم تحليلها والإجابات والمعلمات المنقولة.

تنزيل: وصف بروتوكول تحليل MOXA.pdf
أي أن هذه المجموعة من المعرفة تسمح لك بتطبيق جهاز يمكن إقرانه ببرنامج تشغيل أصلي ونقل البيانات كـ MOXA. يتم نصف العمل ، ولكن هناك نقطة واحدة - كيفية تغيير التكوين؟ سيكون من الرائع استخدام الأداة المساعدة NPort Administration Suite الأصلية لهذه الأغراض.

الجزء 3. البحث والعثور


يصف الجزءان الأولان ما يجب القيام به ، ولكن لم تكن هناك كلمة حول كيفية الحصول على بيانات لتنفيذ البروتوكولات.

في هذا الجزء ، نحفر أعمق قليلاً ونرى كيف تم إجراء تحليل البورصة نفسها.
نعلم أن منفذ UDP 4800 مفتوح على الجهاز ، فلنقم بتوصيل الجهاز وتشغيل NPort Administration Suite و Wireshark ونرى ما يحدث عند البحث عن أجهزة مزودة بأداة مساعدة أصلية.



نحن ننظر إلى الحزم المرسلة:



نرى أن NPort Administration Suite يرسل بثًا إلى العنوان 255.255.255.255 ، أي أنه يأمل أن تنتقل الحزمة عبر الشبكة.

تحتوي حزمة البيانات الفعلية على بيانات:

01 00 00 08 00 00 00 00, : 01 00 –   00 08 –       Big Endian. 00 00 00 00 –   

يتم إرسال هذا الطلب عدة مرات ، على أمل أن يحقق واحد منهم على الأقل الهدف.

تستجيب جميع MOXs لهذا الطلب.



على وجه التحديد ، أجاب لدينا:

  81 00 00 18 00 00 00 00 12 03 00 80 32 03 00 90 e8 26 4a ab c0 a8 7f fe 81 00 –   00 18 –     (24) 00 00 00 00 –   12 03 00 80 32 03 –  MOXA Nport device,    NPort 5232.        MOXA Nport device.          NPort Administrator. 00 90 e8 26 4a ab – MAC  MOXA Nport device c0 a8 7f fe – IP  MOXA Nport device ( 192.168.127.254 ) 

يبدو أن كل شيء بسيط ، يخلط بين القيمة 12 03 00 80 32 03 ، المسؤولة عن تفسير طراز جهاز معين.

ولكن نظرًا لأن هذه القيمة محددة مقابل بعض المراجع المرجعية ، فهذا يعني أنه يجب تخزينها في مكان ما.

بعد دراسة دليل البرنامج قليلاً ، نجد أنه في NPort Administrator Suite v1.22 ، يتم تخزين هذه القيم في الملف C: \ Program Files \ NPortAdminSuite \ bin \ dsci.dll



بعد الجلوس مع Wireshark والجهاز لعدة أيام ، نحصل على سجل تبادل كامل وفهم لرموز الوظائف التي تستجيب. للراحة ، كل ما تم العثور عليه موصوف في نفس ملف pdf ، والذي يشار إليه في المقال سابقًا.

لفهم تام للصورة - سأذكرك فقط بأن UDP 4800 يتلقى معلومات أساسية عن الجهاز ، يتم تكوين جميع المعلمات التي تتطلب التكوين والتثبيت من خلال طلبات منفذ TCP 4900.

بعد معالجة جميع الطلبات الواردة على نحو 4800 و 4900 منفذًا بشكل صحيح ، يمكننا التظاهر تمامًا بأنه جهاز ، لذلك لن يلاحظ البرنامج الأصلي المشكلة.

الجزء 4. عد الهنود *


أثناء تحليل البروتوكول ، كان لدي شعور بأن أجزاء مختلفة من بروتوكول التبادل كتبها أشخاص مختلفون ، ومعنى الوظائف وتفسيرها مختلف للغاية.

لذلك على سبيل المثال:

تبدأ رموز وظائف منفذ UDP 4800 بـ:

  01 00 .. ..  81 00 .. ..  10 00 .. ..  90 00 .. ..  16 00 .. ..  96 00 .. ..  29 00 .. ..  a9 00 .. .. 

تبدأ رموز وظائف منفذ TCP 4900 بـ:

  00 01 .. ..  00 01 .. ..  02 01 .. ..  02 01 .. .. 

و هكذا

تبدأ منافذ TCP 966 و 967 و 968 و 969 برموز:

  10 .. ..  10 4f 4b  11 .. ..  11 4f 4b 

و هكذا

بمعنى أنه يتم استخدام معرف بايت واحد للدالة وليس بايت مزدوج كما كان من قبل.
ثم ، بالمناسبة ، خرجت لحظة مضحكة. في المنافذ 966 و 967 و 968 و 969 ، تتكون الاستجابة لمعلمات الإعداد دائمًا من 3 بايت.

الأول هو رقم الوظيفة ، والثاني المتبقي هو 4f 4b أو هل هناك نظرة في جدول ASCII - "O" "K"

حسنا حسنا معه ، والمضي قدما.

الميزة الثانية التي شوهدت هي تجزئة كبيرة و Little Endian ضمن نفس الاستجابة.

الإجابة على سبيل المثال:

 9a 00 00 24 00 00 00 00 01 52 00 80 9a 52 00 90 e8 3b 89 9c 75 00 04 00 01 00 0f 00 09 00 17 00 36 00 00 00 9a 00 –   00 24 –     (36) 00 00 00 00 –   01 52 00 80 9a 52 –  MOXA Nport device 00 90 e8 3b 89 9c - MAC  MOXA Nport device 75 00 - : 1900 +   (1900 + 117 = 2017) 04 00 - :     1 -     01 00 –   0f 00 –  (15) 09 00 –  (9) 17 00 –  (23) 36 00 –  (36) 00 00 –   

يتم تشفير حجم الرزمة بطريقة واحدة ، وجميع القيم العددية (السنة والشهر واليوم ...) بطريقة أخرى. من هذا يمكننا أن نستنتج أن معالجة جزء المستخدم الذي يبدأ من 75 00 04 00 ....... كتبه مبرمج آخر.

للتلخيص: قام ثلاثة أشخاص على الأقل بكتابة بروتوكول التبادل ، وكتب 1 معالجة جزء المستخدم من البيانات ، وكتب واحد على الأقل معالج واجهة WEB. وفقًا لحساباتي ، عمل حوالي 5 مبرمجين في المشروع.
كم كنت تحسب؟

* في هذه الحالة ، يشير مصطلح "Hindu" إلى الموظف الذي يقوم بواجباته فيما يتعلق بالطعام والرهون العقارية ، وهو قادر على الترميز من هنا وقبل الغداء دون الخوض في الخطط العالمية لشركة صاحب العمل.

ملحوظة: كُتِب هذا المقال على المواد التي كانت قيد التطوير في عام 2017 ، حيث تحتوي الكثير من البيانات على مواعدة محددة بدقة هذا العام. تم فحص البروتوكولات في إطار مسودة العمل ، ولكن بما أن العقل قد فاز على التسويق ولم تتجاوز المسألة مرحلة النموذج الأولي للعمل. أنشر جميع التطورات في هذا المشروع في المجال العام ، حيث أعتقد أن هذه المعلومات ستكون مفيدة لمجتمع المطورين.

PPS المقال الأصلي كما هو الحال دائما على مدونتي الشخصية

Source: https://habr.com/ru/post/ar478642/


All Articles