From a39c18737b8a1646bf0489e3d2a4fe8ab0bba77b Mon Sep 17 00:00:00 2001 From: bol-van Date: Thu, 22 May 2025 11:00:11 +0300 Subject: [PATCH] nfqws: - disables autottl --- docs/readme.en.md | 12 +++++----- docs/readme.md | 12 +++++----- nfq/nfqws.c | 58 ++++++++++++++++++++++++++--------------------- 3 files changed, 44 insertions(+), 38 deletions(-) diff --git a/docs/readme.en.md b/docs/readme.en.md index 160da3c7..55e59066 100644 --- a/docs/readme.en.md +++ b/docs/readme.en.md @@ -163,16 +163,16 @@ nfqws takes the following parameters: --synack-split=[syn|synack|acksyn] ; perform TCP split handshake : send SYN only, SYN+ACK or ACK+SYN --orig-ttl= ; set TTL for original packets --orig-ttl6= ; set ipv6 hop limit for original packets. by default ttl value is used - --orig-autottl=[[:[-]]] ; auto ttl mode for both ipv4 and ipv6. default: +5:3-64 - --orig-autottl6=[[:[-]]] ; overrides --orig-autottl for ipv6 only + --orig-autottl=[[:[-]]|-] ; auto ttl mode for both ipv4 and ipv6. default: +5:3-64. "0:0-0" or "-" disables autottl. + --orig-autottl6=[[:[-]]|-] ; overrides --orig-autottl for ipv6 only --orig-mod-start=[n|d|s]N ; apply orig TTL mod to packet numbers (n, default), data packet numbers (d), relative sequence (s) greater or equal than N --orig-mod-cutoff=[n|d|s]N ; apply orig TTL mod to packet numbers (n, default), data packet numbers (d), relative sequence (s) less than N --dup= ; duplicate original packets. send N dups before original. --dup-replace=[0|1] ; 1 or no argument means do not send original, only dups --dup-ttl= ; set TTL for dups --dup-ttl6= ; set ipv6 hop limit for dups. by default ttl value is used - --dup-autottl=[[:[-]]] ; auto ttl mode for both ipv4 and ipv6. default: -1:3-64 - --dup-autottl6=[[:[-]]] ; overrides --dup-autottl for ipv6 only + --dup-autottl=[[:[-]]|-] ; auto ttl mode for both ipv4 and ipv6. default: -1:3-64. "0:0-0" or "-" disables autottl. + --dup-autottl6=[[:[-]]|-] ; overrides --dup-autottl for ipv6 only --dup-fooling=[,] ; can use multiple comma separated values. modes : none md5sig badseq badsum datanoack hopbyhop hopbyhop2 --dup-badseq-increment= ; badseq fooling seq signed increment for dup. default -10000 --dup-badack-increment= ; badseq fooling ackseq signed increment for dup. default -66000 @@ -182,8 +182,8 @@ nfqws takes the following parameters: --dpi-desync-fwmark= ; override fwmark for desync packet. default = 0x40000000 (1073741824) --dpi-desync-ttl= ; set ttl for desync packet --dpi-desync-ttl6= ; set ipv6 hop limit for desync packet. by default ttl value is used. - --dpi-desync-autottl=[[:[-]]] ; auto ttl mode for both ipv4 and ipv6. default: -1:3-20 - --dpi-desync-autottl6=[[:[-]]] ; overrides --dpi-desync-autottl for ipv6 only + --dpi-desync-autottl=[[:[-]]|-] ; auto ttl mode for both ipv4 and ipv6. default: -1:3-20. "0:0-0" or "-" disables autottl. + --dpi-desync-autottl6=[[:[-]]|-] ; overrides --dpi-desync-autottl for ipv6 only --dpi-desync-fooling=[,] ; can use multiple comma separated values. modes : none md5sig ts badseq badsum datanoack hopbyhop hopbyhop2 --dpi-desync-repeats= ; send every desync packet N times --dpi-desync-skip-nosni=0|1 ; 1(default)=do not act on ClientHello without SNI (ESNI ?) diff --git a/docs/readme.md b/docs/readme.md index a292a5f1..8b2189ea 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -184,16 +184,16 @@ dvtws, собираемый из тех же исходников (см. [док --synack-split=[syn|synack|acksyn] ; выполнить tcp split handshake. вместо SYN,ACK отсылать только SYN, SYN+ACK или ACK+SYN --orig-ttl= ; модифицировать TTL оригинального пакета --orig-ttl6= ; модифицировать ipv6 hop limit оригинальных пакетов. если не указано, используется значение --orig-ttl ---orig-autottl=[[:[-]]] ; режим auto ttl для ipv4 и ipv6. по умолчанию: +5:3-64. delta=0 отключает функцию ---orig-autottl6=[[:[-]]] ; переопределение предыдущего параметра для ipv6 +--orig-autottl=[[:[-]]|-] ; режим auto ttl для ipv4 и ipv6. по умолчанию: +5:3-64. "0:0-0" или "-" отключает функцию +--orig-autottl6=[[:[-]]|-] ; переопределение предыдущего параметра для ipv6 --orig-mod-start=[n|d|s]N ; применять orig-mod только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру больше или равно N --orig-mod-cutoff=[n|d|s]N ; применять orig-mod только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N --dup= ; высылать N дубликатов до оригинала --dup-replace=[0|1] ; 1 или отсутствие аргумента блокирует отправку оригинала. отправляются только дубликаты. --dup-ttl= ; модифицировать TTL дубликатов --dup-ttl6= ; модифицировать ipv6 hop limit дубликатов. если не указано, используется значение --dup-ttl ---dup-autottl=[[:[-]]] ; режим auto ttl для ipv4 и ipv6. по умолчанию: +1:3-64. delta=0 отключает функцию ---dup-autottl6=[[:[-]]] ; переопределение предыдущего параметра для ipv6 +--dup-autottl=[[:[-]]|-] ; режим auto ttl для ipv4 и ipv6. по умолчанию: +1:3-64. "0:0-0" или "-" отключает функцию +--dup-autottl6=[[:[-]]|-] ; переопределение предыдущего параметра для ipv6 --dup-fooling= ; дополнительные методики как сделать, чтобы дубликат не дошел до сервера. none md5sig badseq badsum datanoack hopbyhop hopbyhop2 --dup-badseq-increment= ; инкремент sequence number для badseq. по умолчанию -10000 --dup-badack-increment= ; инкремент ack sequence number для badseq. по умолчанию -66000 @@ -208,8 +208,8 @@ dvtws, собираемый из тех же исходников (см. [док --dpi-desync-fwmark= ; бит fwmark для пометки десинхронизирующих пакетов, чтобы они повторно не падали в очередь. default = 0x40000000 --dpi-desync-ttl= ; установить ttl для десинхронизирующих пакетов --dpi-desync-ttl6= ; установить ipv6 hop limit для десинхронизирующих пакетов. если не указано, используется значение --dpi-desync-ttl ---dpi-desync-autottl=[[:[-]]] ; режим auto ttl для ipv4 и ipv6. по умолчанию: 1:3-20. delta=0 отключает функцию. ---dpi-desync-autottl6=[[:[-]]] ; переопределение предыдущего параметра для ipv6 +--dpi-desync-autottl=[[:[-]]|-] ; режим auto ttl для ipv4 и ipv6. по умолчанию: 1:3-20. "0:0-0" или "-" отключает функцию +--dpi-desync-autottl6=[[:[-]]|-] ; переопределение предыдущего параметра для ipv6 --dpi-desync-fooling= ; дополнительные методики как сделать, чтобы фейковый пакет не дошел до сервера. none md5sig badseq badsum datanoack hopbyhop hopbyhop2 --dpi-desync-repeats= ; посылать каждый генерируемый в nfqws пакет N раз (не влияет на остальные пакеты) --dpi-desync-skip-nosni=0|1 ; 1(default)=не применять dpi desync для запросов без hostname в SNI, в частности для ESNI diff --git a/nfq/nfqws.c b/nfq/nfqws.c index 16ed1250..53b328e3 100644 --- a/nfq/nfqws.c +++ b/nfq/nfqws.c @@ -780,27 +780,33 @@ static bool parse_autottl(const char *s, autottl *t, int8_t def_delta, uint8_t d t->max = def_max; if (s) { - max = t->max; - if (*s=='+') + // "-" means disable + if (s[0]=='-' && s[1]==0) + memset(t,0,sizeof(*t)); + else { - neg=false; - s++; - } else if (*s=='-') - s++; - switch (sscanf(s,"%u:%u-%u",&delta,&min,&max)) - { - case 3: - if ((delta && !max) || max>255) return false; - t->max=(uint8_t)max; - case 2: - if ((delta && !min) || min>255 || min>max) return false; - t->min=(uint8_t)min; - case 1: - if (delta>127) return false; - t->delta=(int8_t)(neg ? -delta : delta); - break; - default: - return false; + max = t->max; + if (*s=='+') + { + neg=false; + s++; + } else if (*s=='-') + s++; + switch (sscanf(s,"%u:%u-%u",&delta,&min,&max)) + { + case 3: + if ((delta && !max) || max>255) return false; + t->max=(uint8_t)max; + case 2: + if ((delta && !min) || min>255 || min>max) return false; + t->min=(uint8_t)min; + case 1: + if (delta>127) return false; + t->delta=(int8_t)(neg ? -delta : delta); + break; + default: + return false; + } } } return true; @@ -1543,16 +1549,16 @@ static void exithelp(void) " --synack-split=[syn|synack|acksyn]\t\t; perform TCP split handshake : send SYN only, SYN+ACK or ACK+SYN\n" " --orig-ttl=\t\t\t\t; set TTL for original packets\n" " --orig-ttl6=\t\t\t\t; set ipv6 hop limit for original packets. by default ttl value is used\n" - " --orig-autottl=[[:[-]]]\t; auto ttl mode for both ipv4 and ipv6. default: +%d:%u-%u\n" - " --orig-autottl6=[[:[-]]]\t; overrides --orig-autottl for ipv6 only\n" + " --orig-autottl=[[:[-]]|-]\t; auto ttl mode for both ipv4 and ipv6. default: +%d:%u-%u\n" + " --orig-autottl6=[[:[-]]|-]\t; overrides --orig-autottl for ipv6 only\n" " --orig-mod-start=[n|d|s]N\t\t\t; apply orig TTL mod to packet numbers (n, default), data packet numbers (d), relative sequence (s) greater or equal than N\n" " --orig-mod-cutoff=[n|d|s]N\t\t\t; apply orig TTL mod to packet numbers (n, default), data packet numbers (d), relative sequence (s) less than N\n" " --dup=\t\t\t\t\t; duplicate original packets. send N dups before original.\n" " --dup-replace=[0|1]\t\t\t\t; 1 or no argument means do not send original, only dups\n" " --dup-ttl=\t\t\t\t; set TTL for dups\n" " --dup-ttl6=\t\t\t\t; set ipv6 hop limit for dups. by default ttl value is used\n" - " --dup-autottl=[[:[-]]]\t; auto ttl mode for both ipv4 and ipv6. default: %d:%u-%u\n" - " --dup-autottl6=[[:[-]]]\t; overrides --dup-autottl for ipv6 only\n" + " --dup-autottl=[[:[-]]|-]\t; auto ttl mode for both ipv4 and ipv6. default: %d:%u-%u\n" + " --dup-autottl6=[[:[-]]|-]\t; overrides --dup-autottl for ipv6 only\n" " --dup-fooling=[,]\t\t\t; can use multiple comma separated values. modes : none md5sig badseq badsum datanoack hopbyhop hopbyhop2\n" " --dup-badseq-increment=\t\t; badseq fooling seq signed increment for dup. default %d\n" " --dup-badack-increment=\t\t; badseq fooling ackseq signed increment for dup. default %d\n" @@ -1573,8 +1579,8 @@ static void exithelp(void) #endif " --dpi-desync-ttl=\t\t\t\t; set ttl for fakes packets\n" " --dpi-desync-ttl6=\t\t\t; set ipv6 hop limit for fake packet. by default --dpi-desync-ttl value is used.\n" - " --dpi-desync-autottl=[[:[-]]]\t; auto ttl mode for both ipv4 and ipv6. default: %d:%u-%u\n" - " --dpi-desync-autottl6=[[:[-]]] ; overrides --dpi-desync-autottl for ipv6 only\n" + " --dpi-desync-autottl=[[:[-]]|-] ; auto ttl mode for both ipv4 and ipv6. default: %d:%u-%u\n" + " --dpi-desync-autottl6=[[:[-]]|-] ; overrides --dpi-desync-autottl for ipv6 only\n" " --dpi-desync-fooling=[,]\t\t; can use multiple comma separated values. modes : none md5sig badseq badsum datanoack hopbyhop hopbyhop2\n" " --dpi-desync-repeats=\t\t\t; send every desync packet N times\n" " --dpi-desync-skip-nosni=0|1\t\t\t; 1(default)=do not act on ClientHello without SNI\n"