From c0a08d3353d2d30591610cd3d55e7456523812a4 Mon Sep 17 00:00:00 2001 From: Evgeny <36511477+chymaboy@users.noreply.github.com> Date: Thu, 2 Jan 2025 12:34:14 +0300 Subject: [PATCH 1/6] Update readme.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Исправления текста в разделе "Зачем это нужно" --- docs/readme.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/readme.md b/docs/readme.md index f036972..03a81ed 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -71,14 +71,14 @@ zapret является свободным и open source. ## Зачем это нужно Автономное средство противодействия DPI, которое не требует подключения каких-либо сторонних серверов. Может помочь -обойти блокировки или замедление сайтов http(s), сигнатурный анализ tcp и udp протоколов, например с целью блокировки +обойти блокировки или замедление сайтов HTTP(S), сигнатурный анализ TCP- и UDP-протоколов, например, с целью блокировки VPN. -Проект нацелен прежде всего на маломощные embedded устройства - роутеры, работающие под openwrt. Поддерживаются -традиционные Linux системы, FreeBSD, OpenBSD, частично MacOS. В некоторых случаях возможна самостоятельная прикрутка +Проект нацелен, прежде всего, на маломощные embedded-устройства - роутеры, работающие под OpenWRT. Поддерживаются +традиционные Linux-системы, FreeBSD, OpenBSD, частично macOS. В некоторых случаях возможна самостоятельная интеграция решения к различным прошивкам. -Большая часть функционала работает на windows. +Большая часть функционала работает на Windows. ## Быстрый старт From d7949f70b1ac90d5f91ee12d8bc3a18532004748 Mon Sep 17 00:00:00 2001 From: Evgeny <36511477+chymaboy@users.noreply.github.com> Date: Fri, 10 Jan 2025 18:14:36 +0300 Subject: [PATCH 2/6] Update readme.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit отмена дифов: - прежде всего - embedded устройства - прикрутка --- docs/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/readme.md b/docs/readme.md index 03a81ed..e03e834 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -74,8 +74,8 @@ zapret является свободным и open source. обойти блокировки или замедление сайтов HTTP(S), сигнатурный анализ TCP- и UDP-протоколов, например, с целью блокировки VPN. -Проект нацелен, прежде всего, на маломощные embedded-устройства - роутеры, работающие под OpenWRT. Поддерживаются -традиционные Linux-системы, FreeBSD, OpenBSD, частично macOS. В некоторых случаях возможна самостоятельная интеграция +Проект нацелен прежде всего на маломощные embedded устройства - роутеры, работающие под OpenWRT. Поддерживаются +традиционные Linux-системы, FreeBSD, OpenBSD, частично macOS. В некоторых случаях возможна самостоятельная прикрутка решения к различным прошивкам. Большая часть функционала работает на Windows. From de6cadf8e47f409ee2e1818b2f043253676009e8 Mon Sep 17 00:00:00 2001 From: bol-van Date: Fri, 10 Jan 2025 18:39:56 +0300 Subject: [PATCH 3/6] readme.md: minor --- docs/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/readme.md b/docs/readme.md index 81db881..fb2d068 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -71,7 +71,7 @@ zapret является свободным и open source. ## Зачем это нужно Автономное средство противодействия DPI, которое не требует подключения каких-либо сторонних серверов. Может помочь -обойти блокировки или замедление сайтов HTTP(S), сигнатурный анализ TCP- и UDP-протоколов, например, с целью блокировки +обойти блокировки или замедление сайтов HTTP(S), сигнатурный анализ TCP и UDP протоколов, например, с целью блокировки VPN. Проект нацелен прежде всего на маломощные embedded устройства - роутеры, работающие под OpenWRT. Поддерживаются From 1935473bd165cf75c911db7dfe9a8da3bc46ecd8 Mon Sep 17 00:00:00 2001 From: Evgeny <36511477+chymaboy@users.noreply.github.com> Date: Sat, 11 Jan 2025 19:06:00 +0300 Subject: [PATCH 4/6] =?UTF-8?q?Update=20readme.md=20=D1=80=D0=B0=D0=B7?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=20=D0=9A=D0=B0=D0=BA=20=D1=8D=D1=82=D0=BE=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit пробелы, регистры, дефисы --- docs/readme.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/readme.md b/docs/readme.md index fb2d068..01c32d7 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -89,25 +89,25 @@ VPN. В самом простейшем случае вы имеете дело с пассивным DPI. Пассивный DPI может читать трафик из потока, может инжектить свои пакеты, но не может блокировать проходящие пакеты. Если запрос "плохой", пассивный DPI инжектит пакет RST, -опционально дополняя его пакетом http redirect. Если фейк пакет инжектится только для клиента, в этом случае можно -обойтись командами iptables для дропа RST и/или редиректа на заглушку по определенным условиям, которые нужно подбирать +опционально дополняя его пакетом HTTP redirect. Если фейк пакет инжектится только для клиента, в этом случае можно +обойтись командами iptables для дропа RST и/или редиректа на заглушку по опредёленным условиям, которые нужно подбирать для каждого провайдера индивидуально. Так мы обходим последствия срабатывания триггера запрета. Если пассивный DPI -направляет пакет RST в том числе и серверу, то вы ничего с этим не сможете сделать. Ваша задача - не допустить -срабатывания триггера запрета. Одними iptables уже не обойдетесь. Этот проект нацелен именно на предотвращение +направляет пакет RST в том числе и серверу, то вы ничего с этим не сможете сделать. Ваша задача — не допустить +срабатывания триггера запрета. Одними iptables уже не обойтись. Этот проект нацелен именно на предотвращение срабатывания запрета, а не ликвидацию его последствий. -Активный DPI ставится в разрез провода и может дропать пакеты по любым критериям, в том числе распознавать TCP потоки и +Активный DPI ставится в разрез провода и может дропать пакеты по любым критериям, в том числе распознавать TCP-потоки и блокировать любые пакеты, принадлежащие потоку. -Как не допустить срабатывания триггера запрета ? Послать то, на что DPI не рассчитывает и что ломает ему алгоритм +Как не допустить срабатывания триггера запрета? Послать то, на что DPI не рассчитывает и что ломает ему алгоритм распознавания запросов и их блокировки. -Некоторые DPI не могут распознать http запрос, если он разделен на TCP сегменты. Например, запрос +Некоторые DPI не могут распознать HTTP-запрос, если он разделен на TCP-сегменты. Например, запрос вида `GET / HTTP/1.1\r\nHost: kinozal.tv......` -мы посылаем 2 частями : сначала идет `GET`, затем `/ HTTP/1.1\r\nHost: kinozal.tv.....`. Другие DPI спотыкаются, когда -заголовок `Host:` пишется в другом регистре : например,`host:`. Кое-где работает добавление дополнительного пробела -после метода : `GET /` => `GET /` -или добавление точки в конце имени хоста : `Host: kinozal.tv.` +мы посылаем двумя частями: сначала идет `GET`, затем `/ HTTP/1.1\r\nHost: kinozal.tv.....`. Другие DPI спотыкаются, когда +заголовок `Host:` пишется в другом регистре: например, `host:`. Кое-где работает добавление дополнительного пробела +после метода: `GET /` → `GET /` +или добавление точки в конце имени хоста: `Host: kinozal.tv.` Существует и более продвинутая магия, направленная на преодоление DPI на пакетном уровне. From 440878cb9f3027867b7b08dfbd01de8fc23bb301 Mon Sep 17 00:00:00 2001 From: Evgeny <36511477+chymaboy@users.noreply.github.com> Date: Sat, 11 Jan 2025 21:26:46 +0300 Subject: [PATCH 5/6] Update readme.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ё --- docs/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/readme.md b/docs/readme.md index 01c32d7..0927481 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -90,7 +90,7 @@ VPN. В самом простейшем случае вы имеете дело с пассивным DPI. Пассивный DPI может читать трафик из потока, может инжектить свои пакеты, но не может блокировать проходящие пакеты. Если запрос "плохой", пассивный DPI инжектит пакет RST, опционально дополняя его пакетом HTTP redirect. Если фейк пакет инжектится только для клиента, в этом случае можно -обойтись командами iptables для дропа RST и/или редиректа на заглушку по опредёленным условиям, которые нужно подбирать +обойтись командами iptables для дропа RST и/или редиректа на заглушку по определённым условиям, которые нужно подбирать для каждого провайдера индивидуально. Так мы обходим последствия срабатывания триггера запрета. Если пассивный DPI направляет пакет RST в том числе и серверу, то вы ничего с этим не сможете сделать. Ваша задача — не допустить срабатывания триггера запрета. Одними iptables уже не обойтись. Этот проект нацелен именно на предотвращение From 29ab747e5b2e9ee414c7c31974c3ad73d2b256a5 Mon Sep 17 00:00:00 2001 From: bol-van Date: Mon, 13 Jan 2025 18:25:15 +0300 Subject: [PATCH 6/6] nfqws: weaken wireguard initiation recognition --- docs/changes.txt | 1 + nfq/protocol.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index e35efe1..e325a71 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -446,3 +446,4 @@ v70 blockcheck: override all dialog questions and enable batch mode blockcheck: parallel attempts +nfqws: weaken wireguard initiation recognition. use len=148 and data[0]=1 signature diff --git a/nfq/protocol.c b/nfq/protocol.c index 1817aa0..3be2ad8 100644 --- a/nfq/protocol.c +++ b/nfq/protocol.c @@ -938,7 +938,7 @@ bool IsQUICInitial(const uint8_t *data, size_t len) bool IsWireguardHandshakeInitiation(const uint8_t *data, size_t len) { - return len==148 && data[0]==1 && data[1]==0 && data[2]==0 && data[3]==0; + return len==148 && data[0]==1; } bool IsDhtD1(const uint8_t *data, size_t len) {