تخطَّ إلى المحتوى

عزل بيانات RGB في التقاطات USB

سيوضح لك هذا البرنامج التعليمي كيفية فك ترميز بيانات USB لتنفيذ دعم الأجهزة في SignalRGB.

قبل أن نحاول تفسير التقاط بيانات USB، سنرغب في فرزه للعثور على بعض الحزم المحددة.

في Wireshark:

  1. افتح التقاط بيانات USB
  2. انقر على ترويسة ‘Info’ للفرز حسب نوع الحزمة
  3. مرّر حتى تجد نوع URB_INTERRUPT OUT أو SET_REPORT Request

إذا لم تجد أيًا من الأمرين أعلاه، فقد تكون تعمل مع جهاز RAWUSB أو ربما لم تُجرِ الالتقاط بشكل صحيح. إذا كان لديك جهاز RAWUSB، فسترى أوامر URBBULK_OUT أو URB_CONTROL OUT. إذا كان لديك جهاز RAWUSB، فانضم إلى خادم Discord هذا للحصول على مساعدة في التطوير.

الحزم التي سنبحث عنها أولًا هي تلك التي تحتوي على قيم RGB التي ضبطناها عند إجراء التقاطات حزم USB.

ملاحظة: سنتجاهل عمدًا حزم تهيئة الجهاز في الوقت الحالي. فقد تكون مطلوبة لاحقًا.

تأتي البيانات المرسلة في كل حزمة بعد جميع معلومات ترويسة بروتوكول USB. لرؤيتها، سنحتاج إلى العثور على قسم Data Fragment.

  1. حدد حزمة
  2. حدد الحقل HID Data أو وسّع قسم Setup Data وحدد الحقل Data Fragment
  3. يجب أن يؤدي النقر على الحقل أيضًا إلى تمييز قسم البيانات باللون الأزرق أسفل Wireshark
  4. سيُظهر الحقل المحدد أيضًا البيانات المرسلة دون مسافات. كل حرفين يمثلان بايتًا واحدًا في هذا العرض.

ملاحظة: القيم التي ننظر إليها ستكون بالنظام السداسي عشري HEX (الأساس 16)، وهو تنسيق بيانات يمثّل القيم من 0 إلى 255 بالنظام العشري كقيم من 0x00 إلى 0xFF.

نظرًا لأننا ضبطنا الأحمر والأخضر والأزرق على قيمها القصوى في دليل التقاط بيانات USB، فسنبحث عن قيم 0xFF في التقاط الحزم. إذا استخدمت ألوانًا مختلفة في الالتقاط، فستحتاج إلى معرفة لون HEX المحدد المستخدم أو إعادة الالتقاط بألوان معروفة.

عادةً ما تحتوي حزم الإضاءة للجهاز على ترويسة تشير إلى الأمر الذي تخصه الحزمة ومنطقة الإضاءة التي نخاطبها في الجهاز، تليها بيانات RGB، ونادرًا بعض بيانات التذييل مثل المجموع الاختباري CRC.

تتبع بيانات RGB عادةً بضعة تنسيقات يمكننا التحقق منها بالبحث عن الألوان التي ضبطناها في الالتقاط:

  • R, G, B, R, G, B, R, G, B (أحمر -> أخضر -> أزرق -> تكرار)
  • RRR, GGG, BBB (عدة قيم حمراء -> عدة قيم خضراء -> عدة قيم زرقاء -> تكرار)
  • Br, R, G, B (السطوع -> أحمر -> أخضر -> أزرق -> تكرار)

ملاحظة: ستستخدم بعض الأجهزة ترتيبًا مختلفًا للألوان. فبينما يستخدم معظمها RGB، قد تجد أن جهازك يستخدم GBR أو BGR أو تركيبة أخرى.

في حالتنا، القيم التي نبحث عنها ستكون:

  • 0xff, 0x00, 0x00 | 0x00, 0xff, 0x00 | 0x00, 0x00, 0xff (إذا كان الجهاز يستخدم ترتيب الحزمة R,G,B).
  • 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 (إذا كان الجهاز يستخدم ترتيب الحزمة RRR,GGG,BBB).
  • 0xff, 0xff, 0x00, 0x00 | 0xff, 0x00, 0xff, 0x00 | 0xff, 0x00, 0x00, 0xff (إذا كان الجهاز يستخدم ترتيب الحزمة Br,R,G,B)

ملاحظة: الأمثلة أعلاه هي مجرد بعض بنى الحزم الشائعة للأجهزة، وقد لا تنطبق دائمًا. ستحتاج إلى المقارنة والبحث عن أوجه التشابه.

بالتمرير لأسفل عبر الحزم، نجد أن الحزمة 271 في التقاطنا تحتوي على بايتات تبدو مشابهة لبنية الحزمة R,G,B.

ملاحظة: قد تستخدم بعض الأجهزة حزمًا متعددة لضبط الألوان على الجهاز بأكمله. تأكد من النظر إلى الحزم التالية وتأكد من العثور على المكان الذي تتكرر فيه الحزمة الأولى.

سنضع علامة على هذه الحزمة باستخدام وظيفة MARK/UNMARK Packet في Wireshark، ويمكن ذلك بالضغط على المفتاحين CTRL + M في آنٍ واحد أو بالنقر بزر الماوس الأيمن على الحزمة ثم النقر على MARK/UNMARK Packet.

للتأكد من أن هذه الحزمة هي بالفعل إحدى حزم بيانات الألوان، سنواصل التمرير لأسفل بحثًا عن مزيد من الحزم التي تتوافق مع بنية R,G,B. وسنتحقق أيضًا مما إذا كانت هذه الحزم تتبع الترتيب الذي ضبطنا به الألوان في البرنامج الأصلي. هذا هو الوقت المناسب للنظر إلى ترويسات الحزم ومعرفة ما إذا كانت تتغير. إذا كانت تتغير وفق نمط ما، فمن المرجح جدًا أنك ستحتاج إلى حزم متعددة لضبط جميع مصابيح LED في الجهاز.

بالنظر إلى الحزمة 271 والحزمة 273 والحزمة 275 جنبًا إلى جنب، يمكننا أن نرى أن بيانات RGB تبدو باللون الأحمر فقط في الحزمة 271 (0xFF, 0x00, 0x00)، وبالأخضر فقط في الحزمة 273 (0x00, 0xFF, 0x00)، وبالأزرق فقط في الحزمة 275 (0x00, 0x00, 0xFF). وبالنظر إلى بيانات الترويسة فوق قسم RGB، يمكننا أن نرى أن هذه البيانات لا تتغير بين الحزم الثلاث. وهذا يعني على الأرجح أننا نغيّر مناطق الألوان نفسها في هذه الحزم.

  • تجدر الإشارة أيضًا إلى أنه يمكننا استخدام حزم الألوان لتحديد عدد المناطق التي يحتوي عليها الجهاز. يمكننا معرفة ذلك بالتحقق من عدد المرات التي تتكرر فيها قيمنا المعروفة في حزم بيانات RGB. بالنظر إلى المثال أدناه، نرى أن الجهاز يحتوي على 4 مناطق يمكننا مخاطبتها بالتأكيد.

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