主题评价:
  • 0 次(票) - 平均星级: 0
  • 1
  • 2
  • 3
  • 4
  • 5
与 carml 一起使用 Tor
#1
carml 是一个命令行、管道友好的工具,用于探索和控制正在运行的 Tor 守护进程。大多数子命令都会引起开发人员和修补者的兴趣;最终用户会对其中一些感兴趣。这篇文章主要关注开发人员和修补者。

carml 是一个使用 Twisted 和我的库 txtorcon 编写的 Python 程序。如果您熟悉 Python,请创建一个新的 virtualenv 并 pip install carml。有更详细的安装说明可用。一旦成功,您应该能够输入 carml 并查看帮助输出。

连接到 Tor

carml 的工作方式有点像 git,因为正常调用是 carml 后跟一些全局选项,然后是带有自己选项的子命令。最有用的全局选项是 --connect <endpoint> 它告诉 carml 如何连接到控制端口。从技术上讲,这可以是任何 Twisted 客户端端点字符串,但对于 Tor 来说,它是 tcp:<port> (或简单的端口)或 unix:/var/run/tor/control(对于 unix 套接字)之一。

对于 Tor 浏览器捆绑包,请使用 carml --connect 9151。通常可以通过 carml --connect 9051 或 carml --connect unix:/var/run/tor/control 访问“系统”Tor。您可能需要在配置中启用控制端口并重新加载(或重新启动)Tor。更多详细信息请参阅文档。

开始探索

最有趣的通用命令可能是 carml monitor —— 尝试运行它一段时间,你可以看到你的 Tor 客户端正在做什么。这可以很好地洞察 Tor 的行为。

   

通过 carml graph 可以获取(非常基本的)使用情况图,以查看您正在使用的带宽(这需要进行扩展 - 欢迎 PR!)

显式电路

有时,您想使用特定的电路。例如,您试图确认某个退出可能存在恶意活动。我们可以组合 carml circ 和 carml stream 命令:

代码:
carml circ --build "*,*,4D08D29FDE23E75493E4942BAFDFFB90430A81D2"

这意味着形成一条 3 跳环路,穿过任何入口警卫、任何中间,然后是一个特定出口(由 ID 标识)。您可以*=通过名称进行识别(前提是它是唯一的!),但强烈建议使用哈希值。当然,您也可以明确选择其他跃点。请注意,星星仍然将选择留给 carml / txtorcon,它们不能(也不会)使用 Tor 的精确选择算法。

接下来,您需要将电路实际连接到该流。它会打印出类似“Circuit ID 1234”的内容。现在我们可以使用 carml 流:

代码:
carml stream --attach 1234

这将导致所有新流附加到电路 1234(直到我们退出 carml 流命令)。在另一个终端中,尝试 torsocks curl https://www.torproject.org通过新电路访问 Tor 项目的网站。一旦您终止上述 carml 流命令,Tor 将再次通过其正常算法选择电路。

请注意,目前无法附加发往洋葱服务的流(这是 Tor 的限制,请参阅connection_edge.c)。

调试 Tor

控制协议显示所有 Tor 事件,其中包括 INFO 和 DEBUG 日志记录事件。这使您可以通过 carml events 命令轻松打开 DEBUG 和 INFO 日志记录:

代码:
carml events INFO DEBUG

这当然可以通过 grep 或其他任何东西进行管道传输。您可以为 carml 事件指定 --count,这对于其他一些事件很有用。

例如,如果您想在每次发布新的共识文件时“做某事”,您可以这样做:

代码:
carml events --once NEWCONSENSUS

这将等到恰好产生一个 NEWCONSENSUS 事件,将其内容转储到 stdout (这将是新的共识)并退出。使用运行上述内容的 bash 脚本(可能通过管道传输到 /dev/null),您可以确保在继续之前有新的共识可用。

Tor 发出的事件记录在 torspec 第 4.1 节中。您可以使用 carml 通过 carml events --list 来列出它们。

另一个例子可能是您希望确保您的中继每小时仍列在共识中。一种方法是在每小时快点之前安排一个 cron 作业,其执行如下操作:

代码:
carml events --once NEWCONSENSUS | grep
# log something useful if grep didn't find anything

原始命令

您可以通过 carml cmd 子命令向 Tor 发出原始控制端口命令。它负责身份验证等,并在命令成功(或错误)时退出。这对于测试正在开发的新命令等很有用(因为输入/输出没有以任何方式验证)。

cmd 之后的每个参数在发送到 Tor 之前都会用空格连接在一起,这样您就不必引用内容。

代码:
carml cmd getinfo info/names
carml cmd ADD_ONION NEW:BEST Port=1234

最终用户命令

简而言之,旨在“对最终用户有用”的命令是:

carmlastebin:创建一个新的隐藏服务并为其提供目录、单个文件或标准输入。您可以在另一侧与 carml copybin 或简单的 torsock cur... 结合使用。仍然是安全分发地址的“读者练习”。

   

carml tbb:下载、验证并运行新的 Tor 浏览器包。这固定了 torproject.org 的公钥,并捆绑了签署捆绑包的可能嫌疑人的密钥。现在 TBB 自动更新已经不太有用了。

carml newid:发送 NEWNYM 信号,该信号会清除 DNS 缓存并导致 Tor 不会为新请求重新使用任何现有电路。

carml 监视器向您显示 Tor 当前正在做什么。同样,carml 图表仅显示当前的输入/输出带宽。

纯娱乐

可以提供数小时娱乐的命令包括:

代码:
carml xplanet
carml tmux

我希望你觉得 carml 很有用。欢迎在carml 的 GitHub 页面上提出建议、错误和修复。

也可以看看

还有一个基于 Curses 的 Tor 工具,称为ARM(博客文章)。目前它正在被重写为“Nyx”。
回复


可能相关的主题..。
主题: 作者 回复数: 人气: 最近发表
  我可以将哪些程序与 Tor 一起使用? netflix 0 146 08-04-2023, 01:36 PM
最近发表: netflix

论坛跳转:


正在浏览该主题的用户: 1 个游客