Kehtiv puhverserveri aadress ei muuda käsitsi kirjutatud SOCKS-sõnumit kehtivaks. C või C++ struktuuri saatmine võib saata polsterdust või hostijärjekorras täisarve, mida protokoll ei nõudnud kunagi.

SOCKS5 domeeninimega CONNECT-päringu jaoks serialiseerige see jada selgesõnaliselt pärast meetodi läbirääkimist ja valitud autentimist:

  1. Versioon, käsk, reserveeritud bait ja aadressitüüp
  2. Domeeni pikkus ja domeeni baidid
  3. Kahebaidine sihtport võrgu baitide järjekorras

Aadresside pikkused sõltuvad SOCKS-i versioonist ja aadressitüübist. Fikseeritud laiusega numbriväljad vajavad ettenähtud esitust; domeeni stringidel on oma pikkuse kodeering. C-stringi lõpetaja ei ole üldine juhis lisada juhtmesõnumile null.

Teostuse otseteeKontrollitav probleem
32-bitise väärtuse omistamine 8-bitise osuti kauduSee ei väljasta kõiki nelja baiti
Puhvri teisendamine suurema täisarvu osutiksJoondust ja baitide järjekorda tuleb siiski käsitleda
Eeldada, et üks lugemine või kirjutamine on üks sõnumTCP saab edastada ainult osa protokolli järjestusest

Võrrelge iga välja kavandatud sihtkohaga ja käsitlege osalist I/O-d. Kahe baidi vastuvõtmine ei tõesta, et kogu vastus saabus. Nende piiride uurimine võib eristada vigast päringut serverist, mis keeldub õigesti kirjeldatud ühendusest.

Seotud artiklid