diff --git a/binaries/aarch64/nfqws b/binaries/aarch64/nfqws index 650dbf68..b4aa038b 100755 Binary files a/binaries/aarch64/nfqws and b/binaries/aarch64/nfqws differ diff --git a/binaries/arm/nfqws b/binaries/arm/nfqws index 0dfe1305..7d9fb2d7 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 2635aeef..4f323206 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 63e28ff7..96d2f922 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 a4ee2c76..dfa0304e 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 99840c0c..22c843df 100755 Binary files a/binaries/ppc/nfqws and b/binaries/ppc/nfqws differ diff --git a/binaries/x86/nfqws b/binaries/x86/nfqws index f1f67458..d843aaca 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 d6a67087..100f13a4 100755 Binary files a/binaries/x86_64/nfqws and b/binaries/x86_64/nfqws differ diff --git a/blockcheck.sh b/blockcheck.sh index 54b3dc39..6ddd7951 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 035a0003..b5691216 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 d655138d..ebc8eabf 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 d9166bc3..e07739ee 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);