【发布时间】:2018-06-11 17:27:25
【问题描述】:
我是一名在日本大学进行 Tor 研究的大学生。
如图所示如何显示路由的IP地址?
我怀疑我需要从控制端口执行一些操作。
【问题讨论】:
标签: tor
我是一名在日本大学进行 Tor 研究的大学生。
如图所示如何显示路由的IP地址?
我怀疑我需要从控制端口执行一些操作。
【问题讨论】:
标签: tor
工作方式有点棘手。 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是中间,MilesPrower是出口。仔细检查 SOCKS_USERNAME 和 SOCKS_PASSWORD 字段是否存在,并与请求中的字段匹配,以确保您拥有正确的电路。
然后您可以向控制器发出各种命令以获取有关继电器的信息。
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
您可以从那里提取 IP 地址和有关电路中继电器的信息。
进一步阅读:
Tor circuit and HTTP connection linkability
stem (Python) 或 TorUtils (PHP) 等库(披露:我是 PHP TorUtils 的作者)可以帮助与 Tor 控制协议进行通信。
希望对你有所帮助!
【讨论】: