SOCKS4 comprend une chaîne USERID de longueur variable terminée par un octet nul. Le serveur interprète cet identifiant selon sa politique ; le protocole ne le fait pas suivre d'une sous-négociation nom d'utilisateur/mot de passe SOCKS5.

Une requête SOCKS4 CONNECT vers l'adresse de documentation 203.0.113.8, port 443, avec un USERID vide est :

04 01 01 bb cb 00 71 08 00

Le neuvième octet, 0x00, termine le champ vide. Ce n'est pas le caractère 0, dont la valeur ASCII est 0x30. L'omettre laisse USERID inachevé.

Ce que le serveur attend

Un identifiant vide peut convenir lorsque le service n'en exige aucun. S'il exige un identifiant particulier ou un autre mécanisme d'accès, suivez sa politique documentée. Un nom fourni n'établit une identité que si le serveur le valide.

SOCKS4a étend la gestion du nom d'hôte de destination ; il n'ajoute pas d'authentification SOCKS5. Un service exigeant un compte SOCKS5 a besoin d'un client et d'une méthode compatibles. Mettre un mot de passe dans le USERID de SOCKS4 ne peut pas remplacer cet échange et peut divulguer un identifiant sans rapport.

En cas de rejet, vérifiez séparément la version de SOCKS, la destination demandée et la politique utilisateur.

Articles similaires