Ce logiciel est conçu pour contourner les systèmes Deep Packet Inspection que l'on trouve chez de nombreux fournisseurs de services Internet et qui bloquent l'accès à certains sites Web.
Il gère les DPI connectés à l'aide d'un séparateur optique ou de la mise en miroir de ports ( DPI passif ) qui ne bloquent aucune donnée mais répondent simplement plus rapidement que la destination demandée, et les DPI actifs connectés en séquence.
Windows 7, 8, 8.1, 10 ou 11 avec privilèges d'administrateur requis.
Ces scripts lancent GoodbyeDPI en mode recommandé avec redirection du résolveur DNS vers Yandex DNS sur un port non standard (pour éviter l'empoisonnement DNS).
Si cela fonctionne, félicitations ! Vous pouvez l'utiliser tel quel ou le configurer davantage.
Téléchargez la dernière version à partir de la page Releases et exécutez-la.
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.
Pour vérifier si le DPI de votre FAI peut être contourné, assurez-vous d'abord que votre fournisseur n'empoisonne pas les réponses DNS en activant l'option « DNS sécurisé (DNS sur HTTPS) » dans votre navigateur.
Exécutez ensuite l’exécutable goodbyedpi.exe
sans aucune option. Si cela fonctionne, félicitations ! Vous pouvez l'utiliser tel quel ou le configurer davantage, par exemple en utilisant l'option --blacklist
si la liste des sites Web bloqués est connue et disponible pour votre pays.
Si votre fournisseur intercepte les requêtes DNS, vous souhaiterez peut-être utiliser l'option --dns-addr
pour un résolveur DNS public exécuté sur un port non standard (tel que Yandex DNS 77.88.8.8:1253
) ou configurer DNS sur HTTPS/TLS à l'aide d'un port tiers. demandes de parti.
Vérifiez les scripts .cmd et modifiez-les selon vos préférences et les conditions du réseau.
La plupart des DPI passifs envoient une redirection HTTP 302 si vous essayez d'accéder à un site Web bloqué via HTTP et une réinitialisation TCP en cas de HTTPS, plus rapide que le site Web de destination. Les paquets envoyés par DPI ont généralement un champ d'identification IP égal à 0x0000
ou 0x0001
, comme on le voit chez les fournisseurs russes. Ces paquets, s'ils vous redirigent vers un autre site internet (page de censure), sont bloqués par GoodbyeDPI.
Le DPI actif est plus difficile à tromper. Actuellement, le logiciel utilise 7 méthodes pour contourner Active DPI :
Host
par hoSt
Host
Ces méthodes ne devraient perturber aucun site Web car elles sont entièrement compatibles avec les normes TCP et HTTP, mais elles sont suffisantes pour empêcher la classification des données DPI et pour contourner la censure. Un espace supplémentaire peut interrompre certains sites Web, bien que cela soit acceptable selon la spécification HTTP/1.1 (voir 19.3 Applications tolérantes).
Le programme charge le pilote WinDivert qui utilise la plate-forme de filtrage Windows pour définir des filtres et rediriger les paquets vers l'espace utilisateur. Il fonctionne tant que la fenêtre de la console est visible et se termine lorsque vous fermez la fenêtre.
Ce projet peut être construit en utilisant GNU Make et mingw . La seule dépendance est WinDivert.
Pour créer un exe x86, exécutez :
make CPREFIX=i686-w64-mingw32- WINDIVERTHEADERS=/path/to/windivert/include WINDIVERTLIBS=/path/to/windivert/x86
Et pour x86_64 :
make CPREFIX=x86_64-w64-mingw32- BIT64=1 WINDIVERTHEADERS=/path/to/windivert/include WINDIVERTLIBS=/path/to/windivert/amd64
Consultez les exemples dans les scripts service_install_russia_blacklist.cmd
, service_install_russia_blacklist_dnsredir.cmd
et service_remove.cmd
.
Modifiez-les selon vos propres besoins.
Advanced Stream Detect
dans Killer Control Center est incompatible avec GoodbyeDPI, désactivez-le.Merci @basil00 pour WinDivert. C'est la partie principale de ce programme.
Merci pour chaque contributeur BlockCheck. Il serait impossible de comprendre le comportement DPI sans cet utilitaire.