Proxy pour tous les internautes qui veulent configurer et utiliser un proxy.
Le proxy SOCKS est un protocole réseau qui permet à des applications client-serveur d'employer d'une manière transparente les services d'un pare-feu. SOCKS est l'abréviation du terme anglophone « sockets » et « Secured Over Credential-based Kerberos ».
Une connexion proxy SOCKS v4 normale consiste à échanger les trames TCP suivantes :
Du client vers le serveurs SOCKS
champ 1 : Version du protocole, 1 octet, 0x04 pour cette version
champ 2 : octet de commande, 1 octet:
0x01 = établir un pipe TCP/IP
0x02 = établir une correspondance de port TCP
champ 3 : numéro de port, (sur 2 octets, big endian)
champ 4 : adresse IPv4 (sur 4 octets)
champ 5 : chaîne d'authentification de l'utilisateur (ascii, longueur variable, terminée par un caractère NULL 0x00)
Puis du serveur vers le client
champ 1 : constante 0x0
champ 2 : octet de statut :
0x5a = requête acceptée
0x5b = requête rejetée ou erreur
0x5c = requête échouée car le client n'a pas lancé le démon identd (ou identd n'est pas accessible par le serveur)
0x5d = requête échouée car le service identd du client n'a pas authentifié la chaîne envoyée dans la requête.
champ 3 : 2 octets, ignoré
champ 4 : 4 octets, ignoré
Exemple :
Voici la requête SOCKS qui permet de connecter un client Fred à l'adresse 66.102.7.99:80, dans cet exemple le serveur répond par un "OK" :
Client: 0x04 | 0x01 | 0x00 0x50 | 0x42 0x66 0x07 0x63 | 0x46 0x72 0x65 0x64 0x00
Le dernier champ contient la chaine "Fred\0" en ASCII
Réponse serveur SOCKS : 0x00 | 0x5a | 0xDE 0xAD | 0xBE 0xEF 0xFF 0xFF
Les deux derniers champs contiennent des valeurs arbitraires, que le protocole invite a ignorer.
À partir de ce point toutes les données, envoyées dans ce flux TCP seront transférées sur le port 80 à l'adresse 66.102.7.99
La valeur 0x02 ("bind") pour le deuxième champ de la requête permet l'ouverture de connexions entrantes pour les protocoles tels que le FTP en mode actif.