Comment utiliser le protocole de contrôle Tor en C #?
Je suis en train d'envoyer des commandes à la Tor port de contrôle de programme, afin de rendre l'actualisation de la chaîne. Je n'ai pas été en mesure de trouver des exemples en C#, et ma solution ne fonctionne pas. La demande de fois. J'ai le service en cours d'exécution, et je peux voir qu'il écoute sur le port de contrôle.
public string Refresh()
{
TcpClient client = new TcpClient("localhost", 9051);
string response = string.Empty;
string authenticate = MakeTcpRequest("AUTHENTICATE\r\n", client);
if (authenticate.Equals("250"))
{
response = MakeTcpRequest("SIGNAL NEWNYM\r\n", client);
}
client.Close();
return response;
}
public string MakeTcpRequest(string message, TcpClient client)
{
client.ReceiveTimeout = 20000;
client.SendTimeout = 20000;
string proxyResponse = string.Empty;
try
{
//Send message
StreamWriter streamWriter = new StreamWriter(client.GetStream());
streamWriter.Write(message);
streamWriter.Flush();
//Read response
StreamReader streamReader = new StreamReader(client.GetStream());
proxyResponse = streamReader.ReadToEnd();
}
catch (Exception ex)
{
//Ignore
}
return proxyResponse;
}
Quelqu'un peut repérer ce que je fais mal?
Edit:
La suite de Hans suggestion, il a maintenant supprimé pour une raison quelconque, j'ai essayé d'envoyer "AUTHENTIFIER\n" au lieu de "s'AUTHENTIFIER". Maintenant, je suis de retour d'une erreur de Tor: "551 Invalide chaîne de caractères entre guillemets. Vous devez mettre le mot de passe dans les guillemets." Au moins il y a des progrès.
J'ai ensuite essayé d'envoyer "AUTHENTIFIER \"\"\n", comme il veut, mais il fois lors de l'attente d'une réponse.
Edit:
La commande fonctionne correctement dans le client Telnet Windows. Je n'ai même pas à ajouter les guillemets. Peut pas comprendre ce qui est faux. Peut-être que les guillemets ne sont pas encodés correctement lorsqu'ils sont envoyés?
source d'informationauteur Edgar
Vous devez vous connecter pour publier un commentaire.
Quand j'envoie la AUTHENTIFIER commande, le StreamReader est la lecture de la réponse à la fin, mais il n'y a pas de fin, parce que sur le succès le flux est maintenu ouvert. Alors je l'ai changé de ne lire que la première ligne de la réponse dans ce cas.
Ajouté un autre exemple que j'utilise moi-même ci-dessous. Également ajouté des mesures pour ceux qui voudraient l'installation de Tor qui peut accepter les commandes dans le port de contrôle.
Étapes pour configurer Tor:
tor.exe --hash-password “your_password_without_hyphens” | more
hashedControlPassword 16:3B7DA467B1C0D550602211995AE8D9352BF942AB04110B2552324B2507
. Si vous acceptez votre mot de passe "mot de passe", vous pouvez copier la chaîne ci-dessus.Test de la modification de Tor via Telnet:
tor.exe -f .\torrc-defaults
telnet localhost 9151
autenticate “your_password_with_hyphens”
" Si tout va bien, vous devriez voir "250 OK".SIGNAL NEWNYM
" et vous obtiendrez une nouvelle route, ergo nouvelle IP. Si tout va bien, vous devriez voir "250 OK".setevents circ
" (circuit d'événements) pour activer la sortie de la consolegetinfo circuit-status
" pour voir les circuits de courantProbablement vous à l'aide de Vidalia qui génère un hachage de mot de passe pour le contrôle d'accès au port. Vous avez besoin d'utiliser Tor console application et configurer un fichier torrc.