2012-03-19 4 views
12

Voglio monitorare lo stato delle istanze Tor in esecuzione.Come si ottiene l'indirizzo IP del nodo di uscita Tor sulla porta di controllo?

Sono già in grado di ottenere informazioni tramite una connessione TCP alle porte di controllo. E.g. "GETINFO stream-status" restituisce i dati, ma non sono in grado di determinare l'indirizzo IP del nodo di uscita attualmente selezionato.

Sarebbe possibile richiedere semplicemente qualcosa come whatismyip.org, ma che è troppo lento e non si adatta bene.

Quindi qual è il modo migliore per ottenere l'indirizzo IP del nodo di uscita di una connessione Tor?

+0

Hai trovato una soluzione? – Fluffy

risposta

-1

In base al protocollo di controllo Tor spec, la sintassi corretta è "GETINFO address", che dovrebbe rendere the best guess at our external IP address. Se non abbiamo alcuna ipotesi, restituire un errore 551. (Aggiunto in 0.1.2.2-alpha)".

+4

L'indirizzo GETINFO fornisce il proprio indirizzo IP (cioè l'indirizzo che altre persone vedranno se si sceglie di essere un relay). Ciò che il poster sta chiedendo è l'indirizzo del relè di uscita dei suoi circuiti attuali. – Damian

+0

I circuiti attuali '' circuito informatico getinfo'' costruiti e pronti. Questo conterrà il nome OR (nome del router/hop) e l'ID. Con questo è possibile ottenere '' getinfo ns/id/ '' o '' getinfo ns/name/ '' potrebbe consentire di determinare l'IP – gesell

8

Questa è una grande domanda! Ecco un breve script per farlo usando stem ...

from stem import CircStatus 
from stem.control import Controller 

with Controller.from_port(port = 9051) as controller: 
    controller.authenticate() 

    for circ in controller.get_circuits(): 
    if circ.status != CircStatus.BUILT: 
     continue 

    exit_fp, exit_nickname = circ.path[-1] 

    exit_desc = controller.get_network_status(exit_fp, None) 
    exit_address = exit_desc.address if exit_desc else 'unknown' 

    print "Exit relay" 
    print " fingerprint: %s" % exit_fp 
    print " nickname: %s" % exit_nickname 
    print " address: %s" % exit_address 
    print 

Grazie per la domanda. Ho aggiunto questo a our FAQ.

+1

Come faccio a sapere quale di questi Tor userà? – Tyilo

+0

Sì, come facciamo a sapere quale di questi viene utilizzato da Tor? – rdsoze

+0

Come si traduce l'uso di Python/Stem nel protocollo di controllo Tor? Immagino sia 'GETINFO circuit-status'. –

0

è possibile utilizzare tor control api. Ma non vedo il punto.

sai il nodo di uscita id~name, si conosce l'indirizzo IP che è in ascolto. non sai quale rete interfac e e quale indirizzo ip userà per elaborare la tua query.

Ho appena controllato che circa il 5% dei nodi di uscita tor utilizza indirizzi IPv4 non pubblicati.

Il mondo si sta spostando su ipv6. Questi indirizzi IP sono economici. Ogni nodo di uscita può avere una busta di indirizzi non vuoti ipv6.