Данный проект представляет собой легковесный Explicit Proxy, написанный на Rust.
Благодаря архитектурным особенностям языка, обеспечиваются минимальные задержки и низкое потребление ресурсов.
- Для запуска и использования не требуются root-права.
- Вся обработка TCP-трафика происходит локально на вашем компьютере.
- Поддержка протоколов DoH и DoT защищает DNS-запросы от перехвата и подмены (DNS Spoofing), обеспечивая корректный резолвинг адресов еще до установки соединения.
- Функция динамического изменения отпечатков (fingerprint) сессий делает затруднительной блокировку трафика по сигнатурам (экспериментально).
- Инструмент обрабатывает только фазу инициализации сессии (TLS-ClientHello, HTTP-headers). Основная полезная нагрузка (payload) передается транзитом без вмешательства, что сводит задержки и нагрузку на систему к минимуму.
- Изменения применяются ко всем новым соединениям сразу после запуска и автоматически прекращаются при завершении работы.
- Доступны сборки под популярные операционные системы: macOS, Windows и Linux.
Платформы:
- macOS
На Apple Silicon (aarch64-apple-darwin) & Intel (x86_64-apple-darwin).
Статус: Тестирование и стабильная работа подтверждены на macOS автора (Apple Silicon). - Windows
В Windows 7, 8, 10, 11 на процессорах Intel/AMD (x86_64-pc-windows-msvc).
Статус: Тестирование и стабильная работа подтверждены на Windows 10 автора. - Linux
На дистрибутивах Ubuntu, Debian, CentOS, Fedora, Alpine, Arch (x86_64-unknown-linux-musl).
Статус: Тестирование не проводилось, работоспособность лишь теоретическая.
Самый быстрый способ начать работу — скачать скомпилированный бинарный файл:
- Перейдите на страницу Releases.
- Скачайте архив, соответствующий архитектуре вашей ОС.
- Распакуйте архив и переместите бинарный файл куда вам удобно. Запустите его из терминала.
При первом запуске утилиты (для macOS) система может вывести предупреждение о «непроверенном разработчике». Это стандартное поведение для стороннего ПО — просто разрешите запуск в настройках (раздел "Конфиденциальность и безопасность").
Основная задача:
Сохранение устойчивости TCP-соединений в условиях глубокого анализа трафика (DPI) на промежуточных узлах сети через механизмы фрагментации TCP-потока и манипуляции структурой пакетов. В том числе применение методов защиты от атак типа DNS Spoofing и Cache Poisoning, а также динамическое изменение отпечатков (fingerprint) сессии.
Текущее состояние:
Active Research & PoC 🦀
Несмотря на статус Proof of Concept, инструмент уже является полностью функциональным.
Ключевые механизмы манипуляции трафиком реализованы и стабильно работают в целевой среде. Тем не менее, архитектура и отдельные компоненты всё еще находятся на этапе активной доработки и оптимизации. Текущая итерация движется в сторону гексагональной архитектуры (Ports & Adapters).
Дисклеймер:
Настоящее программное обеспечение разработано в рамках подготовки магистерской диссертации и носит исключительно научно-исследовательский характер.
Разработка представлена как Proof of Concept (доказательство концепции) с целью исследования механизмов обеспечения устойчивости информационного обмена при прохождении через узлы с глубоким анализом трафика (DPI).
Программное обеспечение предоставляется на условиях as is (как есть). Его использование допускается только в учебных и ознакомительных целях.
Автор не дает никаких гарантий относительно работоспособности инструмента в специфических условиях и не несет ответственности за любой прямой или косвенный ущерб, возникший в результате использования данного ПО.
В данном репозитории не особо соблюдаются формальные промышленные стандарты ведения Git-истории (Best Practices). История коммитов намеренно упрощена автором.
Символизм:
Проект назван в честь японского мифологического бога разума, мудрости и стратегии, который вернул миру свет, найдя «хитрый способ» там, где прямое действие было бессильно.
Инструкции по настройке окружения и сборке проекта находятся в примечаниях к разработке.
Настройка сервиса является гибкой и поддерживает два уровня приоритетов:
- CLI-аргументы — используются для быстрого запуска и переопределения основных параметров. Имеют наивысший приоритет.
- Файл конфигурации (config.yaml) — предназначен для более тонкой настройки внутренних параметров proxy-engine редко требующих оперативного изменения. Шаблон файла с примерами настроек (config_example.yaml) находится в корне проекта.
Список доступных CLI-аргументов:
Полный список актуальных флагов и их описание можно посмотреть в терминале/консоли с помощью команды --help.
Если аргумент не указан явно, используются значения из config.yaml или значения по умолчанию.
APP--ip- IP-адрес для прослушивания. (По умолчанию:127.0.0.1)--port- Порт для прослушивания. (По умолчанию:8080)--config- Путь к файлу конфигурации (YAML). (По умолчанию:не указан)--silent- Настройка скрытия баннера и информационных сообщений в терминале: 'true', 'false'. (По умолчанию:false)--log-level- Уровень детализации логов:off,error,warn,info,debug,trace. (По умолчанию:info)
DNS--dns-mode- Режим работы DNS:system,doh,dot. (По умолчанию:system)--dns-qtype- Тип запрашиваемых DNS записей:ipv4,ipv6,all. (По умолчанию:ipv4)--dns-provider- Используемый провайдер для DoH/DoT:google,cloudflare,quad9. (По умолчанию:google)
HTTP--http-split-mode- Фрагментация HTTP-request:none,fragment. (По умолчанию:none)
HTTPS (TLS)--tls-split-mode- Фрагментация TLS-ClientHello:none,sni,random. (По умолчанию:none)--tls-fake-ttl-mode- Стратегия ограничения дистанции (TTL) для фейк-пакета:none,custom. (По умолчанию:none)--tls-fake-ttl-value— Количество хопов (прыжков) для стратегииcustom, через которое фейк-пакет будет отброшен. (По умолчанию:0, диапазон0-255)--tls-greased-padding- Динамическое изменение отпечатка (fingerprint) сессии путем повышения энтропии TLS-handshake (GREASE & Padding):true,false. (По умолчанию:false)
Все параметры имеют значения по умолчанию.
Сетевые условия у каждого провайдера индивидуальны.
Если стандартные настройки не дают нужного результата, необходимо «играться» с параметрами CLI-аргументов и тонкими настройками в файле config.yaml, подбирая рабочую комбинацию под конкретно ваш случай.
-
Скрытый режим: Отключает вывод баннера и информационных сообщений в терминал. Полезно при работе в фоне.
./<path_to_binary_file> --silent true
-
Базовый режим: Трафик пропускается без модификаций, используется системный DNS-resolver.
Минималистичный запуск (используются дефолтные параметры):./<path_to_binary_file>
Полная запись (явное указание параметров):
./<path_to_binary_file> -i 127.0.0.1 -p 8080 --dns-mode system --log-level info --http-split-mode none --tls-split-mode none --tls-fake-ttl-mode none
-
Умеренный режим:. Включает фрагментацию пакетов, Сloudflare DNS-over-TLS (IPv4) для обхода простых ограничений.
./<path_to_binary_file> --dns-mode dot --dns-provider cloudflare --http-split-mode fragment --tls-split-mode random
-
Максимальный режим:. Использование DNS-over-HTTPS (IPv4), фрагментации пакетов, кастомной подстройки TTL, изменение fingerprint.
./<path_to_binary_file> --dns-mode doh --dns-provider cloudflare --http-split-mode fragment --tls-split-mode sni --tls-fake-ttl-mode custom --tls-fake-ttl-value 1 --tls-greased-padding true
Описание архитектуры и ключевых алгоритмов проекта находится в примечаниях к разработке.
Исходный код проекта распространяется под свободной лицензией Apache License 2.0. Это позволяет использовать, копировать и модифицировать код в образовательных и исследовательских целях.
Если вам что-то приглянулось в данном проекте, сочли его полезным, или просто понравился код - не стесняйтесь поставить ⭐ звездочку в благодарность.