عنوان وكيل صالح لا يجعل رسالة SOCKS المكتوبة يدويًا صالحة. إرسال هيكل C أو C++ قد يرسل حشوًا أو أعدادًا صحيحة بترتيب المضيف لم يطلبها البروتوكول قط.

لطلب SOCKS5 من نوع CONNECT باسم نطاق، قم بتسلسل هذا الترتيب صراحةً بعد التفاوض على الطريقة وأي مصادقة مختارة:

  1. الإصدار والأمر والبايت المحجوز ونوع العنوان
  2. طول النطاق وبايتات النطاق
  3. منفذ الوجهة المكوَّن من بايتين بترتيب بايتات الشبكة

تعتمد أطوال العناوين على إصدار SOCKS ونوع العنوان. تحتاج الحقول الرقمية ذات العرض الثابت تمثيلها المحدد؛ ولنصوص النطاق ترميز الطول الخاص بها. إن مُنهي سلسلة C ليس تعليمًا عامًا لإضافة صفر إلى رسالة الشبكة.

اختصار في التنفيذمشكلة يجب فحصها
إسناد قيمة 32 بت عبر مؤشر 8 بتلا يُخرج البايتات الأربعة كلها
تحويل مخزن مؤقت إلى مؤشر عدد صحيح أكبرلا تزال المحاذاة وترتيب البايتات بحاجة إلى معالجة
افتراض أن قراءة أو كتابة واحدة رسالة واحدةيمكن لـTCP نقل جزء فقط من تسلسل البروتوكول

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

مقالات ذات صلة