Handle ip.id up to 0xF.

Some DPI send several TCP RST or HTTP redirection packets with
increasing IP ID number. Handle them all.
This commit is contained in:
ValdikSS 2017-12-24 20:37:49 +03:00
parent 490525387d
commit bb8fc64f18
2 changed files with 3 additions and 3 deletions

View File

@ -48,7 +48,7 @@ Use `goodbyedpi.exe -4` if it works for your ISP's DPI. This is the fastest mode
### Passive DPI ### Passive DPI
Most Passive DPI send HTTP 302 Redirect if you try to access blocked website over HTTP and TCP Reset in case of HTTPS, faster than destination website. Packets sent by DPI always have IP Identification field equal to `0x0000` or `0x0001`, as seen with Russian providers. These packets, if they redirect you to another website (censorship page), are blocked by GoodbyeDPI. Most Passive DPI send HTTP 302 Redirect if you try to access blocked website over HTTP and TCP Reset in case of HTTPS, faster than destination website. Packets sent by DPI usually have IP Identification field equal to `0x0000` or `0x0001`, as seen with Russian providers. These packets, if they redirect you to another website (censorship page), are blocked by GoodbyeDPI.
### Active DPI ### Active DPI

View File

@ -85,7 +85,7 @@ static struct option long_options[] = {
static char *filter_string = NULL; static char *filter_string = NULL;
static char *filter_string_template = "(ip and tcp and " static char *filter_string_template = "(ip and tcp and "
"(inbound and ((" "(inbound and (("
"((ip.Id == 0x0001 or ip.Id == 0x0000) and tcp.SrcPort == 80 and tcp.Ack) or " "((ip.Id <= 0xF or ip.Id >= 0x0) and tcp.SrcPort == 80 and tcp.Ack) or "
"((tcp.SrcPort == 80 or tcp.SrcPort == 443) and tcp.Ack and tcp.Syn)" "((tcp.SrcPort == 80 or tcp.SrcPort == 443) and tcp.Ack and tcp.Syn)"
") and " DIVERT_NO_LOCALNETS_SRC ") or " ") and " DIVERT_NO_LOCALNETS_SRC ") or "
"(outbound and " "(outbound and "
@ -470,7 +470,7 @@ int main(int argc, char *argv[]) {
/* IPv4 filter for inbound RST packets with ID = 0 or 1 */ /* IPv4 filter for inbound RST packets with ID = 0 or 1 */
filters[filter_num] = init( filters[filter_num] = init(
"inbound and ip and tcp and " "inbound and ip and tcp and "
"(ip.Id == 0x0001 or ip.Id == 0x0000) and " "(ip.Id <= 0xF or ip.Id >= 0x0) and "
"(tcp.SrcPort == 443 or tcp.SrcPort == 80) and tcp.Rst and " "(tcp.SrcPort == 443 or tcp.SrcPort == 80) and tcp.Rst and "
DIVERT_NO_LOCALNETS_SRC, DIVERT_NO_LOCALNETS_SRC,
WINDIVERT_FLAG_DROP); WINDIVERT_FLAG_DROP);