O SOCKS4 inclui uma string USERID de comprimento variável terminada por um byte zero. O servidor interpreta esse identificador conforme sua política; o protocolo não o segue com uma subnegociação de nome de usuário/senha do SOCKS5.

Uma solicitação SOCKS4 CONNECT para o endereço de documentação 203.0.113.8, porta 443, com USERID vazio é:

04 01 01 bb cb 00 71 08 00

O nono byte, 0x00, encerra o campo vazio. Não é o caractere 0, cujo valor ASCII é 0x30. Omiti-lo deixa o USERID incompleto.

O que o servidor espera

Um identificador vazio pode ser adequado quando o serviço não exige nenhum. Se ele exige um identificador específico ou outro mecanismo de acesso, siga sua política documentada. Um nome fornecido estabelece identidade somente se o servidor o validar.

O SOCKS4a amplia o tratamento do nome do host de destino; não adiciona autenticação SOCKS5. Um serviço que exige uma conta SOCKS5 precisa de um cliente e método compatíveis. Colocar uma senha no USERID do SOCKS4 não substitui essa troca e pode revelar uma credencial não relacionada.

Em caso de rejeição, verifique separadamente a versão do SOCKS, o destino solicitado e a política do usuário.

Artigos relacionados