Find a file
2026-04-07 14:32:45 +03:00
.github/workflows add README and CI/CD 2026-04-07 14:32:45 +03:00
.idea 1.1 2026-04-07 14:17:43 +03:00
app add README and CI/CD 2026-04-07 14:32:45 +03:00
gradle 1.0 2026-04-07 14:07:15 +03:00
.gitignore add README and CI/CD 2026-04-07 14:32:45 +03:00
build.gradle.kts init 2026-04-07 00:45:40 +03:00
gradle.properties init 2026-04-07 00:45:40 +03:00
gradlew init 2026-04-07 00:45:40 +03:00
gradlew.bat init 2026-04-07 00:45:40 +03:00
ocr_methodika_vpn_proxy.md init 2026-04-07 00:45:40 +03:00
README.md add README and CI/CD 2026-04-07 14:32:45 +03:00
settings.gradle.kts init 2026-04-07 00:45:40 +03:00

RKNHardering

Android-приложение для обнаружения VPN и прокси на устройстве. Реализует методику РКН по выявлению средств обхода блокировок.

Минимальная версия Android: 8.0 (API 26).

Что проверяется

Приложение запускает четыре независимых проверки и выносит итоговый вердикт.

GeoIP

Запрашивает внешний API (ip-api.com) и анализирует публичный IP устройства:

  • страна IP (не Россия — подозрительно)
  • принадлежность к хостинг-провайдеру
  • наличие IP в базах известных прокси/VPN

Прямые признаки

Проверяет системные признаки VPN без сетевых запросов:

  • флаг TRANSPORT_VPN в NetworkCapabilities
  • флаги IS_VPN, VpnTransportInfo в системных capabilities
  • системные переменные http.proxyHost, socksProxyHost
  • известные прокси-порты (1080, 8080, 3128, 9050 и др.)

Косвенные признаки

Анализирует сетевую конфигурацию устройства:

  • отсутствие capability NOT_VPN
  • наличие интерфейсов tun*, tap*, wg*, ppp*, ipsec*
  • аномальный MTU (< 1500) на нестандартных интерфейсах
  • маршрут по умолчанию через нестандартный интерфейс
  • DNS-серверы на localhost или в частных подсетях

Bypass-проверка

Сканирует локальные порты на наличие открытых прокси и Xray/V2Ray API:

  • HTTP/SOCKS прокси на известных портах
  • gRPC API Xray-core на стандартных портах

Вердикт

GeoIP Прямые Косвенные Bypass Вердикт
- any - - Не обнаружен
+ - - - Требует проверки
- + + - Требует проверки
+ +или+ - Обнаружен
any any any + Обнаружен

Сборка

Требования: JDK 17+, Android SDK с Build Tools для API 36.

./gradlew assembleDebug

APK будет в app/build/outputs/apk/debug/app-debug.apk.

Релиз

Release APK собирается и публикуется автоматически через GitHub Actions:

  • при пуше тега вида v1.0, v1.2.3
  • вручную через вкладку Actions → Release → Run workflow

Подписанный APK прикладывается к GitHub Release.

Настройка подписи (один раз)

  1. Сгенерировать keystore:

    keytool -genkey -v -keystore release.jks -alias release -keyalg RSA -keysize 2048 -validity 10000
    
  2. Добавить в GitHub → Settings → Secrets and variables → Actions:

    Secret Значение
    KEYSTORE_BASE64 base64 -w0 release.jks
    KEYSTORE_PASSWORD пароль keystore
    KEY_ALIAS release
    KEY_PASSWORD пароль ключа
  3. После этого любой пуш тега создаёт подписанный релиз автоматически.