SOCKS5 ataka-eremuak sareko byte-ordenean dauden bi byte sinatu gabeak dira: byte esanguratsuena doa lehenengo. Go-n, kodetu zuzenean dagoeneko baliozkotutako uint16 bat:

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

Inportatu encoding/binary. 1080 atakarentzat, lortutako byte hexadezimalak 04 38 dira. 4 atakarentzat, berriz, 00 04 dira; hasierako zeroa zabalera finkoko eremuaren parte da.

Sarrera zenbaki oso handiago edo kate gisa hasten bada, baliozkotu bere tarte numerikoa uint16 bihurtu aurretik. Bihurketak bit altuak bazter ditzake, tarteaz kanpoko balio baten berri eman beharrean.

SOCKS5 erantzun batean, serializatu BND.PORT, hau da, zerbitzariaren ataka lotuaren eremua. Ez kopiatu eskatutako helmugako ataka eremu horretara, biok bi byte hartzen dituztelako soilik. Jarri kodetutako eremua erantzunaren helbidearen ondoren; haren luzera ATYP-ren araberakoa da.

Erlazionatutako artikuluak