Изучение Tor с carml

carml это pipe-ориентированная утилита командной строки для изучения и управления демона Tor. Большинство команд будет интересна разработчикам и программистам, но некоторые пригодятся и простым пользователям. Данное руководство ориентируется на разработчиков.

Утилита сarml написана на питоне с использованием фреймворка Twisted и библиотеки txtorcon. Если вы знакомы с питоном, то создайте виртуальную среду и установите утилиту:

virtualenv venv
. ./venv/bin/activate
pip install carml

Подробная инструкция доступна здесь.

Подключение к Tor

carml работает подобно git, за командой следуют глобальные параметры, а затем дополнительные команды. Наиболее полезный глобальный параметр —connect <конечная точка>, который говорит carml, как подключиться к управляющему порту. Технически это может быть любой клиент Twisted, но для Tor это tcp:<port> или unix:/var/run/tor/control для Unix-сокетов.

Для Tor Browser Bundle используйте carml —connect 9151. Как правило, Тор доступен на carml —connect 9051 или carml —connect unix: —connect unix:/var/run/tor/control. Вы можете включить управляющий порт и перезапустить Tor. Подробнее здесь.

Знакомство

Самая интересная глобальная команда это carml monitor. Попробуйте запустить утилиту с этим параметром и вы увидите, что делает ваш клиент Tor. Это даст хорошее представление о работе сети.

А чтобы увидеть пропускную способность сети в виде графика, надо ввести команду carml -graph.

Варианты использования

Например, вы хотите использовать определенную цепочку узлов. И вы хотите выяснить, является ли выходной узел вредоносным. Нужно объединить команды carml circ и carml stream:

carml circ --build "*,*,4D08D29FDE23E75493E4942BAFDFFB90430A81D2"

Это значит, надо построить цепочку в которой: любой сторожевой узел -> любой промежуточный узел -> один конкретный выходной узел. Вместо * можно поставить уникальное имя, но лучше использовать хэш. Обратите внимание, что случайный выбор узлов делает алгоритм сarml, а он не совпадает с алгоритмом Tor.

Далее, вы можете прикрепить эту цепочку к потоку. Допустим идентификатор цепочки «1234». Нужно использовать carml stream:

carml stream --attach 1234

Это приведет к тому, что все новые потоки будут присоединены к цепочки «1234». В другом терминале введите torsocks curl https://check.torproject.org, и вы увидите IP-адрес выбранного выходного узла.
Обратите внимание, что в настоящее время невозможно присоединить потоки для посещения скрытых сервисов (это ограничение Tor см. connection_edge.c)

Отладка

Протокол управления показывает все события Tor. Нужно ввести:

carml events INFO DEBUG

Или, например, вы хотите чтобы какое-то событие происходило каждый раз, когда был опубликован новый документ консенсуса:

carml events --once NEWCONSENSUS

Список событий Tor можно найти в официальной документации или вывести на экран командой carml events —list.

Сырые команды

Вы можете использовать сырые управляющие команды для Tor через carml cmd. Это может быть полезно, чтобы проверить новые команды в стадии разработки и т.д. Команды разделяются пробелами. Например:

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

Команды для конечных пользователей

Вкратце, команды, предназначенные для простых пользователей:
carml pastebin: создать новый скрытый сервис и прикрепить к нему каталог, файл или вывод потока stdin. Можно комбинировать с carml copybin и torsocks curl.

carml tbb: скачать, верифицировать и запустить новый Tor Browser Bundle.
carml newid: посылает сигнал NEWNYM, который очищает кэш DNS и говорит Tor не использовать повторно существующие цепочки для новых запросов.
carml monitor: показывает вам, что Tor делает в данный момент. Точно так же, carml graph показывает только пропускную способность.

Развлечения

Команды, которые могут обеспечить часы развлечения:
carml Xplanet
carml tmux
Предложения, ошибки и исправления нужно отправлять на GitHub страницу carml.

Смотрите также

Существует также основанная на библиотеке curses инструмент под названием ARM . В данный момент на его основе разрабатывается утилита Nyx.