web-dev-qa-db-fra.com

Comment changer le nœud de sortie Tor par programmation pour obtenir une nouvelle IP?

J'ai Tor en cours d'exécution sur mon ordinateur et je dois changer le nœud de sortie Tor toutes les cinq minutes. Par exemple, si je commence à utiliser Tor via un nœud de sortie, alors dans 5 minutes, je veux que Tor passe à un nœud de sortie avec une adresse IP différente. Comment puis-je faire ceci?

Pour autant que je sache, Tor écoute le port 8051 sur localhost.

Quelles commandes puis-je envoyer à ce port pour que Tor crée une nouvelle chaîne, afin que je puisse obtenir une autre adresse IP?

43
lazybob
(echo authenticate '""'; echo signal newnym; echo quit) | nc localhost 9051
41
kat

Méthode 1: HUP

Sudo killall -HUP tor

Vérifiez ensuite que votre IP a changé avec:

curl --socks5 127.0.0.1:9050 http://checkip.amazonaws.com/

Testé dans Ubuntu 17.10 avec Sudo apt-get install tor version 1.6.0-5.

Sudo est nécessaire car le processus est démarré par root par défaut.

Ce qu'un signal HUP fait exactement pour le démon Tor est documenté à: https://gitweb.torproject.org/torspec.git/tree/control-spec.txt?id=03aaace9bd9459b0d4bf22a75012acf39d07bcec#n394 et est équivalent à l'envoi d'une commande via le port de commande.

Browser Bundle 5.0.5 n'est pas affecté par cela, seuls les ports de démon comme le 9050 par défaut, qui n'est pas utilisé par le TBB. Pour ce cas d'utilisation, voir: https://tor.stackexchange.com/questions/1071/how-can-a-new-circuit-happen-without-closing-all-tabs

Si vous déployez une armée d'IP Tor comme mentionné ici vous pouvez envoyer sélectivement:

kill -HUP $PID

Méthode 2: port de contrôle

Mentionné par kat :

(echo authenticate '""'; echo signal newnym; echo quit) | nc localhost 9051

mais pour que cela fonctionne sur Ubuntu 17.10, vous devez d'abord :

  • activer le port de contrôle en supprimant les commentaires:

    ControlPort 9051
    

    de /etc/tor/torrc

  • Définissez le mot de passe vide, sinon il donne 515 Authentication failed: Wrong length on authentication cookie.. Première exécution:

    tor --hash-password ''
    

    Cela génère quelque chose comme:

    16:D14CC89AD7848B8C60093105E8284A2D3AB2CF3C20D95FECA0848CFAD2
    

    Maintenant sur /etc/tor/torrc mettre à jour la ligne:

    HashedControlPassword 16:D14CC89AD7848B8C60093105E8284A2D3AB2CF3C20D95FECA0848CFAD2
    
  • Redémarrez Tor:

    Sudo service tor restart
    

Bonus: comment vérifier que votre IP a changé

curl --socks5 127.0.0.1:9050 http://checkip.amazonaws.com/

Voir également:

Sujets associés

Cette question semble se poser assez fréquemment ( 1 , 2 ) donc je viens d'ajouter un entrée FAQ pour cela. Comme mentionné précédemment, vous pouvez le faire via un signal NEWNYM. Voici un exemple pour le faire via stem ...

from stem import Signal
from stem.control import Controller

with Controller.from_port(port = 9051) as controller:
  controller.authenticate()
  controller.signal(Signal.NEWNYM)
8
Damian

ouais, c'est 1 (je veux dire = vrai =))) que tor change ip toutes les 10 minutes mais! si je redémarre tor - j'obtiendrai un nouvel ip même dans cet intervalle de 10 minutes. donc je pensais à faire tor pour envoyer cette demande "change_ip" manuellement. voir ce code (écrit selon http://en.linuxreviews.org/HOWTO_use_the_Internet_anonymously_using_Tor_and_Privoxy )

procedure ChangeIp;
var
  sck:TIdTCPClient;
begin
  sck:=TIdTCPClient.Create(nil);
  try
    sck.Host:='127.0.0.1';
    sck.Port:=10051;
    sck.Connect;
    sck.SendCmd('authenticate','');
    if sck.LastCmdResult.Code='250' then
    begin
      sck.SendCmd('signal newnym','');
    end;
  finally
    sck.Free;
  end;
end;

et accornig à [ https://tor-svn.freehaven.net/svn/torctl/trunk/doc/howto.txt] je peux écrire un contrôleur qui changera la conf de tor à la volée. par défaut, il n'est pas activé (je veux dire cette capacité), mais je peux faire en sorte que le client tor écoute un port pour accepter des commandes en utilisant torrc ... si je ne me trompe pas ... encore une fois =)

!!! où l'enfer torrc est sur mon PC?

Dans C:\Users\geekman\AppData\Roaming\Tor, je pouvais, mais je me suis procuré Vista.

8
lazybob

J'ai créé un script Shell pour moi qui vous permet également de le faire à distance (si le serveur Tor fonctionne sur une autre machine).

Il est disponible ici: https://Gist.github.com/kirelagin/96679 .

4
kirelagin

Vous n'avez aucun contrôle sur le routage dans le réseau tor (si vous l'aviez fait, quelqu'un pourrait abuser de cette fonctionnalité). Mais tor change déjà l'itinéraire toutes les 10 minutes environ (du moins selon le article Wikipedia allemand ).

3
Aaron Digulla

Vous pouvez simplement taper ou insérer dans votre script bash:

service tor reload
2
Liam

Advtor vous donne accès à presque tous les paramètres avancés qui fonctionnent sur le réseau tor.

1
Cyril

J'ai fait quelque chose de différent ici ... j'ai écrit un programme PHP qui peut communiquer avec Linux Shell. Le programme redémarrerait à intervalles réguliers.

Ainsi, lorsque tor est redémarré, il obtient une nouvelle adresse IP .... Ouais ..... !!

exec("/etc/init.d/tor restart",$ioOut);
print_r($ioOut); //output from Shell after executing the command
sleep(25);

Vous pouvez également écrire un script Shell pour ce faire.

Je suis maintenant à la recherche d'une option Windows pour ce faire. Le problème est .. dans Windows Tor est un service qui ne peut pas être redémarré.

0
Clain Dsilva

J'ai écrit une bibliothèque pour contrôler Tor avec PHP. Il est installable avec Composer et permet de changer le nœud de sortie.

Bien sûr, c'est un logiciel gratuit: http://dunglas.fr/2013/02/php-torcontrol-a-library-to-control-tor/

0
Kévin Dunglas