diff --git a/docs/changes.txt b/docs/changes.txt index 317f3f4d..7849d370 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -547,3 +547,4 @@ v71.5 winws: --wf-raw-part nfqws: --dpi-desync=hostfakesplit blockcheck: new strategies +blockcheck: curl test simulation : SIMULATE=1 diff --git a/docs/readme.en.md b/docs/readme.en.md index 714862c5..93d95c8f 100644 --- a/docs/readme.en.md +++ b/docs/readme.en.md @@ -197,6 +197,7 @@ nfqws takes the following parameters: --dpi-desync-split-seqovl-pattern=|0xHEX ; pattern for the fake part of overlap --dpi-desync-fakedsplit-pattern=|0xHEX ; fake pattern for fakedsplit/fakeddisorder --dpi-desync-hostfakesplit-midhost=marker+N|marker-N ; additionally split real hostname at specified marker. must be within host..endhost or won't be splitted. + --dpi-desync-hostfakesplit-mod=mod[,mod] ; can be none or host= --dpi-desync-ipfrag-pos-tcp=<8..9216> ; ip frag position starting from the transport header. multiple of 8, default 8. --dpi-desync-ipfrag-pos-udp=<8..9216> ; ip frag position starting from the transport header. multiple of 8, default 32. --dpi-desync-ts-increment= ; ts fooling TSval signed increment. default -600000 @@ -379,7 +380,14 @@ For example, `--dpi-desync-split-pos=method+2,midsld,5` means `method+2` for htt It works for tcp protocols with host : TLS and HTTP. Real hostname can be additionally split using `--dpi-desync-hostfakesplit-midhost` marker. For example, `--dpi-desync-hostfakesplit-midhost=midsld`. Position must be within host range or split won't happen. Multi-packet queries are supported if hostname part is not already split. If it is fooling is cancelled. -Fake host names are generated randomly on the fly using `[0-9a-z]` pattern. If host length is >= 7 dot is placed to simulate 3-char TLD. + +By default fake host names are generated randomly on the fly using `[0-9a-z]` pattern. If host length is >= 7 dot is placed to simulate 3-char TLD. +It's possible to set fake host template : `--dpi-desync-hostfakesplit-mod=host=`. +Template hostname will be expanded to the left to original hostname size with random characters from `[0-9a-z]` pattern : "www.networksolutions.com" -> "h8xmdba4tv7a8.google.com". +If original hostname size is less than template size it will be cut : "habr.com" -> "ogle.com". +If original hostname size is larger than template size by one, dot will be appended to the left : "www.xxx.com" => ".google.com".. +That's why it's a good idea to use short hostnames in template : "ya.ru", "vk.com", "x.com". + ### Sequence numbers overlap diff --git a/docs/readme.md b/docs/readme.md index db9dff93..bf7e51eb 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -221,6 +221,7 @@ dvtws, собираемый из тех же исходников (см. [док --dpi-desync-split-seqovl-pattern=|0xHEX ; чем заполнять фейковую часть overlap --dpi-desync-fakedsplit-pattern=|0xHEX ; чем заполнять фейки в fakedsplit/fakeddisorder --dpi-desync-hostfakesplit-midhost=marker+N|marker-N ; маркер дополнительного разреза сегмента с оригинальным хостом. должен попадать в пределы хоста. +--dpi-desync-hostfakesplit-mod=mod[,mod] ; может быть none или host= --dpi-desync-ts-increment= ; инкремент TSval для ts. по умолчанию -600000 --dpi-desync-badseq-increment= ; инкремент sequence number для badseq. по умолчанию -10000 --dpi-desync-badack-increment= ; инкремент ack sequence number для badseq. по умолчанию -66000 @@ -417,7 +418,14 @@ dvtws, собираемый из тех же исходников (см. [док поскольку будет превышение MTU из-за md5 tcp option. Режим 'hostfakesplit' имеет задачу минимального вмешательства фейком - как раз по той части запроса, на основании которой DPI принимает решение о блокировке. Конкретно - имени хоста. -Фейк хоста генерируется каждый раз случайно из набора `[a-z0-9]`. При длине более 7 символов за 3 символа до конца ставится точка, имитируя TLD. +По умолчанию фейк хоста генерируется каждый раз случайно из набора `[a-z0-9]`. При длине более 7 символов за 3 символа до конца ставится точка, имитируя TLD. + +Можно переопределить шаблон генерации с помощью `--dpi-desync-hostfakesplit-mod=host=`. В последнем случае справа всегда будет указанный hostname. +Слева он будет дополнен до размера оригинального хоста как поддомен со случайными символами. Пример : "www.networksolutions.com" -> "h8xmdba4tv7a8.google.com". +Если размер оригинального хоста меньше шаблона, шаблон будет порезан : "habr.com" -> "ogle.com". +Если размер оригинального хоста больше шаблона на 1, получится инвалидный пустой поддомен : "www.xxx.com" => ".google.com". +Поэтому стоит использовать максимально короткие хосты из разрешенных : "ya.ru", "vk.com". + Опционально можно разрезать оригинальный фейк. Например, `--dpi-desync-hostfakesplit-midhost=midsld`. Позиция нарезки должна попадать внутрь хоста. Многопакетные запросы поддерживаются только, если исходная нарезка пакетов не включает позиции имени хоста. В последнем случае дурение отменяется. Для ipv4 ip_id ставится одинаковым в фейках и оригинале хоста.