SOCKS5-portfelta er to usignerte byte i nettverksbyteorden: den mest signifikante byten kjem først. I Go kodar du ein allereie validert uint16 direkte:

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

Importer encoding/binary. For port 1080 er dei resulterande heksadesimale bytene 04 38. For port 4 er dei 00 04; ein innleiande null er ein del av feltet med fast breidd.

Viss inndata startar som eit større heiltal eller ein streng, valider det numeriske området før du konverterer til uint16. Konvertering kan kaste høge bit i staden for å rapportere ein verdi utanfor området.

I eit SOCKS5-svar serialiserer du BND.PORT, det bundne portfeltet til tenaren. Ikkje kopier den førespurde målporten inn i det feltet berre fordi begge opptek to byte. Plasser det koda feltet etter adressa til svaret, der lengda avheng av ATYP.

Relaterte artiklar