SOCKS5 pordiväljad on kaks märgita baiti võrgu baidijärjestuses: kõige olulisem bait tuleb esimesena. Go-s kodeerige juba valideeritud uint16 otse:

var field [2]byte
binary.BigEndian.PutUint16(field[:], port)

Importige encoding/binary. Pordi 1080 jaoks on tulemuseks hex-baidid 04 38. Pordi 4 jaoks on need 00 04; eesmine null on fikseeritud laiusega välja osa.

Kui sisend algab suurema täisarvuna või stringina, valideerige selle arvuline vahemik enne uint16-ks teisendamist. Teisendus võib kõrged bitid kõrvale jätta, selle asemel et teatada vahemikust väljuvast väärtusest.

SOCKS5 vastuses serialiseerige BND.PORT, serveri seotud pordi väli. Ärge kopeerige taotletud sihtporti sellesse välja ainult seetõttu, et mõlemad hõivavad kaks baiti. Asetage kodeeritud väli vastuse aadressi järele, mille pikkus sõltub ATYP-ist.

Seotud artiklid