To'g'ri proksi manzili qo'lda yozilgan SOCKS xabarini to'g'ri qilmaydi. C yoki C++ strukturasi yuborilganda protokol hech qachon talab qilmagan to'ldirish yoki host tartibidagi butun sonlar yuborilishi mumkin.

Domen nomli SOCKS5 CONNECT so'rovi uchun usul muzokaralari va tanlangan har qanday autentifikatsiyadan so'ng bu ketma-ketlikni aniq seriyalashtiring:

  1. Versiya, buyruq, zaxiralangan bayt va manzil turi
  2. Domen uzunligi va domen baytlari
  3. Tarmoq bayt tartibida ikki baytli manzil porti

Manzil uzunliklari SOCKS versiyasi va manzil turiga bog'liq. Qat'iy kenglikdagi raqamli maydonlar o'zlarining belgilangan tasvirini talab qiladi; domen satrlarining o'z uzunlik kodlashi bor. C satr tugatuvchisi tarmoq xabariga nol qo'shish bo'yicha umumiy ko'rsatma emas.

Amalga oshirishdagi qisqa yo'lTekshirilishi kerak bo'lgan muammo
8 bitli ko'rsatkich orqali 32 bitli qiymat belgilashU barcha to'rt baytni chiqarmaydi
Buferni kattaroq butun son ko'rsatkichiga aylantirishTekislash va bayt tartibini hali ham boshqarish kerak
Bitta o'qish yoki yozish bitta xabar deb hisoblashTCP protokol ketma-ketligining faqat bir qismini uzatishi mumkin

Har bir maydonni mo'ljallangan manzil bilan solishtiring va qismli I/O ni boshqaring. Ikki bayt olish butun javob kelganini isbotlamaydi. Shu chegaralarni tekshirish buzilgan so'rovni to'g'ri tavsiflangan ulanishni rad etuvchi serverdan ajratishga yordam beradi.

O'xshash maqolalar