From d28074b35735982965470184db1339f834dbce5a Mon Sep 17 00:00:00 2001 From: bol-van Date: Tue, 5 Mar 2024 16:54:39 +0300 Subject: [PATCH] readme: datanoack may pass cgNAT --- docs/readme.eng.md | 8 +++++--- docs/readme.txt | 10 +++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/docs/readme.eng.md b/docs/readme.eng.md index ba0b97e..015706a 100644 --- a/docs/readme.eng.md +++ b/docs/readme.eng.md @@ -249,8 +249,8 @@ add tcp option **MD5 signature**. All of them have their own disadvantages : ISP drops them or because there are two same headers. DPIs may still anaylize packets with one or two hop-by-hop headers. * `datanoack` sends tcp fakes without ACK flag. Servers do not accept this but DPI may accept. - This mode breaks NAT and does not work with iptables if masquerade is used, even from the router itself. - Works with nftables properly. Requires external IP address. + This mode may break NAT and may not work with iptables if masquerade is used, even from the router itself. + Works with nftables properly. Likely requires external IP address (some ISPs pass these packets through their NAT). * `autottl` tries to automatically guess TTL value that allows DPI to receive fakes and does not allow them to reach the server. This tech relies on well known TTL values used by OS : 64,128,255. nfqws takes first incoming packet (YES, you need to redirect it too), guesses path length and decreases by `delta` value (default 1). If resulting value is outside the range (min,max - default 3,20) @@ -570,7 +570,7 @@ tpws is transparent proxy. --split-pos= ; split at specified pos. split-http-req takes precedence over split-pos for http reqs. --split-any-protocol ; split not only http and https --disorder ; when splitting simulate sending second fragment first - --oob ; when splitting send out of band zero byte + --oob[=|0xHEX] ; when splitting send out of band byte. default is HEX 0x00. --hostcase ; change Host: => host: --hostspell ; exact spelling of "Host" header. must be 4 chars. default is "host" --hostdot ; add "." after Host: name @@ -583,6 +583,8 @@ tpws is transparent proxy. --unixeol ; replace 0D0A to 0A --tlsrec=sni ; make 2 TLS records. split at SNI. don't split if SNI is not present. --tlsrec-pos= ; make 2 TLS records. split at specified pos + --tamper-start= ; start tampering only from specified outbound stream position. default is 0. + --tamper-cutoff= ; do not tamper anymore after specified outbound stream position. default is unlimited. --daemon ; daemonize --pidfile= ; write pid to file --user= ; drop root privs diff --git a/docs/readme.txt b/docs/readme.txt index ec350c3..b709312 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -325,8 +325,10 @@ fakeknown отличается от fake тем, что применяется такие пакеты могут фильтроваться и не доходить. Расчет идет на то, что DPI проанализирует пакет с hop-by-hop, но он либо не дойдет до адресата всилу фильтров провайдера, либо будет отброшен сервером, потому что хедера два. * datanoack высылает фейки со снятым tcp флагом ACK. Сервера такое не принимают, а DPI может принять. - Эта техника ломает NAT и не работает с iptables, если используется masquerade, даже с локальной системы - (почти всегда для ipv4). С nftables работает без ограничений. Требуется внешний IP адрес. + Эта техника может ломать NAT и не всегда работает с iptables, если используется masquerade, даже с локальной системы + (почти всегда для ipv4). С nftables работает без ограничений. + Экспериментально выяснено, что некоторые провайдерские NAT не отбрасывают эти пакеты, потому работает даже + с внутренним провайдерским IP. Но linux NAT оно не пройдет. В общем случае требуется внешний IP адрес. * autottl. Суть режима в автоматическом определении TTL, чтобы он почти наверняка прошел DPI и немного не дошел до сервера. Берутся базовые значения TTL 64,128,255, смотрится входящий пакет (да, требуется направить первый входящий пакет на nfqws !). Вычисляется длина пути, отнимается delta (1 по умолчанию). Если TTL вне диапазона (min,max - 3,20 по умолчанию), @@ -646,7 +648,7 @@ tpws - это transparent proxy. --split-pos= ; делить все посылы на сегменты в указанной позиции. единственная опция, работающая на не-http. при указании split-http-req он имеет преимущество на http. --split-any-protocol ; применять split-pos к любым пакетам. по умолчанию - только к http и TLS ClientHello --disorder ; путем манипуляций с сокетом вынуждает отправлять первым второй сегмент разделенного запроса - --oob ; отправить 1 нулевой байт out-of-band data (OOB) в конце первой части сплита + --oob[=|0xHEX] ; отправить байт out-of-band data (OOB) в конце первой части сплита --hostcase ; менять регистр заголовка "Host:". по умолчанию на "host:". --hostspell=HoST ; точное написание заголовка Host (можно "HOST" или "HoSt"). автоматом включает --hostcase --hostdot ; добавление точки после имени хоста : "Host: kinozal.tv." @@ -659,6 +661,8 @@ tpws - это transparent proxy. --unixeol ; конвертировать 0D0A в 0A и использовать везде 0A --tlsrec=sni ; разбивка TLS ClientHello на 2 TLS records. режем между 1 и 2 символами hostname в SNI. Если SNI нет - отмена. --tlsrec-pos= ; разбивка TLS ClientHello на 2 TLS records. режем на указанной позиции, если длина слишком мелкая - на позиции 1. + --tamper-start= ; начинать дурение только с указанной байтовой позиции исходяшего потока (считается позиция начала принятого блока) + --tamper-cutoff= ; закончить дурение на указанной байтовой позиции исходящего потока (считается позиция начала принятого блока) --hostlist= ; действовать только над доменами, входящими в список из filename. поддомены автоматически учитываются. ; в файле должен быть хост на каждой строке. ; список читается 1 раз при старте и хранится в памяти в виде иерархической структуры для быстрого поиска.