diff --git a/binaries/aarch64/nfqws b/binaries/aarch64/nfqws index 650dbf6..b4aa038 100755 Binary files a/binaries/aarch64/nfqws and b/binaries/aarch64/nfqws differ diff --git a/binaries/arm/nfqws b/binaries/arm/nfqws index 0dfe130..7d9fb2d 100755 Binary files a/binaries/arm/nfqws and b/binaries/arm/nfqws differ diff --git a/binaries/mips32r1-lsb/nfqws b/binaries/mips32r1-lsb/nfqws index 2635aee..4f32320 100755 Binary files a/binaries/mips32r1-lsb/nfqws and b/binaries/mips32r1-lsb/nfqws differ diff --git a/binaries/mips32r1-msb/nfqws b/binaries/mips32r1-msb/nfqws index 63e28ff..96d2f92 100755 Binary files a/binaries/mips32r1-msb/nfqws and b/binaries/mips32r1-msb/nfqws differ diff --git a/binaries/mips64r2-msb/nfqws b/binaries/mips64r2-msb/nfqws index a4ee2c7..dfa0304 100755 Binary files a/binaries/mips64r2-msb/nfqws and b/binaries/mips64r2-msb/nfqws differ diff --git a/binaries/ppc/nfqws b/binaries/ppc/nfqws index 99840c0..22c843d 100755 Binary files a/binaries/ppc/nfqws and b/binaries/ppc/nfqws differ diff --git a/binaries/x86/nfqws b/binaries/x86/nfqws index f1f6745..d843aac 100755 Binary files a/binaries/x86/nfqws and b/binaries/x86/nfqws differ diff --git a/binaries/x86_64/nfqws b/binaries/x86_64/nfqws index d6a6708..100f13a 100755 Binary files a/binaries/x86_64/nfqws and b/binaries/x86_64/nfqws differ diff --git a/blockcheck.sh b/blockcheck.sh index 54b3dc3..6ddd795 100755 --- a/blockcheck.sh +++ b/blockcheck.sh @@ -419,7 +419,7 @@ pktws_check_domain_bypass() s="$s --hostcase" pktws_curl_test $1 $3 $s && strategy="${strategy:-$s}" } - for pos in 1 2 4 5 10 50 100; do + for pos in 1 3 4 5 10 50 100; do s="--dpi-desync=split2 --dpi-desync-split-pos=$pos" if pktws_curl_test $1 $3 $s; then strategy="${strategy:-$s}" diff --git a/docs/readme.eng.md b/docs/readme.eng.md index 035a000..b569121 100644 --- a/docs/readme.eng.md +++ b/docs/readme.eng.md @@ -211,7 +211,7 @@ Disorder mode splits original packet and sends packets in the following order : 3. 1st segment 4. fake 1st segment, data filled with zeroes (2nd copy) -Original packet is always dropped. `--dpi-desync-split-pos` sets split position (default 3). +Original packet is always dropped. `--dpi-desync-split-pos` sets split position (default 2). If position is higher than packet length, pos=1 is used. This sequence is designed to make reconstruction of critical message as difficult as possible. Fake segments may not be required to bypass some DPIs, but can potentially help if more sophisticated reconstruction diff --git a/docs/readme.txt b/docs/readme.txt index d655138..ebc8eab 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -262,7 +262,7 @@ nfqws 3. 1-я часть пакета 4. поддельная 1-я часть пакета, поле данных заполнено нулями. отсылка 2-й раз. Оригинальный пакет дропается всегда. Параметр --dpi-desync-split-pos позволяет указать байтовую позицию, на которой -происходит разбивка. По умолчанию - 3. Если позиция больше длины пакета, позиция выбирается 1. +происходит разбивка. По умолчанию - 2. Если позиция больше длины пакета, позиция выбирается 1. Этой последовательностью для DPI максимально усложняется задача реконструкции начального сообщения, по которому принимается решение о блокировке. Некоторым DPI хватит и tcp сегментов в неправильном порядке, поддельные части сделаны для дополнительной надежности и более сложных алгоритмов реконструкции. diff --git a/nfq/nfqws.c b/nfq/nfqws.c index d9166bc..e07739e 100644 --- a/nfq/nfqws.c +++ b/nfq/nfqws.c @@ -543,7 +543,7 @@ int main(int argc, char **argv) params.desync_fwmark = DPI_DESYNC_FWMARK_DEFAULT; params.desync_skip_nosni = true; - params.desync_split_pos = 3; + params.desync_split_pos = 2; params.desync_repeats = 1; params.fake_tls_size = sizeof(fake_tls_clienthello_default); memcpy(params.fake_tls,fake_tls_clienthello_default,params.fake_tls_size);