Mimic Protocol
🇷🇺 Русский | 🇺🇸 English
Mimic — это открытый протокол обхода блокировок, который постоянно меняет своё "цифровое лицо", имитируя трафик различных легитимных сервисов (VK, Rutube, Telegram и др.).

🎯 Суть проекта
Вместо того чтобы просто шифровать трафик (что часто выделяется для систем DPI), Mimic маскирует его под обычную активность пользователя.
- Полиморфизм: Протокол динамически переключает профили поведения.
- Мимикрия: Трафик выглядит как просмотр видео, общение в мессенджере или скроллинг соцсети.
- Неуловимость: Нет постоянной сигнатуры, которую можно заблокировать.
🛠️ Самописные технологии
MTP — Mimic Transport Protocol
MTP — полностью самописный транспортный протокол поверх UDP, разработанный с нуля как замена TCP для обхода DPI.
| Компонент |
Описание |
| QUIC маскировка |
Пакеты на 100% маскируются под HTTP/3 (QUIC Short Header). Сервер защищен Active Probing Defender (отвечает фейковыми DNS пакетами сканерам) |
| Полиморфные заголовки |
Структура каждого пакета уникальна. Умный Padding динамически растягивает размер до MTU, имитируя видео-поток. DPI не может написать регулярку |
| ChaCha20-Poly1305 |
Каждый пакет шифруется индивидуально. Перешифровка при ретрансмиссии (новый nonce) |
| ARQ Engine |
Гарантия доставки: скользящее окно, Selective ACK, адаптивный RTO (Jacobson/Karels) |
| BBR Congestion Control |
Контроль перегрузок на базе замера пропускной способности (BtlBw) и пинга (Min RTT). Полностью заменяет устаревший алгоритм AIMD, давая макс. скорость |
| Forward Error Correction |
Модуль (Reed-Solomon), который восстанавливает потерянные UDP-пакеты прямо на лету без ожидания ретрансмиссии (идеально для плохих 4G сетей) |
| Session Migration |
Бесшовная ротация: клиент мигрирует сессию на новый UDP-сокет без потери данных |
| Keepalive |
Автоматический PING/PONG каждые 5 секунд, обнаружение мёртвых соединений |
Как это работает
Клиент Сервер
│ │
│──── SYN (AUTH:uuid, зашифр.) ──────────>│
│<─── SYN-ACK (OK, зашифр.) ─────────────│
│ │
│──── DATA [junk][nonce][encrypted] ─────>│ (каждый пакет выглядит иначе)
│<─── ACK + SACK ────────────────────────│
│ │
│ === Ротация (бесшовная) === │
│──── SYN+MIGRATE (session_id) ─────────>│ (новый UDP-сокет)
│<─── SYN-ACK ───────────────────────────│ (сервер меняет адрес)
│ │ (yamux не замечает)
Полиморфный пакет MTP
[ QUIC Header: 9 байт ][ Padding: до 1350 байт ][ Nonce: 24 байт ][ Encrypted(Header+Payload) ]
↑ Фейковый префикс ↑ Smart Padding ↑ уникален ↑ ChaCha20-Poly1305
для обхода DPI (маскировка размера) для пакета
Ни один DPI не может перехватить этот трафик, потому что:
- Каждый пакет имеет разный размер (junk padding)
- Нет фиксированных маркеров или магических байтов
- Даже ретрансмиссия того же пакета выглядит полностью иначе (новый nonce + новый padding)
🏗️ Структура репозитория
Mimic-Protocol/
├── cmd/ # Исполняемые файлы
│ ├── client/ # CLI клиент с SOCKS5 прокси
│ └── server/ # Серверная часть (MTP)
├── pkg/ # Публичные библиотеки
│ ├── mtp/ # ★ MTP — самописный транспорт поверх UDP
│ ├── protocol/ # Ядро протокола (TLS-mimicry, legacy)
│ ├── transport/ # VirtualConn + Manager (бесшовная ротация)
│ ├── proxy/ # SOCKS5 прокси-сервер
│ ├── mimic/ # Генератор трафик-паттернов
│ ├── presets/ # Пресеты поведения (social, video, messenger)
│ └── config/ # Конфигурация с валидацией
├── internal/ # Внутренние компоненты
└── docs/ # Документация
🔧 Как это работает
Базовый принцип
- Пользователь задает список "белых" доменов (например,
vk.com, rutube.ru).
- Mimic устанавливает MTP-соединение (UDP) с сервером.
- Поверх MTP работает yamux для мультиплексирования потоков.
- Клиент поднимает SOCKS5 прокси (
127.0.0.1:1080) с полной поддержкой UDP Associate (онлайн игры, DNS, WebRTC работают через туннель).
- Встроенный Routing Engine гибко направляет трафик (
direct, proxy, block) по правилам.
- Каждые 30-600 секунд происходит бесшовная ротация транспорта.
📋 Конфигурация
Настройка сервера (config.example.yaml)
Создайте файл конфигурации на основе примера:
cp config.example.yaml server.yaml
nano server.yaml # отредактируйте под себя
# Порт прослушивания (рекомендуется 443 для маскировки под HTTPS)
port: 443
# Уникальный UUID для аутентификации (сгенерируйте: ./server generate-uuid)
uuid: "550e8400-e29b-41d4-a716-446655440000"
# Название сервера
name: "My-Mimic-Server"
# Транспорт: "mtp" (UDP, рекомендуется) или "tcp" (устаревший)
transport: "mtp"
# Домены для мимикрии трафика
domain_list:
- vk.com
- rutube.ru
- telegram.org
- wikipedia.org
# Максимум клиентов (0 = без ограничений)
max_clients: 100
# DNS-сервер (опционально)
dns: "1.1.1.1:53"
Генерация UUID:
./server generate-uuid
Генерация ссылки для клиента:
./server generate-link config.example.yaml
Пример вывода:
🚀 Share this link with clients to connect:
================================================================
mimic://550e8400-e29b-41d4-a716-446655440000@your-server.com:443?name=My-Mimic-Server&domains=vk.com,rutube.ru&transport=mtp&dns=1.1.1.1:53
================================================================
Настройка клиента (config.yaml)
server: "your-mimic-server.com:443"
uuid: "your-uuid-here"
local_port: 1080 # Порт SOCKS5 прокси с поддержкой TCP/UDP
# Движок маршрутизации (Опционально)
routing:
default_policy: proxy
rules:
- type: domain_suffix
value: ru
policy: direct
- type: ip_cidr
value: 127.0.0.0/8
policy: block
domains:
- vk.com # Пресет "social"
- rutube.ru # Пресет "video"
- telegram.org # Пресет "messenger"
settings:
switch_time: "60s-300s" # Менять профиль каждые 1-5 минут
randomize: true # Случайный порядок смены доменов
📦 Используемые библиотеки (Go)
В проекте используются следующие мощные Open-Source решения:
🚀 Использование
⚡ Быстрая установка на Linux (автоматическая)
Требования: Ubuntu/Debian, CentOS/RHEL/Fedora, Arch Linux (root-доступ)
# 1. Клонирование репозитория
git clone https://github.com/Locon213/Mimic-Protocol.git
cd Mimic-Protocol
# 2. Запуск установщика (от root)
sudo bash scripts/linux/install.sh
# 3. Готово! Сервер установлен и запущен
Установщик автоматически:
- ✅ Скачает готовый бинарник для вашей архитектуры (amd64/arm64)
- ✅ Установит зависимости (Go, systemd, jq)
- ✅ Сгенерирует UUID и создаст конфиг в
/etc/mimic/server.yaml
- ✅ Настроит systemd-сервис
- ✅ Включит автозапуск при загрузке
Управление сервером через CLI
После установки доступна команда mimic:
mimic status-server # Статус сервера
mimic restart-server # Перезапуск
mimic stop-server # Остановка
mimic generate-uuid # Генерация UUID
mimic generate-link # Ссылка для клиента
mimic config_path # Путь к конфигу
Ручная настройка фаервола
# UFW (Ubuntu/Debian)
sudo ufw allow 443/udp
sudo ufw reload
# firewalld (CentOS/Fedora)
sudo firewall-cmd --permanent --add-port=443/udp
sudo firewall-cmd --reload
🔧 Ручная установка на Linux
Если вы предпочитаете ручную настройку или хотите собрать из исходников:
# 1. Установка Go
sudo apt update && sudo apt install -y golang-go # Ubuntu/Debian
# или
sudo dnf install -y golang # CentOS/Fedora
# 2. Сборка
git clone https://github.com/Locon213/Mimic-Protocol.git
cd Mimic-Protocol
go build -o server ./cmd/server
chmod +x server
# 3. Настройка
cp config.example.yaml server.yaml # или создайте свой конфиг
./server generate-uuid # сгенерируйте UUID и вставьте в конфиг
# 4. Запуск
./server -config server.yaml
🌐 Кросс-компиляция
# Linux AMD64
GOOS=linux GOARCH=amd64 go build -o server ./cmd/server
# Windows AMD64
GOOS=windows GOARCH=amd64 go build -o server.exe ./cmd/server
# macOS ARM64
GOOS=darwin GOARCH=arm64 go build -o server ./cmd/client
📱 Запуск клиента
./client -config config.yaml
При успешном подключении клиент выведет:
✅ Session established!
🌐 SOCKS5 Proxy: 127.0.0.1:1080
↑ 125.3 KB/s ↓ 1.2 MB/s │ Traffic: 45.6 MB │ Connected: 00:15:32 │ Active: 3
📲 Официальное приложение (Beta)
Для удобного использования доступны готовые приложения с графическим интерфейсом:
Mimic App — официальное клиентское приложение (в бете)
Доступные платформы:
- 🐧 Linux
- 🍎 macOS
- 🪟 Windows
- 🤖 Android
Приложение включает:
- ✅ Графический интерфейс управления
- ✅ Импорт конфигураций по ссылке (
mimic://...)
- ✅ Статистика трафика в реальном времени
🔌 Использование как Go SDK
Вы можете встроить клиент Mimic Protocol в собственное Go-приложение (например, GUI или мобильное приложение). Подробнее см. Документацию по SDK.
🔐 Безопасность
- Транспорт: MTP (самописный протокол поверх UDP) с ChaCha20-Poly1305 шифрованием
- Полиморфизм: Каждый пакет уникален — DPI не может создать сигнатуру
- Обмен ключами: Авторизация по UUID
- Анонимность: Сервер не хранит логи, регистрация не требуется
📄 Лицензия
Проект распространяется под лицензией GPLv3. Подробнее см. файл LICENSE.
Copyright (c) 2025-н.в. Locon213 & Contributors.