Perangkat lunak ini dirancang untuk melewati sistem Inspeksi Paket Mendalam yang ditemukan di banyak Penyedia Layanan Internet yang memblokir akses ke situs web tertentu.
Ini menangani DPI yang terhubung menggunakan splitter optik atau port mirroring ( DPI Pasif ) yang tidak memblokir data apa pun tetapi hanya membalas lebih cepat dari tujuan yang diminta, dan DPI Aktif terhubung secara berurutan.
Windows 7, 8, 8.1, 10 atau 11 dengan hak administrator diperlukan.
Skrip ini meluncurkan GoodbyeDPI dalam mode yang disarankan dengan pengalihan penyelesai DNS ke Yandex DNS pada port non-standar (untuk mencegah keracunan DNS).
Jika berhasil — selamat! Anda dapat menggunakannya apa adanya atau mengonfigurasinya lebih lanjut.
Unduh versi terbaru dari halaman Rilis dan jalankan.
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.
Untuk memeriksa apakah DPI ISP Anda dapat diakali, pertama-tama pastikan penyedia Anda tidak meracuni jawaban DNS dengan mengaktifkan opsi "DNS Aman (DNS melalui HTTPS)" di browser Anda.
Kemudian jalankan goodbyedpi.exe
yang dapat dieksekusi tanpa opsi apa pun. Jika berhasil — selamat! Anda dapat menggunakannya apa adanya atau mengkonfigurasi lebih lanjut, misalnya dengan menggunakan opsi --blacklist
jika daftar situs web yang diblokir diketahui dan tersedia untuk negara Anda.
Jika penyedia Anda mencegat permintaan DNS, Anda mungkin ingin menggunakan opsi --dns-addr
ke penyelesai DNS publik yang berjalan pada port non-standar (seperti Yandex DNS 77.88.8.8:1253
) atau mengonfigurasi DNS melalui HTTPS/TLS menggunakan pihak ketiga- lamaran pihak.
Periksa skrip .cmd dan modifikasi sesuai preferensi dan kondisi jaringan Anda.
Kebanyakan DPI Pasif mengirimkan Pengalihan HTTP 302 jika Anda mencoba mengakses situs web yang diblokir melalui HTTP dan Reset TCP jika HTTPS, lebih cepat daripada situs web tujuan. Paket yang dikirim melalui DPI biasanya memiliki bidang Identifikasi IP yang sama dengan 0x0000
atau 0x0001
, seperti yang terlihat pada penyedia Rusia. Paket-paket ini, jika mereka mengarahkan Anda ke situs web lain (halaman sensor), diblokir oleh GoodbyeDPI.
DPI aktif lebih sulit untuk dibodohi. Saat ini perangkat lunak menggunakan 7 metode untuk menghindari DPI Aktif:
Host
dengan hoSt
Host
Metode ini tidak boleh merusak situs web mana pun karena sepenuhnya kompatibel dengan standar TCP dan HTTP, namun cukup untuk mencegah klasifikasi data DPI dan menghindari sensor. Ruang tambahan mungkin merusak beberapa situs web, meskipun hal ini dapat diterima berdasarkan spesifikasi HTTP/1.1 (lihat 19.3 Aplikasi yang Toleran).
Program ini memuat driver WinDivert yang menggunakan Platform Penyaringan Windows untuk mengatur filter dan mengarahkan paket ke ruang pengguna. Ini berjalan selama jendela konsol terlihat dan berakhir ketika Anda menutup jendela.
Proyek ini dapat dibangun menggunakan GNU Make dan mingw . Satu-satunya ketergantungan adalah WinDivert.
Untuk membangun exe x86, jalankan:
make CPREFIX=i686-w64-mingw32- WINDIVERTHEADERS=/path/to/windivert/include WINDIVERTLIBS=/path/to/windivert/x86
Dan untuk x86_64:
make CPREFIX=x86_64-w64-mingw32- BIT64=1 WINDIVERTHEADERS=/path/to/windivert/include WINDIVERTLIBS=/path/to/windivert/amd64
Periksa contoh di skrip service_install_russia_blacklist.cmd
, service_install_russia_blacklist_dnsredir.cmd
dan service_remove.cmd
.
Ubah sesuai kebutuhan Anda.
Advanced Stream Detect
di Pusat Kontrol Killer tidak kompatibel dengan GoodbyeDPI, nonaktifkan.Terima kasih @ basil00 untuk WinDivert. Itulah bagian utama dari program ini.
Terima kasih untuk setiap kontributor BlockCheck. Tidak mungkin memahami perilaku DPI tanpa utilitas ini.