CLI-инструмент для тестирования DPI-блокировок: домены, TLS, TCP 16-20KB, DNS

Релизнул CLI-инструмент для детектирования DPI-блокировок на Python :magnifying_glass_tilted_left:

Возможности:

  • Тестирование доступности доменов через TLS 1.2/1.3 и HTTP - 42 домена
  • Детекция TCP 16-20KB блокировок (на самом деле 14-32KB) - 70 эндпоинтов
  • Детекция перехвата и изменения незашифрованных DNS запросов провайдером
  • Детальная диагностика типов блокировок (DPI, DNS, TLS MITM, ISP редиректы и т.д.)

Можно использовать свои списки доменов и настраивать параметры проверки. Поддерживается Windows, Linux, macOS.

Полезно для тестирования рабочих стратегий anti-dpi инструментов.

В этой теме можно делиться результатами, проблемами, предлагать новый функционал и запросы на добавление новых CDN/хостинг-провайдеров.
Также буду оповещать об обновлениях.

UPD: если используете anti-dpi софт, то не забывайте на время тестов пускать через него ВЕСЬ трафик, а не только по листам.

Работает, все ок, можно добавить H2nexus ? https://2ip.ru/as/215730/

Прикольная штука. Отдельное спасибо за версию под Windows, наконец-то кто-то подумал про обычных пользователей.

Хотелось бы также иметь возможность автоматического захвата результата в виде общего скриншота или хотя бы в виде выгрузки в текстовый файл. Сейчас потому что пришлось нарезать и объединять два скрина через Paint.

На всякий случай тоже выложу свои результаты. Московская область, г. Щёлково, местный провайдер. Кто там говорил, что белых списков нет и не будет? По-моему, они по факту уже есть.

Похоже что нужно будет сделать несколько DoH/обычных серверов и перебирать их.
Также в ближайших планах кроме того что выше написали:

  • Добавить больше HTTP tcp-16-20 эндпоинтов, т.к. для них нужны отдельные обходы, а HTTP до сих пор активно используется, например в GTA5 (судя по чужим данным)
  • Добавить режим повторного тестирования при нажатии enter (ctrc + c для выхода)
  • При запуске тестера возможность выбора: тестировать домены, TCP16-20 или все вместе (по умолчанию)
  • Улучшить описание, что проверка перехвата DNS в скрипте независимая от dns ресолвера системы/роутера и показывает только сам факт перехвата провайдером

Еще бывает timeout рандомные вылетают при проверке доменов, хотя в браузере они открываются.

Игры до года так 17-18го активно использовали HTTP, некоторые могли перевести их HTTPS.
Пример - http://tm-gta5-prod.ros.rockstargames.com

Скачал версию под винду. Подскажите, а можно ему скормить свой список доменов для проверки, а не тот что вшит в .exe-шник?

Для большей настраиваемости можно установить в винду Python 3 (не portable), поставив в установщике галочки на Pip и PATH.
Скачать и распаковать https://github.com/Runnin4ik/dpi-detector/archive/refs/heads/main.zip
Зайти в распакованную папку в терминале командой cd
А затем выполнить команду:
python -m pip install -r requirements.txt
Домены хранятся в файле domains.txt
Запуск детектора, установленного таким способом, из рабочей папки:
python dpi_detector.py

Я не уверен, что pip осилит поставить все зависимости на винде.
Плохо, если у вас 32 битная винда и очень плохо, если старее win10.

Возможно, до файла domains.txt можно добраться, расковыряв экзешник.

Я так понимаю, что win7 вообще в пролёте? Даже не запускается (.

На семерке последняя поддерживаемая версия питона 3.8, а в новом релизе пришлось поднять до 3.10.
Можно пока версией 1.0 пользоваться, там должно работать. Возможно в будущих релизах смогу сделать откатить минимальную версию до 3.8

smitsrl.com мертв похоже.

DPI Detector обновлен до версии v1.2

Пересмотрен список TCP16-20 целей, удалены:

  • Нестабильные цели
  • Незаблокированные цели
  • Цели в белых списках

Вместо них добавлены новые, а также начал понемногу добавлять хостинги:
nuxt.cloud, H2nexus, Alexhost

:eyes:Буду благодарен если подскажите сайты под TCP16-20 на AS популярных хостингов чтобы добавить их в тест.

Интерфейс

  • Изменена сортировка списков
  • Улучшено пояснение при детекте подмены DNS провайдером

Канадский OVH. https://cedapug.com/cedapug/images/3.png

Вот ещё этот у многих блочат так, что популярные SNI не помогают - FranTech Solutions:

AS53667
Пример сайта: gazellegames.net (198.251.84.208)
URL для проверки:
https://gazellegames.net/static/styles/public/fonts/roboto-regular.woff (69 kB)
https://gazellegames.net/static/styles/public/images/ggnwall.png (499 kB, если предыдущий не подойдёт)

Да, есть 20кб блок. Zapret со stun стратегией обходит такое

Не в пролете. Патчите этим https://github.com/stunndard/golangwin7patch/releases
Либо устанавливаете это https://github.com/YuZhouRen86/VxKex-NEXT/releases и в свойствах нужного exe-ника ставите галку “enable VxKex”

www.discord.app - Stichting
discordstatus.com - Amazon
stable.dl2.discordapp.net - Google
abs-0.twimg.com - Fastly
www.dnsleaktest.com - Akamai
media5.cdnbase.com - Hetzner
ftp.cwer.su - JSC

Верхние 4 это неудачный пример, они скорее всего блочатся отдельно и к ним применяются правила чёрного списка доменов, а не только замедление по AS

Релизнута версия 1.3

:rocket: Основные изменения

  • Горизонтальное сканирование доменов вместо вертикального — теперь используется 4 последовательные фазы: DNS-резолв → TLS 1.3 → TLS 1.2 → HTTP. Это исправило проблемы при тестировании доменов в виде рандомных timeout, не соответствующих действительности.
  • Улучшена классификация HTTP ошибок.
  • Переработана DNS проверка: добавлены списки UPD DNS и DoH. Теперь если какой-то из них не доступен — скрипт пробует другие.
  • Добавлена возможность сохранения вывода результатов в файл. Настраивается при запуске скрипта.
  • При запуске скрипта добавлен выбор, какую именно провести проверку (DNS, домены, TCP16-20).
  • После завершения теста можно сразу же запустить его еще раз, нажав enter.

:laptop: Интерфейс

  • Добавлена красивая итоговая табличка с результатами.
  • В тесте TCP16-20 убраны флаги стран из вывода (для лучшей совместимости с консолью Win).
  • В тесте TCP16-20 теперь выводятся ASN тестируемых ссылок.
  • В тесте на блок доменов теперь пишет минимальное время запроса к домену, а не максимальное.
  • Другие небольшие улучшения визуала.

:package: Портативность и .exe

  • Добавлена возможность переопределять конфиг и файлы для .exe формата. Теперь можно положить файлы (config.py, domains.txt и tcp_16_20_targets.json) рядом с .exe, и они подхватятся автоматически.

Верхние 4 это неудачный пример, они скорее всего блочатся отдельно

Да, желательно нужны ссылки со следующими требованиями:

  • Домен не заблокирован в РФ
  • Домен не в белом списке TCP16-20 у ТПСУ сам по себе (блокировка должна быть)
  • Это должна быть ссылка на ресурс размером >64кб в несжатом виде и без динамических имен. Например файл шрифтов, видео, картинка или is/CSS файл.
  • Сервер должен быть стабилен и не выдавать ошибки при тестировании через раз
  • Желательно с нормальным пингом/общим временем тесте
  • Желательно на AS которого еще нет в списке целей. Можно какие-то более мелкие хостинги например, список есть от 0ka в соседних темах.

FranTech / BuyVM