Encoder les ports SOCKS5 en Go sur deux octets big-endian
Utilisez les assistants binary.BigEndian de Go pour les champs de port SOCKS5 au lieu de découper une chaîne binaire de longueur variable.
Les champs de port SOCKS5 sont deux octets non signés dans l'ordre des octets réseau : l'octet de poids fort vient en premier. En Go, encodez directement un uint16 déjà validé :
var field [2]byte
binary.BigEndian.PutUint16(field[:], port)Importez encoding/binary. Pour le port 1080, les octets hexadécimaux obtenus sont 04 38. Pour le port 4, ce sont 00 04 ; le zéro de tête fait partie du champ à largeur fixe.
Si l'entrée commence comme un entier plus grand ou une chaîne, validez sa plage numérique avant de la convertir en uint16. La conversion peut écarter les bits de poids fort au lieu de signaler une valeur hors plage.
Dans une réponse SOCKS5, sérialisez BND.PORT, le champ de port lié du serveur. Ne recopiez pas le port de destination demandé dans ce champ simplement parce que les deux occupent deux octets. Placez le champ encodé après l'adresse de la réponse, dont la longueur dépend de l'ATYP.