我是一名在日本大学进行Tor研究的大学生。
如何显示路线的IP地址,如图所示?
我怀疑我需要从控制端口进行一些操作。
答案 0 :(得分:0)
有效的方式有点棘手。 Tor会在启动时创建不同的电路,SOCKS请求将使用它认为合适的电路。
Tor浏览器(由TorButton提供支持)具有特殊的域隔离功能,通过使用带有Tor的SOCKS代理的凭证,它通过隔离电路代理特定domain:port
组合的请求。这就是如何在Tor浏览器中打开两个选项卡,并访问两个不同的域并为每个站点使用不同的IP地址(因为每个选项卡使用完全不同的电路)。
要完成你想要做的事情,你需要模仿这种行为。
这是一个让你入门的概念证明。
SETEVENTS STREAM
SENTCONNECT
事件的流事件,并从事件中提取电路ID。GETINFO circuit-status
命令以获取电路列表,电路路径将与上一步中的电路ID一起出现。这将为您提供正在中继的节点,然后您可以获取信息以获取中继名称和地址。
扩展上面的PoC,这是你可以期待的示例输出。
AUTHENTICATE "password"
250 OK
SETEVENTS STREAM
250 OK
curl --socks5-hostname localhost:9050 \
-U "torproject.org%3A:randomPasswordHere" \
https://torproject.org/donate`
代理用户名是torproject.org:443
,这是我们要求的域和端口。 randomPasswordHere
是密码。
当上述请求通过时,控制器将发送一些事件。
示例:
650 STREAM 153 NEW 0 torproject.org:443 SOURCE_ADDR=127.0.0.1:45508 PURPOSE=USER
650 STREAM 153 SENTCONNECT 38 torproject.org:443
650 STREAM 153 REMAP 38 154.35.132.71:443 SOURCE=EXIT
650 STREAM 153 SUCCEEDED 38 154.35.132.71:443
650 STREAM 153 CLOSED 38 154.35.132.71:443 REASON=DONE
我们感兴趣的事件是SENTCONNECT
事件,其中target
是我们请求的域端口组合。
这些活动的格式为:
"650" SP "STREAM" SP StreamID SP StreamStatus SP CircuitID SP Target
[SP "REASON=" Reason [ SP "REMOTE_REASON=" Reason ]]
[SP "SOURCE=" Source] [ SP "SOURCE_ADDR=" Address ":" Port ]
[SP "PURPOSE=" Purpose]
CRLF
将这些知识应用于上述数据,153
是流ID,38
是我们感兴趣的电路ID,torproject.org:443
是我们要求的目标。
现在知道我们的请求使用的电路ID,我们可以提取电路信息以找到请求从网络中获取的路径。
GETINFO circuit-status
250+circuit-status=
38 BUILT $9E1E4F5B5F94812D02C4D18CB4086CE71CA5C614~torpidsDEhetzner1,$F0D264435B31F70FEFB322794E93211A8419F890~ANGRYRONIN,$79E169B25E4C7CE99584F6ED06F379478F23E2B8~MilesPrower BUILD_FLAGS=NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2018-06-14T17:26:38.216992 SOCKS_USERNAME="torproject.org:443" SOCKS_PASSWORD="randomPasswordHere"
.
250 OK
你会在这里看到其他电路,但为了简单起见我省略了它们。
38
是我们感兴趣的电路ID,因此您可以解析电路信息以发现中继torpidsDEhetzner1
是保护,ANGRYRONIN
是中间,{{{ 1}}是退出。仔细检查MilesPrower
和SOCKS_USERNAME
字段是否存在,并与请求中的字段匹配,以确保您拥有正确的电路。
然后,您可以向控制器发出各种命令,以获取有关继电器的信息。
SOCKS_PASSWORD
从那里你可以提取有关电路中继电器的IP地址和信息。
进一步阅读:
GETINFO ns/id/79E169B25E4C7CE99584F6ED06F379478F23E2B8
250+ns/id/79E169B25E4C7CE99584F6ED06F379478F23E2B8=
r MilesPrower eeFpsl5MfOmVhPbtBvN5R48j4rg axOufc4UeKsDqI/SrNiH31jyB1Y 2018-06-14 05:38:34 62.210.129.246 443 80
s Exit Fast Guard Running Stable V2Dir Valid
w Bandwidth=8170
.
250 OK
stem(Python)或TorUtils(PHP)等库(披露:我是PHP TorUtils的作者)可以帮助与Tor控制协议进行通信。
我希望这有帮助!