SOCKS5-poorpoortvelde is twee ongetekende grepe in netwerkbyteorde: die mees beduidende greep kom eerste. In Go kodeer jy 'n reeds gevalideerde uint16 direk:

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

Voer encoding/binary in. Vir poort 1080 is die resulterende heksadesimale grepe 04 38. Vir poort 4 is dit 00 04; 'n voorste nul is deel van die vaste-wydte veld.

As die invoer as 'n groter heelgetal of 'n string begin, valideer sy numeriese bereik voordat jy na uint16 omskakel. Omskakeling kan hoë bisse weggooi eerder as om 'n waarde buite bereik te rapporteer.

In 'n SOCKS5-antwoord, serialiseer BND.PORT, die bediener se vasgemaakte poortveld. Moenie die versoekte bestemmingspoort in daardie veld kopieer net omdat albei twee grepe beslaan nie. Plaas die gekodeerde veld ná die antwoord se adres, waarvan die lengte van ATYP afhang.

Verwante artikels