Diese Software wurde entwickelt, um Deep Packet Inspection-Systeme zu umgehen, die bei vielen Internetdienstanbietern zu finden sind und den Zugriff auf bestimmte Websites blockieren.
Es verarbeitet DPI-Verbindungen über einen optischen Splitter oder Portspiegelung ( Passive DPI ), die keine Daten blockieren, sondern nur schneller als das angeforderte Ziel antworten, und aktive DPI -Verbindungen nacheinander.
Windows 7, 8, 8.1, 10 oder 11 mit Administratorrechten erforderlich.
Diese Skripte starten GoodbyeDPI im empfohlenen Modus mit DNS-Resolver-Umleitung zu Yandex DNS auf einem nicht standardmäßigen Port (um DNS-Poisoning zu verhindern).
Wenn es funktioniert – herzlichen Glückwunsch! Sie können es unverändert verwenden oder weiter konfigurieren.
Laden Sie die neueste Version von der Seite „Releases“ herunter und führen Sie sie aus.
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.
Um zu überprüfen, ob die DPI Ihres Internetdienstanbieters umgangen werden könnte, stellen Sie zunächst sicher, dass Ihr Anbieter DNS-Antworten nicht verfälscht, indem Sie in Ihrem Browser die Option „Sicheres DNS (DNS über HTTPS)“ aktivieren.
Führen Sie dann die ausführbare Datei goodbyedpi.exe
ohne Optionen aus. Wenn es funktioniert – herzlichen Glückwunsch! Sie können es unverändert verwenden oder weiter konfigurieren, beispielsweise mit der Option --blacklist
, wenn die Liste der blockierten Websites für Ihr Land bekannt und verfügbar ist.
Wenn Ihr Anbieter DNS-Anfragen abfängt, möchten Sie möglicherweise die Option --dns-addr
für einen öffentlichen DNS-Resolver verwenden, der auf einem nicht standardmäßigen Port ausgeführt wird (z. B. Yandex DNS 77.88.8.8:1253
) oder DNS über HTTPS/TLS mithilfe von Drittanbietern konfigurieren. Parteianträge.
Überprüfen Sie die .cmd-Skripte und ändern Sie sie entsprechend Ihren Vorlieben und Netzwerkbedingungen.
Die meisten passiven DPI-Werte senden eine HTTP 302-Umleitung, wenn Sie versuchen, über HTTP auf die blockierte Website zuzugreifen, und einen TCP-Reset im Fall von HTTPS, schneller als die Zielwebsite. Von DPI gesendete Pakete haben normalerweise ein IP-Identifikationsfeld gleich 0x0000
oder 0x0001
, wie es bei russischen Anbietern der Fall ist. Diese Pakete werden von GoodbyeDPI blockiert, wenn sie Sie auf eine andere Website (Zensurseite) weiterleiten.
Aktive DPI ist schwieriger zu täuschen. Derzeit verwendet die Software 7 Methoden, um Active DPI zu umgehen:
Host
Headers durch hoSt
Host
HeaderDiese Methoden sollten keine Website beschädigen, da sie vollständig mit den TCP- und HTTP-Standards kompatibel sind. Sie reichen jedoch aus, um die Klassifizierung von DPI-Daten zu verhindern und die Zensur zu umgehen. Zusätzlicher Speicherplatz kann bei einigen Websites zum Ausfall führen, obwohl dies gemäß der HTTP/1.1-Spezifikation zulässig ist (siehe 19.3 Tolerante Anwendungen).
Das Programm lädt den WinDivert-Treiber, der die Windows-Filterplattform verwendet, um Filter festzulegen und Pakete an den Benutzerbereich umzuleiten. Es läuft, solange das Konsolenfenster sichtbar ist, und wird beendet, wenn Sie das Fenster schließen.
Dieses Projekt kann mit GNU Make und mingw erstellt werden. Die einzige Abhängigkeit ist WinDivert.
Um eine x86-Exe zu erstellen, führen Sie Folgendes aus:
make CPREFIX=i686-w64-mingw32- WINDIVERTHEADERS=/path/to/windivert/include WINDIVERTLIBS=/path/to/windivert/x86
Und für x86_64:
make CPREFIX=x86_64-w64-mingw32- BIT64=1 WINDIVERTHEADERS=/path/to/windivert/include WINDIVERTLIBS=/path/to/windivert/amd64
Überprüfen Sie die Beispiele in den Skripten service_install_russia_blacklist.cmd
, service_install_russia_blacklist_dnsredir.cmd
und service_remove.cmd
.
Ändern Sie sie entsprechend Ihren eigenen Bedürfnissen.
Advanced Stream Detect
im Killer Control Center ist nicht mit GoodbyeDPI kompatibel, deaktivieren Sie es.Danke @basil00 für WinDivert. Das ist der Hauptteil dieses Programms.
Vielen Dank für jeden BlockCheck-Mitwirkenden. Ohne dieses Dienstprogramm wäre es unmöglich, das DPI-Verhalten zu verstehen.