Find a file
2026-09-05 02:20:51 +03:00
.github/workflows fix(windows): resolve false-positive Wacatac.B!ml (lto = thin, strip = debuginfo, dynamic CRT, sync PE version) 2026-09-05 02:20:51 +03:00
crates fix(windows): resolve false-positive Wacatac.B!ml (lto = thin, strip = debuginfo, dynamic CRT, sync PE version) 2026-09-05 02:20:51 +03:00
docs perf(build): switch to tokio current_thread and strip unwind tables on linux targets 2026-09-05 00:12:04 +03:00
.gitignore chore: remove AGENTS.md from git 2026-09-04 00:19:41 +03:00
Cargo.lock feat: add native Android ARM64 and ARM32 targets and Termux auto-install support 2026-09-05 01:02:25 +03:00
Cargo.toml fix(windows): resolve false-positive Wacatac.B!ml (lto = thin, strip = debuginfo, dynamic CRT, sync PE version) 2026-09-05 02:20:51 +03:00
config.yml feat(dns,i18n): add missing public DNS endpoints and implement Arabic/Persian text shaping and bidi 2026-09-04 17:19:58 +03:00
Cross.toml fix(ci): use edge container for aarch64-linux-android and clean job names in release workflow 2026-09-05 01:38:47 +03:00
domains.txt feat: Native Rust engine (v4.2.0) 2026-09-04 00:15:58 +03:00
install.ps1 feat: add native Android ARM64 and ARM32 targets and Termux auto-install support 2026-09-05 01:02:25 +03:00
install.sh feat: add native Android ARM64 and ARM32 targets and Termux auto-install support 2026-09-05 01:02:25 +03:00
README.md feat: add native Android ARM64 and ARM32 targets and Termux auto-install support 2026-09-05 01:02:25 +03:00
tcp16.json feat: Native Rust engine (v4.2.0) 2026-09-04 00:15:58 +03:00
whitelist_sni.txt feat: Native Rust engine (v4.2.0) 2026-09-04 00:15:58 +03:00


"Маяк у гаснущего горизонта свободного интернета"
Сквозь цифровые сумерки. Смотритель маяка, Runni

🦀 DPI Detector (Native Rust Engine)

Language: Rust License: MIT Release Telegram

Полностью переписанный нативный инструмент для анализа цензуры и блокировок трафика на чистом Rust:

  • 0 зависимостей: Никакого Python, C/C++ библиотек или системного OpenSSL. Собрано на rustls, ring и RustCrypto.
  • Легковесный: Размер бинарника всего ~3.2 МБ, потребление оперативной памяти в работе — 3–6 МБ RAM.
  • Максимальная кросс-платформенность: Нативная поддержка роутеров (MIPS, ARM), Windows (от Windows 7 до 11), Linux musl и macOS.
  • Интерактивный TUI + Batch: Полноценное стрелочное меню в терминале и быстрый тихий запуск при передаче аргументов командной строки.

🚀 Быстрый запуск в 1 строку (Без установки)

🐧 Linux, macOS, роутеры Keenetic, OpenWrt & Entware

curl -fsSL https://raw.githubusercontent.com/Runnin4ik/dpi-detector/rust/install.sh | sh

📱 Android (Termux)

curl -fsSL https://raw.githubusercontent.com/Runnin4ik/dpi-detector/rust/install.sh | sh

Скрипт автоматически определит Termux, установит нативный Android-бинарник в $PREFIX/bin/dpi-detector и запустит его. Для повторного запуска достаточно ввести dpi-detector.


🪟 Windows (PowerShell)

irm https://raw.githubusercontent.com/Runnin4ik/dpi-detector/rust/install.ps1 | iex

📦 Готовые бинарные сборки

Все сборки полностью статичны и не требуют внешних библиотек:

Платформа / Устройство Архитектура Бинарник в релизах
Windows 10, 11, Server x86_64 dpi-detector-windows-x86_64.exe
Windows 7, 8, Server 2008/2012 x86_64 dpi-detector-windows-7-x86_64.exe
Linux (PC, Серверы, VPS) x86_64 musl dpi-detector-linux-x86_64
Роутеры ARM64 (Keenetic Hopper/Titan 2, RPi, OpenWrt) aarch64 musl dpi-detector-linux-arm64
Роутеры ARMv7 (Keenetic Titan 1/Hero, Asus RT-AX58U) armv7hf musl dpi-detector-linux-armv7
Роутеры MIPS LE (Keenetic Viva/Giga, MT7621, OpenWrt) mipsel musl dpi-detector-linux-mipsel
Роутеры MIPS BE (Atheros, Qualcomm, OpenWrt) mips musl dpi-detector-linux-mips
macOS Apple Silicon (M1, M2, M3, M4) aarch64 dpi-detector-macos-arm64
macOS Intel x86_64 dpi-detector-macos-intel
Android ARM64 (Смартфоны, планшеты, Termux, ADB) aarch64 bionic dpi-detector-android-arm64
Android ARM32 (Старые устройства, Android TV) armv7 bionic dpi-detector-android-armv7

🛠️ Установка на роутеры (Keenetic / OpenWrt / Entware)

При запуске на роутере скрипт install.sh:

  1. Автоматически находит директорию /opt/bin (Entware) и устанавливает бинарник туда (сохраняется после перезагрузки).
  2. Заменяет файл атомарно (.tmp.$$ -> dpi-detector) с проверкой архитектуры через --version.
  3. Поддерживает запуск напрямую через SSH:
# Установка и запуск меню
curl -fsSL https://raw.githubusercontent.com/Runnin4ik/dpi-detector/rust/install.sh | sh

# Повторный запуск после установки
/opt/bin/dpi-detector

⚙️ Параметры командной строки (CLI)

Использование: dpi-detector [ОПЦИИ]

Опции:
  -t, --tests <TESTS>            Номера тестов (например: -t 1,2,3 или -t "1 2 3" или -t 123)
  -d, --domain <DOMAIN>          Тестируемый домен (или путь к файлу со списком доменов)
      --dns <SERVER>             Пользовательский DNS-сервер для проверки (IP или IP:PORT)
      --ipv4                     Использовать только IPv4
      --ipv6                     Использовать только IPv6
  -c, --concurrency <COUNT>      Количество параллельных потоков (1, 5, 20, 50, 100) [по умолч.: 50]
      --timeout <SECS>           Таймаут сетевых запросов в секундах [по умолчанию: 5]
      --json                     Вывод результатов в формате JSON (для скриптов и автоматизации)
      --lang <LANG>              Язык интерфейса: ru, en, fa, zh, es, ar [по умолчанию: ru]
      --legend                   Показать расшифровку статусов блокировок и выйти
  -h, --help                     Показать справку
  -V, --version                  Показать версию программы

Номера доступных тестов:

  • 0 — Информация о сети и системе (внешний IP, провайдер, AS, страна, тип NAT)
  • 1 — Доступность DNS-серверов (проверка UDP 53, DoH Cloudflare/Google/Quad9/Yandex/AdGuard)
  • 2 — Доступность сайтов (HTTP, TLS 1.2, TLS 1.3, классификация блокировок DPI)
  • 3 — Доступность CDN и хостингов (тест 16 KB) (детект сброса соединений после 14–34 КБ данных)
  • 4 — Поиск белых SNI (поиск незаблокированных доменов для обхода DPI)
  • 5 — Доступность Telegram (проверка доступности и скорости датацентров DC1–DC5)

🏗️ Сборка из исходников

Для самостоятельной сборки потребуется установленный Rust (версии 1.80+):

git clone https://github.com/Runnin4ik/dpi-detector.git -b rust
cd dpi-detector
cargo build --release -p dpi-detector

Скомпилированный бинарник будет находиться в target/release/dpi-detector (dpi-detector.exe на Windows).

Для статической сборки под Windows без внешних зависимостей CRT:

RUSTFLAGS="-C target-feature=+crt-static" cargo build --release -p dpi-detector