Релизнул CLI-инструмент для детектирования DPI-блокировок на Python
Возможности:
Тестирование доступности доменов через 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 софт, то не забывайте на время тестов пускать через него ВЕСЬ трафик, а не только по листам.
Прикольная штука. Отдельное спасибо за версию под Windows, наконец-то кто-то подумал про обычных пользователей.
Хотелось бы также иметь возможность автоматического захвата результата в виде общего скриншота или хотя бы в виде выгрузки в текстовый файл. Сейчас потому что пришлось нарезать и объединять два скрина через Paint.
На всякий случай тоже выложу свои результаты. Московская область, г. Щёлково, местный провайдер. Кто там говорил, что белых списков нет и не будет? По-моему, они по факту уже есть.
Похоже что нужно будет сделать несколько DoH/обычных серверов и перебирать их.
Также в ближайших планах кроме того что выше написали:
Добавить больше HTTP tcp-16-20 эндпоинтов, т.к. для них нужны отдельные обходы, а HTTP до сих пор активно используется, например в GTA5 (судя по чужим данным)
Добавить режим повторного тестирования при нажатии enter (ctrc + c для выхода)
При запуске тестера возможность выбора: тестировать домены, TCP16-20 или все вместе (по умолчанию)
Улучшить описание, что проверка перехвата DNS в скрипте независимая от dns ресолвера системы/роутера и показывает только сам факт перехвата провайдером
Еще бывает timeout рандомные вылетают при проверке доменов, хотя в браузере они открываются.
Для большей настраиваемости можно установить в винду 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 можно добраться, расковыряв экзешник.
На семерке последняя поддерживаемая версия питона 3.8, а в новом релизе пришлось поднять до 3.10.
Можно пока версией 1.0 пользоваться, там должно работать. Возможно в будущих релизах смогу сделать откатить минимальную версию до 3.8
Вот ещё этот у многих блочат так, что популярные 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, если предыдущий не подойдёт)
Горизонтальное сканирование доменов вместо вертикального — теперь используется 4 последовательные фазы: DNS-резолв → TLS 1.3 → TLS 1.2 → HTTP. Это исправило проблемы при тестировании доменов в виде рандомных timeout, не соответствующих действительности.
Улучшена классификация HTTP ошибок.
Переработана DNS проверка: добавлены списки UPD DNS и DoH. Теперь если какой-то из них не доступен — скрипт пробует другие.
Добавлена возможность сохранения вывода результатов в файл. Настраивается при запуске скрипта.
При запуске скрипта добавлен выбор, какую именно провести проверку (DNS, домены, TCP16-20).
После завершения теста можно сразу же запустить его еще раз, нажав enter.
Интерфейс
Добавлена красивая итоговая табличка с результатами.
В тесте TCP16-20 убраны флаги стран из вывода (для лучшей совместимости с консолью Win).
В тесте TCP16-20 теперь выводятся ASN тестируемых ссылок.
В тесте на блок доменов теперь пишет минимальное время запроса к домену, а не максимальное.
Другие небольшие улучшения визуала.
Портативность и .exe
Добавлена возможность переопределять конфиг и файлы для .exe формата. Теперь можно положить файлы (config.py, domains.txt и tcp_16_20_targets.json) рядом с .exe, и они подхватятся автоматически.