Il campo USERID di SOCKS4 sul filo
Spiega il campo USERID di SOCKS4 e perché la sua interpretazione dipende dal server anziché dall'autenticazione nome utente/password di SOCKS5.
SOCKS4 include una stringa USERID a lunghezza variabile terminata da un byte nullo. Il server interpreta quell'identificatore secondo la propria politica; il protocollo non lo fa seguire da una sotto-negociazione nome utente/password SOCKS5.
Una richiesta SOCKS4 CONNECT all'indirizzo di documentazione 203.0.113.8, porta 443, con USERID vuoto è:
04 01 01 bb cb 00 71 08 00
Il nono byte, 0x00, termina il campo vuoto. Non è il carattere 0, il cui valore ASCII è 0x30. Ometterlo lascia USERID incompleto.
Cosa si aspetta il server
Un identificatore vuoto può essere appropriato quando il servizio non ne richiede alcuno. Se richiede un identificatore specifico o un altro meccanismo di accesso, seguite la sua politica documentata. Un nome fornito stabilisce l'identità solo se il server lo convalida.
SOCKS4a estende la gestione del nome host di destinazione; non aggiunge l'autenticazione SOCKS5. Un servizio che richiede un account SOCKS5 necessita di un client e di un metodo compatibili. Inserire una password nell'USERID di SOCKS4 non può sostituire quello scambio e può rivelare una credenziale non correlata.
In caso di rifiuto, controllate separatamente la versione SOCKS, la destinazione richiesta e la politica utente.