Привет всем участникам NTC.
Хочу представить проект Floweryguard (открытый исходный код под лицензией MIT) и пригласить к тестированию на различных провайдерах и региональных ТСПУ.
- Репозиторий GitHub: GitHub - KarlMerkel/Floweryguard: DPI bypass & tethering mask tool for Windows (Discord, YouTube, mobile hotspot TTL fix). 100% autonomous, zero dependencies. · GitHub
- Релиз v1.1.0: Release Flowery (Glue) v1.1.0 — Thompson Sampling, Standalone EXE & Discord Fixes · KarlMerkel/Floweryguard · GitHub
1. Архитектурная концепция
Большинство пользователей Windows при использовании обходов сталкиваются с двумя проблемами:
- Необходимость ручного перебора десятков батников (general_alt1, alt2 и т.д.) под конкретного интернет-провайдера.
- Перехват L3/L4 драйвером WinDivert иногда конфликтует с античитами (Vanguard, EAC) или локальными корпоративными VPN.
Floweryguard реализован на уровне локального HTTP/HTTPS/CONNECT прокси (127.0.0.1:8118) с системной интеграцией через WinINet API.
2. Реализация десинхронизации и стратегий
Thompson Sampling Strategy Engine (Multi-Armed Bandit)
Вместо фиксированного подбора параметров реализован вероятностный алгоритм на базе бета-распределения Beta(alpha, beta):
- Для каждого домена ведется независимый подсчет успешных и неуспешных рукопожатий.
- Доступные стратегии:
- disoob_sni: 1-байтный Out-of-Band (URG) инжектор перед сегментом SNI.
- combo_tlsrec_tcpsplit: разбиение TLS-записи ClientHello на две валидные записи + фрагментация TCP-потока по границе расширения SNI.
- tcp_split_sni_mid: разрезание TCP-сегмента посередине имени хоста.
- tls_record_frag: фрагментация исключительно на уровне TLS Record Layer.
- direct: прямой проброс без модификации пакетов.
- Статистика сохраняется в strategy_scores.json. При смене поведения ТСПУ движок адаптируется на лету.
Тандем с zapret (Flowseal)
Для предотвращения двойной десинхронизации при запущенном winws.exe:
- Процесс winws.exe детектируется автоматически.
- Трафик Discord и YouTube переводится в режим direct (десинхронизацию выполняет WinDivert), а прокси берет на себя маршрутизацию, системные исключения и таймауты.
Discord Voice & WebRTC (UDP Helper)
Для голосовых каналов Discord (WebRTC, UDP 50000-50100) реализован изолированный модуль запуска легковесного фильтра с фейковыми пакетами, не затрагивающий TCP-трафик браузера.
Happy Eyeballs (RFC 8305) и защита от утечки сокетов
- Каскадный параллельный опрос адресов за 250 мс для отсеивания заблокированных IP-адресов Cloudflare.
- Таймаут TLS Handshake (select до 6 секунд) с вызовом shutdown(SHUT_RDWR) для предотвращения ошибок 503 и забивания пула дескрипторов.
Tethering Mask (TTL = 65)
Для пользователей мобильного интернета утилита через Win32 API и реестр выставляет DefaultTTL = 65 (IPv4/IPv6) с активацией меток времени RFC 1323.
3. Стек
- Runtime: Python 3 (стандартная библиотека: socket, select, struct, ctypes, winreg, threading). Внешних зависимостей нет.
- Скомпилирован автономный Flowery.exe (PyInstaller) с корректной резолюцией путей через sys.frozen.
- Корректная обработка Win32 Console Control Handler при закрытии консоли (гарантированный сброс настроек прокси).
4. Тестирование
В дистрибутив включен сценарий test.bat для валидации контрольных точек (Discord Web, Gateway, CDN, Voice RTC, YouTube, X/Twitter, Rutracker, Cloudflare DNS).
Буду благодарен сообществу за:
- Тестирование работы Thompson Sampling на региональных ТСПУ.
- Логи при возникновении сбоев рукопожатия.
- Предложения по расширению стратегий десинхронизации.