Um cliente SOCKS5 começa com a versão 5 e depois envia a versão 1 durante a autenticação por senha. Isso não é necessariamente um downgrade nem um proxy errado.

A primeira troca negocia o método de autenticação do SOCKS5. Quando usuário/senha é escolhido, a RFC 1929 define uma subnegociação separada cujo campo de versão é 0x01.

Essa solicitação de autenticação inclui comprimentos e bytes para o usuário e a senha. O servidor retorna a versão da subnegociação e um status. Só depois que a autenticação é bem-sucedida o cliente envia a solicitação de destino SOCKS5.

Mantenha as duas trocas separadas ao ler um rastreamento ou implementar um cliente. Repetir 0x05 em toda parte porque o serviço se chama SOCKS5 produz a mensagem de autenticação errada.

Um status de senha bem-sucedido também não significa que o destino solicitado seja permitido. A resposta SOCKS seguinte ainda pode rejeitar essa conexão.

Por fim, este método de usuário/senha não criptografa suas credenciais. O byte de versão identifica um formato de mensagem, não um modo de login criptografado ou mais forte.

Artigos relacionados