Egy érvényes proxycím nem tesz érvényessé egy kézzel írt SOCKS-üzenetet. Egy C vagy C++ struktúra küldése olyan kitöltést vagy hosztsorrendű egészeket küldhet, amelyeket a protokoll soha nem kért.

Egy SOCKS5 tartománynévvel végzett CONNECT-kéréshez sorosítsa ezt a sorrendet kifejezetten a metódusegyeztetés és a kiválasztott hitelesítés után:

  1. Verzió, parancs, fenntartott bájt és címtípus
  2. Tartományhossz és tartománybájtok
  3. A kétbájtos célport hálózati bájtsorrendben

A címhosszúságok a SOCKS verziójától és a címtípustól függenek. A rögzített szélességű numerikus mezőknek megadott ábrázolásra van szükségük; a tartománystringek saját hosszkódolással rendelkeznek. A C-string lezáró nem általános utasítás egy nulla hozzáfűzésére a hálózati üzenethez.

Megvalósítási rövidítésEllenőrizendő probléma
32 bites érték hozzárendelése 8 bites mutatón keresztülNem adja ki mind a négy bájtot
Puffer átalakítása nagyobb egész szám mutatójáváAz igazítást és a bájtsorrendet továbbra is kezelni kell
Feltételezni, hogy egy olvasás vagy írás egy üzenetA TCP csak a protokollsorozat egy részét tudja továbbítani

Hasonlítsa össze az egyes mezőket a szándékolt céllal, és kezelje a részleges I/O-t. Két bájt fogadása nem bizonyítja, hogy a teljes válasz megérkezett. E határok vizsgálata megkülönböztetheti a hibás kérést egy olyan kiszolgálótól, amely elutasít egy helyesen leírt kapcsolatot.

Kapcsolódó cikkek