Este software foi projetado para contornar os sistemas de inspeção profunda de pacotes encontrados em muitos provedores de serviços de Internet que bloqueiam o acesso a determinados sites.
Ele lida com DPI conectado usando divisor óptico ou espelhamento de porta ( DPI passivo ) que não bloqueia nenhum dado, apenas responde mais rápido que o destino solicitado, e DPI ativo conectado em sequência.
Windows 7, 8, 8.1, 10 ou 11 com privilégios de administrador necessários.
Esses scripts iniciam GoodbyeDPI no modo recomendado com redirecionamento do resolvedor de DNS para Yandex DNS em uma porta não padrão (para evitar envenenamento de DNS).
Se funcionar – parabéns! Você pode usá-lo como está ou configurar ainda mais.
Baixe a versão mais recente na página de lançamentos e execute.
Usage: goodbyedpi.exe [OPTION...]
-p block passive DPI
-q block QUIC/HTTP3
-r replace Host with hoSt
-s remove space between host header and its value
-m mix Host header case (test.com -> tEsT.cOm)
-f set HTTP fragmentation to value
-k enable HTTP persistent (keep-alive) fragmentation and set it to value
-n do not wait for first segment ACK when -k is enabled
-e set HTTPS fragmentation to value
-a additional space between Method and Request-URI (enables -s, may break sites)
-w try to find and parse HTTP traffic on all processed ports (not only on port 80)
--port additional TCP port to perform fragmentation on (and HTTP tricks with -w)
--ip-id handle additional IP ID (decimal, drop redirects and TCP RSTs with this ID).
This option can be supplied multiple times.
--dns-addr redirect UDP DNS requests to the supplied IP address (experimental)
--dns-port redirect UDP DNS requests to the supplied port (53 by default)
--dnsv6-addr redirect UDPv6 DNS requests to the supplied IPv6 address (experimental)
--dnsv6-port redirect UDPv6 DNS requests to the supplied port (53 by default)
--dns-verb print verbose DNS redirection messages
--blacklist perform circumvention tricks only to host names and subdomains from
supplied text file (HTTP Host/TLS SNI).
This option can be supplied multiple times.
--allow-no-sni perform circumvention if TLS SNI can't be detected with --blacklist enabled.
--frag-by-sni if SNI is detected in TLS packet, fragment the packet right before SNI value.
--set-ttl activate Fake Request Mode and send it with supplied TTL value.
DANGEROUS! May break websites in unexpected ways. Use with care (or --blacklist).
--auto-ttl [a1-a2-m] activate Fake Request Mode, automatically detect TTL and decrease
it based on a distance. If the distance is shorter than a2, TTL is decreased
by a2. If it's longer, (a1; a2) scale is used with the distance as a weight.
If the resulting TTL is more than m(ax), set it to m.
Default (if set): --auto-ttl 1-4-10. Also sets --min-ttl 3.
DANGEROUS! May break websites in unexpected ways. Use with care (or --blacklist).
--min-ttl minimum TTL distance (128/64 - TTL) for which to send Fake Request
in --set-ttl and --auto-ttl modes.
--wrong-chksum activate Fake Request Mode and send it with incorrect TCP checksum.
May not work in a VM or with some routers, but is safer than set-ttl.
--wrong-seq activate Fake Request Mode and send it with TCP SEQ/ACK in the past.
--native-frag fragment (split) the packets by sending them in smaller packets, without
shrinking the Window Size. Works faster (does not slow down the connection)
and better.
--reverse-frag fragment (split) the packets just as --native-frag, but send them in the
reversed order. Works with the websites which could not handle segmented
HTTPS TLS ClientHello (because they receive the TCP flow "combined").
--fake-from-hex Load fake packets for Fake Request Mode from HEX values (like 1234abcDEF).
This option can be supplied multiple times, in this case each fake packet
would be sent on every request in the command line argument order.
--fake-with-sni Generate fake packets for Fake Request Mode with given SNI domain name.
The packets mimic Mozilla Firefox 130 TLS ClientHello packet
(with random generated fake SessionID, key shares and ECH grease).
Can be supplied multiple times for multiple fake packets.
--fake-gen Generate random-filled fake packets for Fake Request Mode, value of them
(up to 30).
--fake-resend Send each fake packet value number of times.
Default: 1 (send each packet once).
--max-payload [value] packets with TCP payload data more than [value] won't be processed.
Use this option to reduce CPU usage by skipping huge amount of data
(like file transfers) in already established sessions.
May skip some huge HTTP requests from being processed.
Default (if set): --max-payload 1200.
LEGACY modesets:
-1 -p -r -s -f 2 -k 2 -n -e 2 (most compatible mode)
-2 -p -r -s -f 2 -k 2 -n -e 40 (better speed for HTTPS yet still compatible)
-3 -p -r -s -e 40 (better speed for HTTP and HTTPS)
-4 -p -r -s (best speed)
Modern modesets (more stable, more compatible, faster):
-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)
Note: combination of --wrong-seq and --wrong-chksum generates two different fake packets.
Para verificar se o DPI do seu ISP pode ser contornado, primeiro certifique-se de que seu provedor não envenene as respostas DNS ativando a opção "DNS seguro (DNS sobre HTTPS)" em seu navegador.
Em seguida, execute o executável goodbyedpi.exe
sem nenhuma opção. Se funcionar – parabéns! Você pode usá-lo como está ou configurá-lo ainda mais, por exemplo, usando a opção --blacklist
se a lista de sites bloqueados for conhecida e estiver disponível em seu país.
Se o seu provedor interceptar solicitações de DNS, você pode usar a opção --dns-addr
para um resolvedor de DNS público executado em uma porta não padrão (como Yandex DNS 77.88.8.8:1253
) ou configurar DNS sobre HTTPS/TLS usando terceiros. candidaturas partidárias.
Verifique os scripts .cmd e modifique-os de acordo com sua preferência e condições de rede.
A maioria dos DPI passivos envia redirecionamento HTTP 302 se você tentar acessar o site bloqueado por HTTP e redefinição de TCP no caso de HTTPS, mais rápido que o site de destino. Pacotes enviados por DPI geralmente possuem campo de identificação IP igual a 0x0000
ou 0x0001
, como visto nos provedores russos. Esses pacotes, se redirecionarem você para outro site (página de censura), serão bloqueados pelo GoodbyeDPI.
O DPI ativo é mais difícil de enganar. Atualmente o software usa 7 métodos para contornar o DPI ativo:
Host
por hoSt
Host
Esses métodos não devem quebrar nenhum site, pois são totalmente compatíveis com os padrões TCP e HTTP, mas são suficientes para evitar a classificação de dados DPI e contornar a censura. Espaço adicional pode prejudicar alguns sites, embora seja aceitável pela especificação HTTP/1.1 (consulte 19.3 Aplicativos Tolerantes).
O programa carrega o driver WinDivert que usa a Plataforma de Filtragem do Windows para definir filtros e redirecionar pacotes para o espaço do usuário. Ele está em execução enquanto a janela do console estiver visível e termina quando você fecha a janela.
Este projeto pode ser construído usando GNU Make e mingw . A única dependência é WinDivert.
Para construir o exe x86, execute:
make CPREFIX=i686-w64-mingw32- WINDIVERTHEADERS=/path/to/windivert/include WINDIVERTLIBS=/path/to/windivert/x86
E para x86_64:
make CPREFIX=x86_64-w64-mingw32- BIT64=1 WINDIVERTHEADERS=/path/to/windivert/include WINDIVERTLIBS=/path/to/windivert/amd64
Verifique exemplos nos scripts service_install_russia_blacklist.cmd
, service_install_russia_blacklist_dnsredir.cmd
e service_remove.cmd
.
Modifique-os de acordo com suas necessidades.
Advanced Stream Detect
no Killer Control Center é incompatível com GoodbyeDPI, desative-o.Obrigado @ basil00 pelo WinDivert. Essa é a parte principal deste programa.
Obrigado por cada contribuidor do BlockCheck. Seria impossível entender o comportamento do DPI sem este utilitário.