uwrtey | Дата: Четверг, 12.09.2024, 13:55 | Сообщение # 1 |
 Генерал-майор
Группа: Администраторы
Сообщений: 3362
Статус: Offline
| GoodbyeDPI — Утилита обхода Deep Packet Inspection =========================
Это программное обеспечение предназначено для обхода систем глубокой проверки пакетов, используемых многими интернет-провайдерами, которые блокируют доступ к определенным веб-сайтам.
Он обрабатывает DPI, подключенный с помощью оптического разветвителя или зеркалирования портов (**Пассивный DPI**), который не блокирует никакие данные, а просто отвечает быстрее, чем запрошенный пункт назначения, и **Активный DPI**, подключенный последовательно.
**Windows 7, 8, 8.1, 10 or 11** с требуемыми правами администратора.
# Быстрый старт
скачай (https://github.com/ValdikSS/GoodbyeDPI/releases),
Распакуйте файл и запустите скрипт
Для России: 1_russia_blacklist_dnsredir.cmd
Для других стран: 2_any_country_dnsredir.cmd
Эти скрипты запускают GoodbyeDPI в рекомендуемом режиме с перенаправлением DNS-резолвера на DNS Яндекса на нестандартном порту (для предотвращения отравления DNS). Если работает — поздравляю! Можете использовать как есть или настроить дальше.
# Как использовать
Скачайте (https://github.com/ValdikSS/GoodbyeDPI/releases) и запустите.
``` Использование: goodbyedpi.exe [OPTION...] -p - блокировать пассивный DPI -q - блокировать QUIC/HTTP3 -r - замените Host на hoSt -s - удалить пробел между заголовком хоста и его значением -m - смешанный регистр заголовка хоста (test.com -> tEsT.cOm) -f <value> установить значение фрагментации HTTP -k <value> включить постоянную фрагментацию HTTP (keep-alive) и задать для нее значение -n - не ждать подтверждения первого сегмента, если включен параметр -k -e <value> установить фрагментацию HTTPS на значение -a - дополнительный пробел между Method и Request-URI (включает -s, может нарушить работу сайтов) -w - попытаться найти и проанализировать HTTP-трафик на всех обработанных портах (не только на порту 80) --port <value> дополнительный порт TCP для выполнения фрагментации (и HTTP-трюки с -w) --ip-id <value> обрабатывать дополнительный IP-идентификатор (десятичный, отбрасывать перенаправления и TCP RST с этим идентификатором).
Эту опцию можно указать несколько раз.
--dns-addr <value> перенаправлять UDP DNS-запросы на предоставленный IP-адрес (экспериментально) --dns-port <value> перенаправить UDP DNS-запросы на указанный порт (по умолчанию 53) --dnsv6-addr <value> перенаправлять DNS-запросы UDPv6 на предоставленный адрес IPv6 (экспериментально) --dnsv6-port <value> перенаправлять DNS-запросы UDPv6 на указанный порт (по умолчанию 53) --dns-verb печатать подробные сообщения о перенаправлении DNS --blacklist <txtfile> выполнять обходные трюки только для имен хостов и поддоменов из предоставленного текстового файла (HTTP Host/TLS SNI).
Эту опцию можно указать несколько раз.
--allow-no-sni выполняет обход, если TLS SNI не может быть обнаружен при включенном --blacklist. --frag-by-sni, если в пакете TLS обнаружен SNI, фрагментировать пакет непосредственно перед значением SNI. --set-ttl <value> активирует режим поддельного запроса и отправляет его с указанным значением TTL.
ОПАСНО! Может нарушить работу веб-сайтов неожиданным образом. Используйте с осторожностью (или --blacklist).
--auto-ttl [a1-a2-m] активировать режим поддельного запроса, автоматически определять TTL и уменьшать на основе расстояния. Если расстояние меньше a2, TTL уменьшается на a2. Если больше, используется масштаб (a1; a2) с расстоянием в качестве веса. Если полученное TTL больше m(ax), установите его на m. По умолчанию (если установлено): --auto-ttl 1-4-10. Также задает --min-ttl 3.
ОПАСНО! Может нарушить работу веб-сайтов неожиданным образом. Используйте с осторожностью (или --blacklist).
--min-ttl <value> минимальное расстояние TTL (128/64 - TTL), для которого следует отправлять поддельный запрос в режимах --set-ttl и --auto-ttl.
--wrong-chksum активировать режим поддельного запроса и отправлять его с неверной контрольной суммой TCP. Может не работать в виртуальной машине или с некоторыми маршрутизаторами, но безопаснее, чем set-ttl.
--wrong-seq активировать режим поддельного запроса и отправлять его с TCP SEQ/ACK в прошлом. --native-frag фрагментировать (разделять) пакеты, отправляя их более мелкими пакетами, без уменьшения размера окна. Работает быстрее (не замедляет соединение) и лучше.
--reverse-frag фрагментировать (разделять) пакеты так же, как --native-frag, но отправлять их в обратном порядке. Работает с веб-сайтами, которые не могут обрабатывать сегментированные HTTPS TLS ClientHello (потому что они получают поток TCP «объединенным»).
--max-payload [значение] пакеты с данными полезной нагрузки TCP больше, чем [значение], не будут обрабатываться. Используйте эту опцию, чтобы снизить загрузку ЦП, пропуская большой объем данных (например, передачу файлов) в уже установленных сеансах. Может пропустить некоторые большие HTTP-запросы из обработки. По умолчанию (если установлено): --max-payload 1200.
LEGACY-режимы: -1 -p -r -s -f 2 -k 2 -n -e 2 // наиболее совместимый режим -2 -p -r -s -f 2 -k 2 -n -e 40 // более высокая скорость для HTTPS, но при этом совместимая -3 -p -r -s -e 40 // более высокая скорость для HTTP и HTTPS -4 -p -r -s // лучшая скорость
Современные наборы режимов (более стабильные, более совместимые, более быстрые: -5 -f 2 -e 2 --auto-ttl --reverse-frag --max-payload -6 -f 2 -e 2 --wrong-seq --reverse-frag --max-payload -7 -f 2 -e 2 --wrong-chksum --reverse-frag --max-payload -8 -f 2 -e 2 --wrong-seq --wrong-chksum --reverse-frag --max-payload -9 -f 2 -e 2 --wrong-seq --wrong-chksum --reverse-frag --max-payload -q (this is the default)
Примечание: комбинация --wrong-seq и --wrong-chksum генерирует два разных поддельных пакета. ```
Чтобы проверить, можно ли обойти DPI вашего интернет-провайдера, сначала убедитесь, что ваш провайдер не отравляет ответы DNS, включив опцию «Безопасный DNS (DNS через HTTPS)» в своем браузере.
Chrome: Settings → [Privacy and security](chrome://settings/security) → Use secure DNS → With: NextDNS Firefox: [Settings](about:preferences) → Network Settings → Enable DNS over HTTPS → Use provider: NextDNS
Затем запустите исполняемый файл `goodbyedpi.exe` без каких-либо параметров. Если он работает — поздравляем! Вы можете использовать его как есть или настроить дополнительно, например, с помощью параметра `--blacklist`, если список заблокированных веб-сайтов известен и доступен для вашей страны.
Если ваш провайдер перехватывает DNS-запросы, вы можете использовать опцию `--dns-addr` для публичного DNS-резолвера, работающего на нестандартном порту (например, Yandex DNS `77.88.8.8:1253`), или настроить DNS через HTTPS/TLS с помощью сторонних приложений.
Проверьте скрипты .cmd и измените их в соответствии со своими предпочтениями и условиями сети.
# Как это работает?
### Пассивный DPI
Большинство пассивных DPI отправляют HTTP 302 Redirect, если вы пытаетесь получить доступ к заблокированному веб-сайту по HTTP и TCP Reset в случае HTTPS, быстрее, чем целевой веб-сайт. Пакеты, отправляемые DPI, обычно имеют поле IP Identification, равное `0x0000` или `0x0001`, как это видно у российских провайдеров. Эти пакеты, если они перенаправляют вас на другой веб-сайт (страницу цензуры), блокируются GoodbyeDPI.
### Активный DPI
Активный DPI обмануть сложнее. В настоящее время программное обеспечение использует 7 методов обхода Active DPI:
* Фрагментация на уровне TCP для первого пакета данных * Фрагментация на уровне TCP для постоянных (keep-alive) сеансов HTTP * Замена заголовка `Host` на `hoSt` * Удаление пробела между именем заголовка и значением в заголовке `Host` * Добавление дополнительного пробела между HTTP-методом (GET, POST и т. д.) и URI * Смешивание регистра значения заголовка Host * Отправка поддельных пакетов HTTP/HTTPS с низким значением Time-To-Live, неправильной контрольной суммой или неправильными номерами последовательности/подтверждения TCP для обмана DPI и предотвращения их доставки по назначению
Эти методы не должны нарушать работу веб-сайта, поскольку они полностью совместимы со стандартами TCP и HTTP, однако их достаточно, чтобы предотвратить классификацию данных DPI и обойти цензуру.
Дополнительное пространство может нарушить работу некоторых веб-сайтов, хотя это приемлемо по спецификации HTTP/1.1 (см. 19.3 Толерантные приложения).
Программа загружает драйвер WinDivert, который использует Windows Filtering Platform для установки фильтров и перенаправления пакетов в пользовательское пространство. Она работает, пока видно консольное окно, и завершается, когда вы закрываете окно.
# Как собрать из исходников
Этот проект можно собрать с помощью **GNU Make** и [**mingw**](https://mingw-w64.org). Единственная зависимость — [WinDivert](https://github.com/basil00/Divert).
Чтобы собрать x86 exe, выполните:
`make CPREFIX=i686-w64-mingw32- WINDIVERTHEADERS=/path/to/windivert/include WINDIVERTLIBS=/path/to/windivert/x86`
И для x86_64:
`make CPREFIX=x86_64-w64-mingw32- BIT64=1 WINDIVERTHEADERS=/path/to/windivert/include WINDIVERTLIBS=/path/to/windivert/amd64`
# Как установить как службу Windows
Проверьте примеры в скриптах `service_install_russia_blacklist.cmd`, `service_install_russia_blacklist_dnsredir.cmd` и `service_remove.cmd`.
Измените их в соответствии с вашими потребностями.
# Известные проблемы
* Ужасно устаревшие установки Windows 7 не могут загрузить драйвер WinDivert из-за отсутствия поддержки цифровых подписей SHA256. Установите KB3033929 [x86](https://www.microsoft.com/en-us/download/details.aspx?id=46078)/[x64] (https://www.microsoft.com/en-us/download/details.aspx?id=46148) или, что еще лучше, обновите всю систему с помощью Центра обновления Windows.
* Сетевые карты Intel/Qualcomm Killer: `Advanced Stream Detect` в Killer Control Center несовместим с GoodbyeDPI, [отключите его](https://github.com/ValdikSS/GoodbyeDPI/issues/541#issuecomment-2296038239).
* ~~Некоторые стеки SSL/TLS не могут обрабатывать фрагментированные пакеты ClientHello, и веб-сайты HTTPS не открываются. Ошибка: [#4](https://github.com/ValdikSS/GoodbyeDPI/issues/4), [#64](https://github.com/ValdikSS/GoodbyeDPI/issues/64). ~~ Проблемы фрагментации исправлены в v0.1.7.
* ~~ESET Antivirus несовместим с драйвером WinDivert [#91](https://github.com/ValdikSS/GoodbyeDPI/issues/91). Скорее всего, это ошибка антивируса, а не WinDivert.~~
# Похожие проекты
- **[zapret](https://github.com/bol-van/zapret)** от @bol-van (для MacOS, Linux и Windows) - **[Green Tunnel](https://github.com/SadeghHayeri/GreenTunnel)** от @SadeghHayeri (для MacOS, Linux и Windows) - **[DPI Tunnel CLI](https://github.com/nomoresat/DPITunnel-cli)** от @zhenyolka (для Linux и маршрутизаторов) - **[DPI Tunnel для Android](https://github.com/nomoresat/DPITunnel-android)** от @zhenyolka (для Android) - **[PowerTunnel](https://github.com/krlvm/PowerTunnel)** от @krlvm (для Windows, MacOS и Linux) - **[PowerTunnel для Android](https://github.com/krlvm/PowerTunnel-Android)** от @krlvm (для Android) - **[SpoofDPI](https://github.com/xvzc/SpoofDPI)** от @xvzc (для macOS и Linux) - **[GhosTCP](https://github.com/macronut/ghostcp)** от @macronut (для Windows) - **[ByeDPI](https://github.com/hufrea/byedpi)** для Linux/Windows + **[ByeDPIAndroid](https://github.com/dovecoteescapee/ByeDPIAndroid/)** для Android (без рута) - **[youtubeUnblock](https://github.com/Waujito/youtubeUnblock/)** от @Waujito (для маршрутизаторов OpenWRT/Entware и Linux)
# Kudos
/// goodbyedpi.exe -1 -e 2 -- --dns-port 1253........................................... VitGo
не успеваю за своими мыслями......
|
|
| |