Stem是Tor netword的一个Python 控制类库,也就是Tor的Python语言接口API。程序员可以通过Python编程,利用Tor匿名网络来传递自己的隐蔽信息。需要注意的是,Tor在中国被许多人用于突破防火长城,这主要是因为中国屏蔽了大量的海外网站和服务器。Tor会自动检测节点是否可达目标地址。如果返回错误无法到达,它会自动更换节点。相应地,这种技术也可以用在中国境外模拟中国境内的节点,以访问一些境外无法访问的内容。
Stem所需的Python版本最低是Python 2.6,它还兼任Python3.x版本。
但很多时候你并不一定需要使用一个编程类库来和Tor网络交互,有四种方法你可以直接通过命令行来和Tor网络交互。
使用ControlPort是最简单的利用 Telnet 和Tor网络交互的方法。这种方法在连接后需要安全认证。
% cat ~/.tor/torrc ControlPort 9051 % telnet localhost 9051 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. AUTHENTICATE 250 OK GETINFO version 250-version=0.2.5.1-alpha-dev (git-245ecfff36c0cecc) 250 OK QUIT 250 closing connection Connection closed by foreign host.
ControlSocket是基于文件的socket交互,所以,你可以是 socat 连接它..
% cat ~/.tor/torrc ControlSocket /home/atagar/.tor/socket % socat UNIX-CONNECT:/home/atagar/.tor/socket STDIN AUTHENTICATE 250 OK GETINFO version 250-version=0.2.5.1-alpha-dev (git-245ecfff36c0cecc) 250 OK QUIT 250 closing connection
Cookie认证的意思就是说你的信用凭证依赖于Tor DataDirectory 里的一个文件的内容。你可以通过调用 PROTOCOLINFO 来了解Tor的更多认证方法。
% cat ~/.tor/torrc ControlPort 9051 CookieAuthentication 1 % telnet localhost 9051 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. PROTOCOLINFO 250-PROTOCOLINFO 1 250-AUTH METHODS=COOKIE,SAFECOOKIE COOKIEFILE="/home/atagar/.tor/control_auth_cookie" 250-VERSION Tor="0.2.5.1-alpha-dev" 250 OK
Cookie认证有两个小的工具: COOKIE 和 SAFECOOKIE 。下面我们演示的是使用 COOKIE 。而使用 SAFECOOKIE 需要更多的技术知识,牵涉更多的问题。
我们需要是 hexdump 命令来进行认证…
% hexdump -e '32/1 "%02x""/n"' /home/atagar/.tor/control_auth_cookie be9c9e18364e33d5eb8ba820d456aa2bc03444c0420f089ba4569b6aeecc6254 % telnet localhost 9051 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. AUTHENTICATE be9c9e18364e33d5eb8ba820d456aa2bc03444c0420f089ba4569b6aeecc6254 250 OK GETINFO version 250-version=0.2.5.1-alpha-dev (git-245ecfff36c0cecc) 250 OK QUIT 250 closing connection Connection closed by foreign host.
Tor的另外一个认证方法就是使用密码。你需要让Tor来hash你的密码,然后…
% tor --hash-password "my_password" 16:E600ADC1B52C80BB6022A0E999A7734571A451EB6AE50FED489B72E3DF
其余的就很简单了
% cat ~/.tor/torrc ControlPort 9051 HashedControlPassword 16:E600ADC1B52C80BB6022A0E999A7734571A451EB6AE50FED489B72E3DF % telnet localhost 9051 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. AUTHENTICATE "my_password" 250 OK GETINFO version 250-version=0.2.5.1-alpha-dev (git-245ecfff36c0cecc) 250 OK QUIT 250 closing connection Connection closed by foreign host.