Compare commits

...

9 Commits

Author SHA1 Message Date
bol-van
a585d09c03 doc works 2024-11-05 16:24:30 +03:00
bol-van
7f4356aa7e Merge branch 'md' 2024-11-05 16:10:02 +03:00
bol-van
773da6383b doc works 2024-11-05 16:09:53 +03:00
bol-van
07cd46bf90 readme.md: typo 2024-11-05 14:28:21 +03:00
bol-van
c07fe4225a work on readme.md 2024-11-05 11:58:16 +03:00
0x201
086a0e4408 И ещё фиксы 2024-11-04 18:48:02 +03:00
0x201
b28447e796 Фиксы 2024-11-04 17:33:35 +03:00
0x201
cff12dd431 Фиксы 2024-11-04 17:30:50 +03:00
0x201
cbba8a7876 Ещё одни .md 2024-11-04 15:21:20 +03:00
4 changed files with 292 additions and 201 deletions

View File

@ -1,11 +1,15 @@
Специально для тех, кто хочет побыстрее начать, но не хочет слишком углубляться в простыню readme.txt. # Windows quick start
Как обычно, компьютерная грамотность ложится полностью на вас. Специально для тех, кто хочет побыстрее начать, но не хочет слишком углубляться в простыню [readme.md](./readme.md).
Вы должны уметь работать с консолью windows и иметь минимальные навыки обращения с командными файлами bat,cmd. > [!CAUTION]
Если грамотность отсутствует и возникает куча "как" на базовых вещах, значит эта программа не для вас. > Как обычно, компьютерная грамотность ложится полностью на вас.
Разработчик не будет отвечать на вопросы из серии школы компьютерной грамотности. > Вы должны уметь работать с консолью windows и иметь минимальные навыки обращения с командными файлами `bat`, `cmd`.
Если вы все-таки хотите продолжать, задавайте вопросы в дискуссиях на github или на форумах. > Если грамотность отсутствует и возникает куча _"как?"_ на базовых вещах, значит эта программа не для вас.
Возможно, кто-то вам поможет. Но не надо писать issue на github. Они будут закрываться сразу. > Разработчик не будет отвечать на вопросы из серии школы компьютерной грамотности.
> Если вы все-таки хотите продолжать, задавайте вопросы в дискуссиях на github или на форумах.
> Возможно, кто-то вам поможет. Но не надо писать issue на github. Они будут закрываться сразу.
## Немного разъяснений
Обход DPI является хакерской методикой. Под этим словом понимается метод, которому сопротивляется окружающая среда, Обход DPI является хакерской методикой. Под этим словом понимается метод, которому сопротивляется окружающая среда,
которому автоматически не гарантирована работоспособность в любых условиях и на любых ресурсах, которому автоматически не гарантирована работоспособность в любых условиях и на любых ресурсах,
@ -18,32 +22,34 @@
Будем считать, что у вас есть windows 7 или выше. Задача - обойти блокировки с самой системы. Будем считать, что у вас есть windows 7 или выше. Задача - обойти блокировки с самой системы.
Есть решение самое простое, а есть "как положено". > [!NOTE]
> Есть решение самое простое, а есть "как положено".
САМОЕ ПРОСТОЕ РЕШЕНИЕ ## САМОЕ ПРОСТОЕ РЕШЕНИЕ
Совсем ничего не могу, все очень сложно, дайте мне таблетку. _"Совсем ничего не могу, все очень сложно, дайте мне таблетку."_ ©Простой пользователь
Скачайте и распакуйте архив https://github.com/bol-van/zapret-win-bundle/archive/refs/heads/master.zip 1) Скачайте и распакуйте архив https://github.com/bol-van/zapret-win-bundle/archive/refs/heads/master.zip.
Запустите zapret-winws/preset_russia.cmd от имени администратора. 2) Запустите `zapret-winws/preset_russia.cmd` от имени администратора. Возможно, заведется сразу.
Возможно, заведется сразу. Этот вариант похож на "2_any_country.cmd" из GoodbyeDPI.
То же самое с ограничителем по автоматически создаваемому хост-листу preset_russia_autohostlist.cmd. То же самое с ограничителем по автоматически создаваемому хост-листу `preset_russia_autohostlist.cmd`.
Что такое autohostlist - читайте readme.txt. Проще говоря, мы обходим только то, что долго и упорно не хочет открываться. Что такое `autohostlist` - читайте [readme.md](./readme.md). Проще говоря, мы обходим только то, что долго и упорно не хочет открываться.
Сначала не будет, но надо пытаться много раз, и тогда сработает, а дальше будет всегда срабатывать. Сначала не будет, но надо пытаться много раз, и тогда сработает, а дальше будет всегда срабатывать.
Остальное не будет ломаться. Использовать только, если первый вариант тоже работает. Остальное не будет ломаться. Использовать только, если первый вариант тоже работает.
Не помогла таблетка ? Это вовсе не значит, что ничего не получится. Но придется делать по-нормальному. Не помогла _"таблетка"_ ? Это вовсе не значит, что ничего не получится. Но придется делать по нормальному.
РЕШЕНИЕ "КАК ПОЛОЖЕНО" ## РЕШЕНИЕ "КАК ПОЛОЖЕНО"
1) Скачайте и распакуйте архив https://github.com/bol-van/zapret-win-bundle/archive/refs/heads/master.zip 1) Скачайте и распакуйте архив https://github.com/bol-van/zapret-win-bundle/archive/refs/heads/master.zip.
2) Если у вас Windows 7 x64, читайте docs/windows.txt. Без описанной там подготовки может не работать. 2) Если у вас Windows 7 x64, читайте [docs/windows.md](./windows.md). Без описанной там подготовки может не работать.
Для 32-битных систем Windows нет готового полного варианта, но есть собранные бинарники :
https://github.com/bol-van/zapret-win32 > [!WARNING]
На windows 11 arm64 выполните arm64/install_arm64.cmd от имени администратора и перезагрузите компьютер. > Для 32-битных систем Windows нет готового полного варианта.
Читайте docs/windows.txt
На windows 11 arm64 выполните `arm64/install_arm64.cmd` от имени администратора и перезагрузите компьютер.
Читайте [docs/windows.md](./windows.md)
Имейте в виду, что антивирусы могут плохо реагировать на windivert. Имейте в виду, что антивирусы могут плохо реагировать на windivert.
cygwin так же имеет внушительный список несовместимостей с антивирусами, хотя современные антивирусы cygwin так же имеет внушительный список несовместимостей с антивирусами, хотя современные антивирусы
@ -54,15 +60,15 @@ cygwin так же имеет внушительный список несовм
4) Если вы работаете в виртуальной машине, необходимо использовать соединение с сетью в режиме bridge. nat не подходит 4) Если вы работаете в виртуальной машине, необходимо использовать соединение с сетью в режиме bridge. nat не подходит
5) Запустите blockcheck\blockcheck.cmd. blockcheck в начале проверяет DNS. 5) Запустите `blockcheck\blockcheck.cmd`. blockcheck в начале проверяет **DNS**.
Если выводятся сообщения о подмене адресов, то нужно будет решить проблему с DNS. Если выводятся сообщения о подмене адресов, то нужно будет решить проблему с **DNS**.
blockcheck перейдет в этом случае на DoH и будет пытаться получить и использовать реальные IP адреса. blockcheck перейдет в этом случае на **DoH** _(DNS over HTTPS)_ и будет пытаться получить и использовать реальные IP адреса.
Но если вы не настроите решение этой проблемы, обход будет работать только для тех программ, Но если вы не настроите решение этой проблемы, обход будет работать только для тех программ,
которые сами реализуют механизмы SecureDNS. Для других программ обход работать не будет. которые сами реализуют механизмы SecureDNS. Для других программ обход работать не будет.
Решение проблемы DNS выходит за рамки проекта. Обычно она решается либо заменой DNS серверов Решение проблемы DNS выходит за рамки проекта. Обычно она решается либо заменой DNS серверов
от провайдера на публичные (1.1.1.1, 8.8.8.8), либо в случае перехвата провайдером обращений от провайдера на публичные (`1.1.1.1`, `8.8.8.8`), либо в случае перехвата провайдером обращений
к сторонним серверам - через специальные средства шифрования DNS запросов, такие как dnscrypt, DoT, DoH. к сторонним серверам - через специальные средства шифрования DNS запросов, такие как [dnscrypt](https://www.dnscrypt.org/), **DoT** _(DNS over TLS)_, **DoH**.
В современных броузерах чаще всего DoH включен по умолчанию, но curl будет использовать обычный системный DNS. В современных броузерах чаще всего DoH включен по умолчанию, но curl будет использовать обычный системный DNS.
win11 поддерживает системные DoH из коробки. Они не настроены по умолчанию. win11 поддерживает системные DoH из коробки. Они не настроены по умолчанию.
В последних билдах win10 существует неофициальный обходной путь для включения DoH. В последних билдах win10 существует неофициальный обходной путь для включения DoH.
@ -71,13 +77,17 @@ win11 поддерживает системные DoH из коробки. Он
Тут все разжевано как и где это включается : https://hackware.ru/?p=13707 Тут все разжевано как и где это включается : https://hackware.ru/?p=13707
6) blockcheck позволяет выявить рабочую стратегию обхода блокировок. 6) blockcheck позволяет выявить рабочую стратегию обхода блокировок.
Лог скрипта будет сохранен в blockcheck\blockcheck.log. Лог скрипта будет сохранен в `blockcheck\blockcheck.log`.
Запомните найденные стратегии. Запомните/перепишите найденные стратегии.
Следует понимать, что blockcheck проверяет доступность только конкретного домена, который вы вводите в начале. > [!WARNING]
Вероятно, все остальные домены блокированы подобным образом, но не факт. > Следует понимать, что blockcheck проверяет доступность только конкретного домена, который вы вводите в начале.
В большинстве случаев можно обьединить несколько стратегий в одну универсальную, и это крайне желательно. > Вероятно, все остальные домены блокированы подобным образом, но не факт.
Необходимо понимать как работают стратегии.
> [!TIP]
> В большинстве случаев можно обьединить несколько стратегий в одну универсальную, и это крайне желательно.
Необходимо понимать [как работают стратегии](./readme.md/#nfqws).
zapret не может пробить блокировку по IP адресу. Для проверки нескольких доменов вводите их через пробел. zapret не может пробить блокировку по IP адресу. Для проверки нескольких доменов вводите их через пробел.
Сейчас блокираторы ставят на магистральных каналах. В сложных случаях у вас может быть несколько маршрутов Сейчас блокираторы ставят на магистральных каналах. В сложных случаях у вас может быть несколько маршрутов
@ -86,8 +96,8 @@ zapret не может пробить блокировку по IP адресу.
blockcheck не всегда может выдать вам в итогах оптимальную стратегию, которую надо просто переписать в настройки. blockcheck не всегда может выдать вам в итогах оптимальную стратегию, которую надо просто переписать в настройки.
В некоторых случаях надо реально думать что происходит, анализируя результат на разных стратегиях. В некоторых случаях надо реально думать что происходит, анализируя результат на разных стратегиях.
Если вы применяете большой TTL, чтобы достать до магистрала, то не лишним будет добавить дополнительный ограничитель Если вы применяете большой TTL, чтобы достать до магистрала, то не лишним будет добавить дополнительный ограничитель
--dpi-desync-fooling, чтобы не сломать сайты на более коротких дистанциях. `--dpi-desync-fooling`, чтобы не сломать сайты на более коротких дистанциях.
md5sig наиболее совместим, но работатет только на linux серверах. _md5sig_ наиболее совместим, но работатет только на linux серверах.
badseq может работать только на https и не работать на http. badseq может работать только на https и не работать на http.
Чтобы выяснить какие дополнительные ограничители работают, смотрите результат теста аналогичных стратегий без TTL Чтобы выяснить какие дополнительные ограничители работают, смотрите результат теста аналогичных стратегий без TTL
с каждым из этих ограничителей. с каждым из этих ограничителей.
@ -97,85 +107,97 @@ badseq может работать только на https и не работа
она стабильна, на третьих полный хаос, и проще отказаться. она стабильна, на третьих полный хаос, и проще отказаться.
Далее, имея понимание что работает на http, https, quic, нужно сконструировать параметры запуска winws Далее, имея понимание что работает на http, https, quic, нужно сконструировать параметры запуска winws
с использованием мультистратегии. Как работают мультистратегии описано в readme.txt. с использованием мультистратегии. Как работают мультистратегии описано в [readme.md](./readme.md).
Прежде всего вам нужно собрать фильтр перехватываемого трафика. Это делается через параметры Прежде всего вам нужно собрать фильтр перехватываемого трафика. Это делается через параметры
--wf-l3, --wf-tcp, --wf-udp. `--wf-l3`, `--wf-tcp`, `--wf-udp`.
--wf-l3 относится к версии ip протокола - ipv4 или ipv6. `--wf-l3` относится к версии ip протокола - ipv4 или ipv6.
--wf-tcp и --wf-udp содержат перечень портов или диапазонов портов через запятую. `--wf-tcp` и `--wf-udp` содержат перечень портов или диапазонов портов через запятую.
Пример стандартного фильтра для перехвата http, https, quic : --wf-tcp=80,443 --wf-udp=443 Пример стандартного фильтра для перехвата http, https, quic : `--wf-tcp=80,443` `--wf-udp=443`
Фильтр должен быть минимально необходимым. Перехват лишнего трафика приведет только к бессмысленному > [!WARNING]
расходованию ресурсов процессора и замедлению интернета. > Фильтр должен быть минимально необходимым. Перехват лишнего трафика приведет только к бессмысленному расходованию ресурсов процессора и замедлению интернета.
Если кратко по мультистратегии, то обычно параметры конструируются так : Если кратко по мультистратегии, то обычно параметры конструируются так :
"--filter-udp=443 'параметры для quic' --new ```
--filter-tcp=80,443 'обьединенные параметры для http и https'" --filter-udp=443 'параметры для quic' --new
--filter-tcp=80,443 'обьединенные параметры для http и https'
```
Или так : Или так :
"--filter-udp=443 "параметры для quic" --new ```
--filter-udp=443 'параметры для quic' --new
--filter-tcp=80 'параметры для http' --new --filter-tcp=80 'параметры для http' --new
--filter-tcp=443 'параметры для https'" --filter-tcp=443 'параметры для https'
```
Если стратегии отличаются по версии ip протокола, и вы не можете их обьединить, фильтр пишется так : Если стратегии отличаются по версии ip протокола, и вы не можете их обьединить, фильтр пишется так :
"--filter-l3=ipv4 --filter-udp=443 "параметры для quic ipv4" --new ```
--filter-l3=ipv4 --filter-udp=443 "параметры для quic ipv4" --new
--filter-l3=ipv4 --filter-tcp=80 'параметры для http ipv4' --new --filter-l3=ipv4 --filter-tcp=80 'параметры для http ipv4' --new
--filter-l3=ipv4 --filter-tcp=443 'параметры для https ipv4' --new --filter-l3=ipv4 --filter-tcp=443 'параметры для https ipv4' --new
--filter-l3=ipv6 --filter-udp=443 "параметры для quic ipv6" --new --filter-l3=ipv6 --filter-udp=443 "параметры для quic ipv6" --new
--filter-l3=ipv6 --filter-tcp=80 'параметры для http ipv6' --new --filter-l3=ipv6 --filter-tcp=80 "параметры для http ipv6" --new
--filter-l3=ipv6 --filter-tcp=443 'параметры для https ipv6'" --filter-l3=ipv6 --filter-tcp=443 "параметры для https ipv6"
```
Но здесь совсем "копи-пастный" вариант. Но здесь совсем _"копи-пастный"_ вариант.
Чем больше вы обьедините стратегий и сократите их общее количество, тем будет лучше. Чем больше вы обьедините стратегий и сократите их общее количество, тем будет лучше.
Если вам не нужно дурение отдельных протоколов, лучше всего будет их убрать из системы перехвата трафика через Если вам не нужно дурение отдельных протоколов, лучше всего будет их убрать из системы перехвата трафика через
параметры --wf-* и убрать соответствующие им профили мультистратегии. параметры `--wf-*` и убрать соответствующие им профили мультистратегии.
tcp 80 - http, tcp 443 - https, udp 443 - quic. tcp 80 - http, tcp 443 - https, udp 443 - quic.
Если используются методы нулевой фазы десинхронизации (--mss, --wssize, --dpi-desync=syndata) и фильтрация hostlist, Если используются методы нулевой фазы десинхронизации (`--mss`, `--wssize`, `--dpi-desync=syndata`) и фильтрация hostlist,
то все параметры, относящиеся к этим методам, следует помещать в отдельные профили мультистратегии, которые получат то все параметры, относящиеся к этим методам, следует помещать в отдельные профили мультистратегии, которые получат
управление до определения имени хоста. Необходимо понимать алгоритм работы мультистратегий. управление до определения имени хоста. Необходимо понимать алгоритм работы мультистратегий.
"--filter-tcp=80 'параметры для http' --new ```
--filter-tcp=80 'параметры для http' --new
--filter-tcp=443 'параметры для https' --hostlist=d:/users/user/temp/list.txt --new --filter-tcp=443 'параметры для https' --hostlist=d:/users/user/temp/list.txt --new
--filter-tcp=443 --wssize 1:6" --filter-tcp=443 --wssize 1:6
```
autohostlist профиль приоритетен, поэтому wssize нужно писать туда : autohostlist профиль приоритетен, поэтому wssize нужно писать туда :
"--filter-tcp=80 'параметры для http' --new ```
--filter-tcp=443 'параметры для https' --wssize 1:6 --hostlist-auto=d:/users/user/temp/autolist.txt" --filter-tcp=80 'параметры для http' --new
--filter-tcp=443 'параметры для https' --wssize 1:6 --hostlist-auto=d:/users/user/temp/autolist.txt
```
В этих примерах wssize будет применяться всегда к порту tcp 443, а хостлист будет игнорироваться. В этих примерах wssize будет применяться всегда к порту tcp 443, а хостлист будет игнорироваться.
К http применять wssize вредно и бессмысленно. К http применять wssize вредно и бессмысленно.
7) Протестируйте найденные стратегии на winws. winws следует брать из zapret-winws. 7) Протестируйте найденные стратегии на winws. Winws следует брать из zapret-winws.
Для этого откройте командную строку windows от имени администратора в директории zapret-winws. Для этого откройте командную строку windows от имени администратора в директории zapret-winws.
Проще всего это сделать через _CMD_ADMIN.cmd. Он сам поднимет права и зайдет в нужную директорию. Проще всего это сделать через `_CMD_ADMIN.cmd`. Он сам поднимет права и зайдет в нужную директорию.
8) Обеспечьте удобную загрузку обхода блокировок. 8) Обеспечьте удобную загрузку обхода блокировок.
Есть 2 варианта. Ручной запуск через ярлык или автоматический при старте системы, вне контекста текущего пользователя. Есть 2 варианта. Ручной запуск через ярлык или автоматический при старте системы, вне контекста текущего пользователя.
Последний вариант разделяется на запуск через планировщик задач и через службы windows. Последний вариант разделяется на запуск через планировщик задач и через службы windows.
Если хотите ручной запуск, скопируйте preset_russia.cmd в preset_my.cmd и адаптируйте его под ваши параметра запуска. Если хотите ручной запуск, скопируйте `preset_russia.cmd` в `preset_my.cmd` (`<вашеазвание>.cmd`) и адаптируйте его под ваши параметра запуска.
Потом можно создать ярлык на рабочем столе на preset_my.cmd. Не забудьте, что требуется запускать от имени администратора. Потом можно создать ярлык на рабочем столе на `preset_my.cmd`. Не забудьте, что требуется запускать от имени администратора.
Но лучше будет сделать неинтерактивный автоматический запуск вместе с системой. Но лучше будет сделать неинтерактивный автоматический запуск вместе с системой.
В zapret-winws есть командные файлы task_*, предназначенные для управления задачами планировщика. В zapret-winws есть командные файлы `task_*`, предназначенные для управления задачами планировщика.
Там следует поменять содержимое переменной WINWS1 на свою стратегию. Там следует поменять содержимое переменной `WINWS1` на свою стратегию.
Если вы не можете обьединить несколько стратегий для разных протоколов в одну, дублируйте код в каждом из cmd Если вы не можете обьединить несколько стратегий для разных протоколов в одну, дублируйте код в каждом из cmd
для поддержки нескольких задач : winws1,winws2,winws3. для поддержки нескольких задач : _winws1_, _winws2_, _winws3_.
После создания задач запустите их. Проверьте, что обход встает после перезагрузки windows. После создания задач запустите их. Проверьте, что обход встает после перезагрузки windows.
Аналогично настраиваются и службы windows. Смотрите service_*.cmd Аналогично настраиваются и службы windows. Смотрите `service_*.cmd`
9) Если ломаются отдельные незаблокированные ресурсы, нужно пользоваться ограничивающим 9) Если ломаются отдельные незаблокированные ресурсы, нужно пользоваться ограничивающим
ipset или хост листом. Читайте основной талмуд readme.txt ради подробностей. ipset или хост листом. Читайте основной талмуд [readme.md](./readme.md) ради подробностей.
Но еще лучше будет подбирать такие стратегии, которые ломают минимум. Но еще лучше будет подбирать такие стратегии, которые ломают минимум.
Есть стратегии довольно безобидные, а есть сильно ломающие, которые подходят только для точечного пробития отдельных ресурсов, Есть стратегии довольно безобидные, а есть сильно ломающие, которые подходят только для точечного пробития отдельных ресурсов,
когда ничего лучше нет. Хорошая стратегия может сильно ломать из-за плохо подобранных ограничителей для фейков - ttl, fooling. когда ничего лучше нет. Хорошая стратегия может сильно ломать из-за плохо подобранных ограничителей для фейков - ttl, fooling.
Это минимальная инструкция, чтобы соориентироваться с чего начать. Однако, это - не панацея. > [!CAUTION]
В некоторых случаях вы не обойдетесь без знаний и основного "талмуда". > Это минимальная инструкция, чтобы соориентироваться с чего начать. Однако, это - не панацея.
Подробности и полное техническое описание расписаны в readme.txt > В некоторых случаях вы не обойдетесь без знаний и основного "талмуда".
Подробности и полное техническое описание расписаны в [readme.md](./readme.md)

View File

@ -1,8 +1,46 @@
# Multilanguage README # zapret v.67
# Multilanguage/Мультиязычный README
___ ___
[![en](https://img.shields.io/badge/lang-en-red.svg)](https://github.com/bol-van/zapret/tree/master/docs/readme.en.md) [![en](https://img.shields.io/badge/lang-en-red.svg)](https://github.com/bol-van/zapret/tree/master/docs/readme.en.md)
[![ru](https://img.shields.io/badge/lang-ru-green.svg)](https://github.com/bol-van/zapret/tree/master/docs/readme.md) [![ru](https://img.shields.io/badge/lang-ru-green.svg)](https://github.com/bol-van/zapret/tree/master/docs/readme.md)
***
- [What is it for](#what-is-it-for)
- [How it works](#how-it-works)
- [How to put this into practice in the linux system](#how-to-put-this-into-practice-in-the-linux-system)
- [ip6tables](#ip6tables)
- [nftables](#nftables)
- [When it will not work](#when-it-will-not-work)
- [nfqws](#nfqws)
- [DPI desync attack](#dpi-desync-attack)
- [DPI desync combos](#dpi-desync-combos)
- [SYNACK mode](#synack-mode)
- [SYNDATA mode](#syndata-mode)
- [Virtual Machines](#virtual-machines)
- [CONNTRACK](#conntrack)
- [Reassemble](#reassemble)
- [UDP support](#udp-support)
- [IP fragmentation](#ip-fragmentation)
- [multiple strategies](#multiple-strategies)
- [tpws](#tpws)
- [multiple strategies](#multiple-strategies-1)
- [Ways to get a list of blocked IP](#ways-to-get-a-list-of-blocked-ip)
- [Domain name filtering](#domain-name-filtering)
- [**autohostlist** mode](#autohostlist-mode)
- [Choosing parameters](#choosing-parameters)
- [Screwing to the firewall control system or your launch system](#screwing-to-the-firewall-control-system-or-your-launch-system)
- [Installation](#installation)
- [Checking ISP](#checking-isp)
- [desktop linux system](#desktop-linux-system)
- [OpenWRT](#openwrt)
- [Android](#android)
- [FreeBSD, OpenBSD, MacOS](#freebsd-openbsd-macos)
- [Windows (WSL)](#windows-wsl)
- [Other devices](#other-devices)
- [Donations](#donations)
***
## What is it for ## What is it for
@ -155,7 +193,7 @@ follows all standards. For example, we are routed to squid. Connection goes thro
## nfqws ## nfqws
This program is a packet modifier and a NFQUEUE queue handler. This program is a packet modifier and a NFQUEUE queue handler.
For BSD systems there is dvtws. Its built from the same source and has almost the same parameters (see bsd.en.md). For BSD systems there is dvtws. Its built from the same source and has almost the same parameters (see [bsd.en.md](./bsd.en.md)).
nfqws takes the following parameters: nfqws takes the following parameters:
``` ```
@ -1280,11 +1318,11 @@ Now its possible to run `/data/local/tmp/zapret/tpws` from any app such as taske
### FreeBSD, OpenBSD, MacOS ### FreeBSD, OpenBSD, MacOS
see docs/bsd.en.md see [docs/bsd.en.md](./bsd.en.md)
### Windows (WSL) ### Windows (WSL)
see docs/windows.en.md see [docs/windows.en.md](./windows.en.md)
### Other devices ### Other devices
@ -1314,4 +1352,5 @@ If this is the case then run another script in background and add some delay the
Are welcome here : Are welcome here :
<img src=https://cdn-icons-png.flaticon.com/16/14446/14446252.png alt="USDT" style="vertical-align: middle;"/> USDT 0x3d52Ce15B7Be734c53fc9526ECbAB8267b63d66E <img src=https://cdn-icons-png.flaticon.com/16/14446/14446252.png alt="USDT" style="vertical-align: middle;"/> USDT 0x3d52Ce15B7Be734c53fc9526ECbAB8267b63d66E
<img src=https://cdn-icons-png.flaticon.com/16/5968/5968260.png alt="USDT" style="vertical-align: middle;"/> BTC bc1qhqew3mrvp47uk2vevt5sctp7p2x9m7m5kkchve <img src=https://cdn-icons-png.flaticon.com/16/5968/5968260.png alt="USDT" style="vertical-align: middle;"/> BTC bc1qhqew3mrvp47uk2vevt5sctp7p2x9m7m5kkchve

View File

@ -66,7 +66,7 @@ VPN.
> *Linux/openwrt:* [docs/quick_start.txt](./quick_start.txt) > *Linux/openwrt:* [docs/quick_start.txt](./quick_start.txt)
> >
>*Windows:* [docs/quick_start_windows.txt](./quick_start_windows.txt) >*Windows:* [docs/quick_start_windows.md](./quick_start_windows.md)
## Как это работает ## Как это работает
@ -305,7 +305,7 @@ dvtws, собираемый из тех же исходников (см. [bsd.tx
--new ; начало новой стратегии (новый профиль) --new ; начало новой стратегии (новый профиль)
--filter-l3=ipv4|ipv6 ; фильтр версии ip для текущей стратегии --filter-l3=ipv4|ipv6 ; фильтр версии ip для текущей стратегии
--filter-tcp=[~]port1[-port2]|* ; фильтр портов tcp для текущей стратегии. ~ означает инверсию. установка фильтра tcp и неустановка фильтра udp запрещает udp. поддерживается список через запятую. --filter-tcp=[~]port1[-port2]|* ; фильтр портов tcp для текущей стратегии. ~ означает инверсию. установка фильтра tcp и неустановка фильтра udp запрещает udp. поддерживается список через запятую.
--filter-udp=[~]port1[-port2]|* ; фильтр портов udp для текущей стратегии. ~ означает инверсию. установка фильтра udp и неустановка фильтра tcp запрещает udp. поддерживается список через запятую. --filter-udp=[~]port1[-port2]|* ; фильтр портов udp для текущей стратегии. ~ означает инверсию. установка фильтра udp и неустановка фильтра tcp запрещает tcp. поддерживается список через запятую.
--filter-l7=[http|tls|quic|wireguard|dht|unknown] ; фильтр протокола L6-L7. поддерживается несколько значений через запятую. --filter-l7=[http|tls|quic|wireguard|dht|unknown] ; фильтр протокола L6-L7. поддерживается несколько значений через запятую.
--ipset=<filename> ; включающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая. --ipset=<filename> ; включающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая.
--ipset-exclude=<filename> ; исключающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая. --ipset-exclude=<filename> ; исключающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая.
@ -1533,12 +1533,12 @@ NFQWS_UDP_PKT_OUT=$((6+$AUTOHOSTLIST_RETRANS_THRESHOLD))
NFQWS_UDP_PKT_IN=0 NFQWS_UDP_PKT_IN=0
``` ```
Есть трафик, исходящий сеанс для которого необходимо перенаправлять весь без ограничителей ***Задать порты для перенаправления на nfqws без connbytes ограничителя***\
типичное применение - поддержка http keepalives на stateless DPI Есть трафик, исходящий сеанс для которого необходимо перенаправлять весь без ограничителей.
это существенно нагружает процессор. использовать только если понимаете зачем. чаще всего это не нужно. Типичное применение - поддержка http keepalives на stateless DPI.
входящий трафик ограничивается по connbytes через параметры PKT_IN Это существенно нагружает процессор. Использовать только если понимаете зачем. Чаще всего это не нужно.
задать порты для перенаправления на nfqws без connbytes ограничителя Входящий трафик ограничивается по connbytes через параметры PKT_IN.
если указываете здесь какие-то порты, желательно их убрать из версии с connbytes ограничителем Если указываете здесь какие-то порты, желательно их убрать из версии с connbytes ограничителем
``` ```
NFQWS_PORTS_TCP_KEEPALIVE=80 NFQWS_PORTS_TCP_KEEPALIVE=80
NFQWS_PORTS_UDP_KEEPALIVE= NFQWS_PORTS_UDP_KEEPALIVE=
@ -2058,7 +2058,7 @@ curl: (7) Failed to connect to www.ru port 80: Host is unreachable
## Windows ## Windows
Описано в [docs/windows.txt](./windows.txt) Описано в [docs/windows.md](./windows.md)
## Другие прошивки ## Другие прошивки

View File

@ -1,55 +1,68 @@
tpws # Windows
----
Запуск tpws возможен только в Linux варианте под WSL. ## tpws
Запуск tpws возможен только в Linux варианте под **WSL** _(Windows Subsystem for Linux)_.
Нативного варианта под Windows нет, поскольку он использует epoll, которого под windows не существует. Нативного варианта под Windows нет, поскольку он использует epoll, которого под windows не существует.
tpws в режиме socks можно запускать под более-менее современными билдами windows 10 и windows server tpws в режиме socks можно запускать под более-менее современными билдами windows 10 и windows server
с установленным WSL. Совсем не обязательно устанавливать дистрибутив убунту, как вам напишут почти в каждой с установленным WSL. Совсем не обязательно устанавливать дистрибутив убунту, как вам напишут почти в каждой
статье про WSL, которую вы найдете в сети. tpws - статический бинарик, ему дистрибутив не нужен. статье про WSL, которую вы найдете в сети. tpws - статический бинарик, ему дистрибутив не нужен.
Установить WSL : dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all Установить WSL :
Скопировать на целевую систему binaries/x86_64/tpws_wsl.tgz. `dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all`
Выполнить : wsl --import tpws "%USERPROFILE%\tpws" tpws_wsl.tgz
Запустить : wsl -d tpws --exec /tpws --uid=1 --no-resolve --socks --bind-addr=127.0.0.1 --port=1080 <параметры_дурения>
Прописать socks 127.0.0.1:1080 в броузер или другую программу.
Удаление : wsl --unregister tpws Скопировать на целевую систему `binaries/x86_64/tpws_wsl.tgz`.
Проверено на windows 10 build 19041 (20.04). Выполнить :
`wsl --import tpws "%USERPROFILE%\tpws" tpws_wsl.tgz`
Не работают функции --oob и --mss из-за ограничений реализации WSL. Запустить :
--disorder не работает из-за особенностей tcp/ip стека windows. `wsl -d tpws --exec /tpws --uid=1 --no-resolve --socks --bind-addr=127.0.0.1 --port=1080 <параметры_дурения>`
Может не срабатывать детект RST в autohostlist.
WSL может глючить со splice, приводя к зацикливанию процесса. Может потребоваться --nosplice. Прописать socks `127.0.0.1:1080` в браузер или другую программу.
Не поддерживается tcp user timeout.
Чтобы избавиться от исообщений об ошибке добавляйте "--local-tcp-user-timeout=0 --remote-tcp-user-timeout=0". Удаление : `wsl --unregister tpws`
> [!NOTE]
> Проверено на windows 10 build 19041 (20.04).
Возможные проблемы:
- Не работают функции `--oob` и `--mss` из-за ограничений реализации WSL.
`--disorder` не работает из-за особенностей tcp/ip стека windows.
- Может не срабатывать детект RST в autohostlist.
- WSL может глючить со splice, приводя к зацикливанию процесса. Может потребоваться `--nosplice`.
- Не поддерживается tcp user timeout.
Чтобы избавиться от сообщений об ошибке добавляйте :
`--local-tcp-user-timeout=0 --remote-tcp-user-timeout=0`.
Эти сообщения только информативные, на работу они не влияют. Эти сообщения только информативные, на работу они не влияют.
## winws
winws
-----
Это вариант пакетного фильтра nfqws для Windows, построенный на базе windivert. Это вариант пакетного фильтра nfqws для Windows, построенный на базе windivert.
Все функции работоспособны, однако функционал ipset отсутствует. Фильтры по большому количеству IP адресов невозможны. Все функции работоспособны, однако функционал ipset в ядре отсутствует. Он реализован в user mode. Фильтры по большому количеству IP адресов невозможны.
Работа с проходящим трафиком, например в случае "расшаривания" соединения, не проверялась и не гарантируется. Работа с проходящим трафиком, например в случае "расшаривания" соединения, не проверялась и не гарантируется.
Для работы с windivert требуются права администратора. Для работы с windivert требуются права администратора.
Специфические для unix параметры, такие как --uid, --user и тд, исключены. Все остальные параметры аналогичны nfqws и dvtws. Специфические для unix параметры, такие как `--uid`, `--user` и тд, исключены. Все остальные параметры аналогичны nfqws и dvtws.
Работа с пакетным фильтром основана на двух действиях. Работа с пакетным фильтром основана на двух действиях :
Первое - выделение перенаправляемого трафика в режиме ядра и передача его пакетному фильтру в user mode. 1) Выделение перенаправляемого трафика в режиме ядра и передача его пакетному фильтру в user mode.
Второе - собственно обработка перенаправленных пакетов в пакетном фильтре. 2) Собственно обработка перенаправленных пакетов в пакетном фильтре.
В windows отсутствуют встроенные средства для перенаправления трафика, такие как iptables, nftables, pf или ipfw. В windows отсутствуют встроенные средства для перенаправления трафика, такие как _iptables_, _nftables_, _pf_ или _ipfw_.
Поэтому используется сторонний драйвер ядра windivert. Он работает, начиная с windows 7. На системах с включенным Поэтому используется сторонний драйвер ядра windivert. Он работает, начиная с windows 7. На системах с включенным
secure boot могут быть проблемы из-за подписи драйвера. В этом случае отключите secureboot или включите режим testsigning. secure boot могут быть проблемы из-за подписи драйвера. В этом случае отключите `secureboot` или включите режим `testsigning`.
На windows 7 вероятно будут проблемы с загрузкой windivert. Читайте ниже соответствующий раздел. На windows 7, вероятно, будут проблемы с загрузкой windivert. Читайте ниже соответствующий раздел.
Задача iptables в winws решается внутренними средствами через фильтры windivert. Задача _iptables_ в **winws** решается внутренними средствами через фильтры windivert.
У windivert существует собственный язык фильтров, похожий на язык фильтров wireshark. У windivert существует собственный язык фильтров, похожий на язык фильтров wireshark.
Документация по фильтрам windivert : https://reqrypt.org/windivert-doc.html#filter_language [Документация по фильтрам windivert.](https://reqrypt.org/windivert-doc.html#filter_language)
Чтобы не писать сложные фильтры вручную, предусмотрены различные упрощенные варианты автоматического построения фильтров. Чтобы не писать сложные фильтры вручную, предусмотрены различные упрощенные варианты автоматического построения фильтров.
```
--wf-iface=<int>[.<int>] ; числовые индексы интерфейса и суб-интерфейса --wf-iface=<int>[.<int>] ; числовые индексы интерфейса и суб-интерфейса
--wf-l3=ipv4|ipv6 ; фильтр L3 протоколов. по умолчанию включены ipv4 и ipv6. --wf-l3=ipv4|ipv6 ; фильтр L3 протоколов. по умолчанию включены ipv4 и ipv6.
--wf-tcp=[~]port1[-port2] ; фильтр портов для tcp. ~ означает отрицание --wf-tcp=[~]port1[-port2] ; фильтр портов для tcp. ~ означает отрицание
@ -59,170 +72,187 @@ secure boot могут быть проблемы из-за подписи дра
--ssid-filter=ssid1[,ssid2,ssid3,...] ; включать winws только когда подключена любая из указанных wifi сетей --ssid-filter=ssid1[,ssid2,ssid3,...] ; включать winws только когда подключена любая из указанных wifi сетей
--nlm-filter=net1[,net2,net3,...] ; включать winws только когда подключена любая из указанных сетей NLM --nlm-filter=net1[,net2,net3,...] ; включать winws только когда подключена любая из указанных сетей NLM
--nlm-list[=all] ; вывести список сетей NLM. по умолчанию только подключенных, all - всех. --nlm-list[=all] ; вывести список сетей NLM. по умолчанию только подключенных, all - всех.
Параметры --wf-l3, --wf-tcp, --wf-udp могут брать несколько значений через запятую. ```
Номера интерфейсов можно узнать так : netsh int ip show int. Параметры `--wf-l3`, `--wf-tcp`, `--wf-udp` могут брать несколько значений через запятую.
Некоторых типы соединений там не увидеть. В этом случае запускайте winws с параметром --debug и смотрите IfIdx там.
SubInterface используется windivert, но практически всегда 0, его можно не указывать. Вероятно он нужен в редких случаях. Номера интерфейсов можно узнать так : `netsh int ip show int`.
Некоторых типы соединений там не увидеть. В этом случае запускайте **winws** с параметром `--debug` и смотрите IfIdx там.
SubInterface используется windivert, но практически всегда **0**, его можно не указывать. Вероятно, он нужен в редких случаях.
Конструктор фильтров автоматически включает входящие tcp пакеты с tcp synack и tcp rst для корректной работы функций Конструктор фильтров автоматически включает входящие tcp пакеты с tcp synack и tcp rst для корректной работы функций
autottl и autohostlist. При включении autohostlist так же перенаправляются пакеты данных с http redirect с кодами 302 и 307. autottl и autohostlist. При включении autohostlist так же перенаправляются пакеты данных с http redirect с кодами 302 и 307.
Всегда добавляется фильтр на исключение не-интернет адресов ipv4 и ipv6. Всегда добавляется фильтр на исключение не-интернет адресов ipv4 и ipv6.
Для сложных нестандартных сценариев могут потребоваться свои фильтры. Логично будет начать со стандартного шаблона, Для сложных нестандартных сценариев могут потребоваться свои фильтры. Логично будет начать со стандартного шаблона,
сохраненного через --wf-save. Нужно править файл и подсовывать его в параметре --wf-raw. Максимальный размер фильтра - 8 Kb. сохраненного через `--wf-save`. Нужно править файл и подсовывать его в параметре `--wf-raw`. Максимальный размер фильтра - **8 Kb**.
Можно запускать несколько процессов winws с разными стратегиями. Однако, не следует делать пересекающиеся фильтры. Можно запускать несколько процессов **winws** с разными стратегиями. Однако, не следует делать пересекающиеся фильтры.
В --ssid-filter можно через запятую задать неограниченное количество имен wifi сетей (SSID). Если задана хотя бы одна сеть, В `--ssid-filter` можно через запятую задать неограниченное количество имен wifi сетей (**SSID**). Если задана хотя бы одна сеть,
то winws включается только, если подключен указанный SSID. Если SSID исчезает, winws отключается. Если SSID появляется снова, то winws включается только, если подключен указанный **SSID**. Если **SSID** исчезает, winws отключается. Если **SSID** появляется снова,
winws включается. Это нужно, чтобы можно было применять раздельное дурение к каждой отдельной wifi сети. winws включается. Это нужно, чтобы можно было применять раздельное дурение к каждой отдельной wifi сети.
Названия сетей должны быть написаны в том регистре, в котором их видит система. Сравнение идет с учетом регистра! Названия сетей должны быть написаны в том регистре, в котором их видит система. Сравнение идет с учетом регистра!
При этом нет никаких проверок куда реально идет трафик. Если одновременно подключен, допустим, ethernet, При этом нет никаких проверок куда реально идет трафик. Если одновременно подключен, допустим, ethernet,
и трафик идет туда, то дурение включается и выключается просто по факту наличия wifi сети, на которую трафик может и не идти. и трафик идет туда, то дурение включается и выключается просто по факту наличия wifi сети, на которую трафик может и не идти.
И это может сломать дурение на ethernet. Поэтому полезно так же будет добавить фильтр --wf-iface на индекс интерфейса wifi адаптера, И это может сломать дурение на ethernet. Поэтому полезно так же будет добавить фильтр `--wf-iface` на индекс интерфейса wifi адаптера,
чтобы не трогать другой трафик. чтобы не трогать другой трафик.
--nlm-filter аналогичен --ssid-filter, но работает с именами или GUIDами сетей Network List Manager (NLM). `--nlm-filter` аналогичен `--ssid-filter`, но работает с именами или GUIDами сетей Network List Manager (NLM).
Это те сети, которые вы видите в панели управления в разделе "Центр управления сетями и общим доступом". Это те сети, которые вы видите в панели управления в разделе "Центр управления сетями и общим доступом".
Под сетью подразумевается не конкретный адаптер, а именно сетевое окружение конкретного подключения. Под сетью подразумевается не конкретный адаптер, а именно сетевое окружение конкретного подключения.
Обычно проверяется mac адрес шлюза. К сети можно подключиться через любой адаптер, и она останется той же самой. Обычно проверяется mac адрес шлюза. К сети можно подключиться через любой адаптер, и она останется той же самой.
Если подключиться, допустим, к разными роутерам по кабелю, то будут разные сети. Если подключиться, допустим, к разными роутерам по кабелю, то будут разные сети.
А если к одному роутеру через 2 разных сетевых карточки на том же компе - будет одна сеть. А если к одному роутеру через 2 разных сетевых карточки на том же компе - будет одна сеть.
NLM абстрагирует типы сетевых адаптеров. Он работает как с wifi, так и с ethernet и любыми другими. NLM абстрагирует типы сетевых адаптеров. Он работает как с wifi, так и с ethernet и любыми другими.
Поэтому это более универсальный метод, чем ssid фильтр. Поэтому это более универсальный метод, чем **SSID** фильтр.
Однако, есть и неприятная сторона. В windows 7 вы легко могли ткнуть на иконку сети и выбрать тип : private или public. Однако, есть и неприятная сторона. В windows 7 вы легко могли ткнуть на иконку сети и выбрать тип : private или public.
Там же вы могли посмотреть список сетей и обьединить их. Чтобы, допустим, вы могли подключаться по кабелю и wifi Там же вы могли посмотреть список сетей и обьединить их. Чтобы, допустим, вы могли подключаться по кабелю и wifi
к одному роутеру, и система эти подключения воспринимала как одну сеть. к одному роутеру, и система эти подключения воспринимала как одну сеть.
В следующих версиях windows они эти возможности сильно порезали. Похоже нет встроенных средств полноценно управлять В следующих версиях windows они эти возможности сильно порезали. Похоже нет встроенных средств полноценно управлять
network locations в win10/11. Кое-что есть в powershell. network locations в win10/11. Кое-что есть в **powershell**.
Можно поковыряться напрямую в реестре здесь : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList Можно поковыряться напрямую в реестре здесь :
Нужно менять ProfileGUID в Signatures\Unmanaged. Имена можно поменять в Profiles. `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList`
Нужно менять ProfileGUID в `Signatures\Unmanaged`. Имена можно поменять в Profiles.
Есть кое-какие сторонние утилиты. Кое-что находится, позволяющее посмотреть и удалить network profiles, но не обьединить. Есть кое-какие сторонние утилиты. Кое-что находится, позволяющее посмотреть и удалить network profiles, но не обьединить.
Факт, что в ms они это сильно испортили. Движок network list все тот же, и он способен на все то, что было в win7. Факт, что в ms они это сильно испортили. Движок network list все тот же, и он способен на все то, что было в win7.
Можно не бороться с этой проблемой, а просто указывать через запятую те названия сетей или GUIDы, которые выбрала система. Можно не бороться с этой проблемой, а просто указывать через запятую те названия сетей или GUIDы, которые выбрала система.
Или если у вас только wifi, то использовать --ssid-filter. Там хотя бы есть гарантия, что SSID соответствуют реальности, Или если у вас только wifi, то использовать `--ssid-filter`. Там хотя бы есть гарантия, что **SSID** соответствуют реальности,
а система их не назвала как-то по-своему. а система их не назвала как-то по-своему.
Если в путях присутствуют национальные символы, то при вызове winws из cmd или bat кодировку нужно использовать OEM. Если в путях присутствуют национальные символы, то при вызове winws из `cmd` или `bat` кодировку нужно использовать **OEM**.
Для русского языка это 866. Пути с пробелами нужно брать в кавычки. Для русского языка это 866. Пути с пробелами нужно брать в кавычки.
При использовании опции @<config_file> кодировка в файле должна быть UTF-8 без BOM mark. При использовании опции @<config_file> кодировка в файле должна быть **UTF-8** без **BOM mark**.
Существует неочевидный момент, каcаемый запуска winws из cygwin шелла. Если в директории, где находится winws, находится Существует неочевидный момент, каcаемый запуска **winws** из cygwin shell\`а. Если в директории, где находится winws, находится
копия cygwin1.dll, winws не запустится. копия `cygwin1.dll`, **winws** не запустится.
Если нужен запуск под cygwin, то следует удалить или переместить cygwin1.dll из binaries/win64. Это нужно для работы blockcheck. Если нужен запуск под cygwin, то следует удалить или переместить `cygwin1.dll` из `binaries/win64`. Это нужно для работы blockcheck.
Из cygwin шелла можно посылать winws сигналы через kill точно так же, как в *nix. Из cygwin шелла можно посылать winws сигналы через `kill` точно так же, как в `*nix`.
Как получить совместимый с windows 7 и winws cygwin : Как получить совместимый с windows 7 и winws cygwin :
curl -O https://www.cygwin.com/setup-x86_64.exe
setup-x86_64.exe --allow-unsupported-windows --no-verify --site http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/circa/64bit/2024/01/30/231215
Следует выбрать установку curl.
Для сборки из исходников требуется gcc-core,make,zlib-devel. `curl -O https://www.cygwin.com/setup-x86_64.exe`
Собирать из директории nfq командой "make cygwin64" или "make cygwin32" для 64 и 32 битных версий соответственно.
winws требует cygwin1.dll, windivert.dll, windivert64.sys или windivert32.sys.
Их можно взять из binaries/win64 и binaries/win32.
Для arm64 windows нет подписанного драйвера windivert и нет cygwin. `setup-x86_64.exe --allow-unsupported-windows --no-verify --site http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/circa/64bit/2024/01/30/231215`
> [!IMPORTANT]
> Следует выбрать установку curl.
Для сборки из исходников требуется _gcc-core_,_make_,_zlib-devel_.
Собирать из директории nfq командой `make cygwin64` или `make cygwin32` для 64 и 32 битных версий соответственно.
**winws** требует `cygwin1.dll`, `windivert.dll`, `windivert64.sys` или `windivert32.sys`.
Их можно взять из `binaries/win64` и `binaries/win32`.
Для _arm64_ windows нет подписанного драйвера windivert и нет cygwin.
Однако, эмуляция x64 windows 11 позволяет использовать все, кроме WinDivert64.sys без изменений. Однако, эмуляция x64 windows 11 позволяет использовать все, кроме WinDivert64.sys без изменений.
Но при этом надо заменить WinDivert64.sys на неподписанную arm64 версию и установить режим testsigning. Но при этом надо заменить WinDivert64.sys на неподписанную _arm64_ версию и установить режим testsigning.
Windows 7 и windivert ## Windows 7 и windivert
---------------------
Требования к подписи драйверов windows изменились в 2021 году. Требования к подписи драйверов windows изменились в 2021 году.
Официальные бесплатные обновления windows 7 закончились в 2020. Официальные бесплатные обновления windows 7 закончились в 2020.
После этого несколько лет продолжали идти платные обновления по программе ESU. После этого несколько лет продолжали идти платные обновления по программе **ESU**.
Именно в этих ESU обновлениях находится обновление ядра windows 7, позволяющиее загрузить драйвер Именно в этих **ESU** обновлениях находится обновление ядра windows 7, позволяющиее загрузить драйвер
windivert 2.2.2-A, который идет в поставке zapret. _windivert 2.2.2-A_, который идет в поставке zapret.
Поэтому варианты следующие : Поэтому варианты следующие :
1) Взять windivert64.sys и windivert.dll версии 2.2.0-C или 2.2.0-D отсюда : https://reqrypt.org/download 1) Взять `windivert64.sys` и `windivert.dll` версии _2.2.0-C_ или _2.2.0-D_ отсюда : https://reqrypt.org/download
и заменить эти 2 файла. и заменить эти 2 файла.
В zapret-win-bundle есть отдельных 2 места, где находится winws : zapret-winws и blockcheck/zapret/nfq. В [zapret-win-bundle](https://github.com/bol-van/zapret-win-bundle) есть отдельных 2 места, где находится **winws** : [_zapret-winws_](https://github.com/bol-van/zapret-win-bundle/tree/master/zapret-winws) и [_blockcheck/zapret/nfq_](https://github.com/bol-van/zapret-win-bundle/tree/master/blockcheck).
Надо менять в обоих местах. Надо менять в обоих местах.
Этот вариант проверен и должен работать. Тем не менее патч 10 летней давности, который включает SHA256
сигнатуры, все еще необходим.
2) Взломать ESU : > [!NOTE]
> Этот вариант проверен и должен работать. Тем не менее патч 10 летней давности, который включает SHA256 сигнатуры, все еще необходим.
2) Взломать **ESU** :
https://hackandpwn.com/windows-7-esu-patching/ https://hackandpwn.com/windows-7-esu-patching/
http://www.bifido.net/tweaks-and-scripts/8-extended-security-updates-installer.html http://www.bifido.net/tweaks-and-scripts/8-extended-security-updates-installer.html
и обновить систему и обновить систему
3) Использовать UpdatePack7R2 от simplix : https://blog.simplix.info 3) Использовать UpdatePack7R2 от simplix : https://blog.simplix.info
Но с этим паком есть проблема. Автор из Украины, он очень обиделся на русских. > [!WARNING]
Если в панели управления стоит регион RU или BY, появляется неприятный диалог. > Но с этим паком есть проблема. Автор из Украины, он очень обиделся на русских.
Чтобы эту проблему обойти, можно поставить временно любой другой регион, потом вернуть. > Если в панели управления стоит регион RU или BY, появляется неприятный диалог.
Так же нет никаких гарантий, что автор не насовал туда какой-то зловредный код. > Чтобы эту проблему обойти, можно поставить временно любой другой регион, потом вернуть.
Использовать на свой страх и риск. > Так же нет никаких гарантий, что автор не насовал туда какой-то зловредный код.
> Использовать на свой страх и риск.
Более безопасный вариант - скачать последнюю нормальную довоенную версию : 22.2.10 Более безопасный вариант - скачать последнюю нормальную довоенную версию : 22.2.10
https://nnmclub.to/forum/viewtopic.php?t=1530323 https://nnmclub.to/forum/viewtopic.php?t=1530323
Ее достаточно, чтобы windivert 2.2.2-A заработал на windows 7. Ее достаточно, чтобы _windivert 2.2.2-A_ заработал на windows 7.
blockcheck ## blockcheck
----------
blockcheck.sh написан на posix shell и требует некоторых стандартных утилит posix. В windows, естественно, этого нет. `blockcheck.sh` написан на _posix shell_ и требует некоторых стандартных утилит _posix_. В windows, естественно, этого нет.
Потому просто так запустить blockcheck.sh невозможно. Потому просто так запустить `blockcheck.sh` невозможно.
Для этого требуется скачать и установить cygwin так , как описано в предыдущем разделе. Для этого требуется скачать и установить _cygwin_ так , как описано в предыдущем разделе.
Следует запустить от имени администратора cygwin shell через cygwin.bat. Следует запустить от имени администратора _cygwin shell_ через `cygwin.bat`.
В нем нужно пройти в директорию с zapret. В нем нужно пройти в директорию с zapret.
Обратные слэши путей windows нужно удваивать, менять на прямые слэши, либо использовать отображение на unix path. Обратные слэши путей windows нужно удваивать, менять на прямые слэши, либо использовать отображение на unix path.
Корректный вариант 1 : cd "C:\\Users\\vasya" Корректные варианты :
Корректный вариант 2 : cd "C:/Users/vasya" - `cd C:\\Users\\vasya`
Корректный вариант 3 : cd "/cygdrive/c/Users/vasya" - `cd C:/Users/vasya`
Существует неочевидный момент, каcаемый запуска winws из cygwin шелла. Если в директории, где находится winws, находится - `cd /cygdrive/c/Users/vasya`
копия cygwin1.dll, winws не запустится. Нужно переименовать файл cygwin1.dll.
Далее все как в *nix : 1 раз ./install_bin.sh , затем ./blockcheck.sh. Существует неочевидный момент, каcаемый запуска **winws** из _cygwin_ шелла. Если в директории, где находится **winws**, есть копия `cygwin1.dll`, **winws** не запустится. Нужно переименовать файл `cygwin1.dll`.
Далее все как в _*nix_ : 1 раз `./install_bin.sh` , затем `./blockcheck.sh`.
WSL использовать нельзя, это не то же самое. WSL использовать нельзя, это не то же самое.
cygwin для обычной работы winws не нужен. _cygwin_ для обычной работы **winws** не нужен.
Однако, хотя такой способ и работает, использование winws сильно облегчает zapret-win-bundle. Однако, хотя такой способ и работает, использование **winws** сильно облегчает [zapret-win-bundle](https://github.com/bol-van/zapret-win-bundle).
Там нет проблемы с cygwin.dll. Там нет проблемы с `cygwin.dll`.
автозапуск winws ## Автозапуск winws
----------------
Для запуска winws вместе с windows есть 2 варианта. Планировщик задач или службы windows. Для запуска **winws** вместе с windows есть 2 варианта. Планировщик задач или службы windows.
Можно создавать задачи и управлять ими через консольную программу schtasks. Можно создавать задачи и управлять ими через консольную программу schtasks.
В директории binaries/win64/winws подготовлены файлы task_*.cmd . В директории `binaries/win64/winws` подготовлены файлы `task_*.cmd` .
В них реализовано создание, удаление, старт и стоп одной копии процесса winws с параметрами из переменной %WINWS1%. В них реализовано создание, удаление, старт и стоп одной копии процесса winws с параметрами из переменной `%WINWS1%`.
Исправьте параметры на нужную вам стратегию. Если для разных фильтров применяется разная стратегия, размножьте код Исправьте параметры на нужную вам стратегию. Если для разных фильтров применяется разная стратегия, размножьте код
для задач winws1,winws2,winws3,... для задач _winws1_,_winws2_,_winws3_,_..._
Аналогично настраивается вариант запуска через службы windows. Смотрите service_*.cmd. Аналогично настраивается вариант запуска через службы windows. Смотрите `service_*.cmd`.
Все батники требуется запускать от имени администратора. Все батники требуется запускать от имени администратора.
Управлять задачами можно так же из графической программы управления планировщиком taskschd.msc Управлять задачами можно так же из графической программы управления планировщиком `taskschd.msc`
zapret-win-bundle ## Zapret-win-bundle
-----------------
Можно не возиться с cygwin, а взять готовый пакет, включающий в себя cygwin и blockcheck : https://github.com/bol-van/zapret-win-bundle Можно не возиться с _cygwin_, а взять готовый пакет, включающий в себя _cygwin_ и _blockcheck_ : https://github.com/bol-van/zapret-win-bundle
Там сделан максимум удобств для сосредоточения на самом zapret, исключая возню с установкой cygwin, Там сделан максимум удобств для сосредоточения на самом zapret, исключая возню с установкой _cygwin_,
заходами в директории, запусками под администратором и прочими сугубо техническими моментами, в которых могут быть заходами в директории, запусками под администратором и прочими сугубо техническими моментами, в которых могут быть
ошибки и непонимания, а новичок без базиса знаний может и вовсе запутаться. ошибки и непонимания, а новичок без базиса знаний может и вовсе запутаться.
/zapret-winws - здесь все, что нужно для запуска winws в повседневном рабочем режиме. остальное не нужно. `/zapret-winws` - здесь все, что нужно для запуска winws в повседневном рабочем режиме. остальное не нужно.\
/zapret-winws/_CMD_ADMIN.cmd - получить командную строку cmd в этой директории от имени администратора для тестирования winws `/zapret-winws/_CMD_ADMIN.cmd` - получить командную строку cmd в этой директории от имени администратора для тестирования **winws**
с параметрами, вводимыми вручную с параметрами, вводимыми вручную\
/blockcheck/blockcheck.cmd - достаточно кликнуть по нему, чтобы пошел blockcheck с записью лога в blockcheck/blockcheck.log `/blockcheck/blockcheck.cmd` - достаточно кликнуть по нему, чтобы пошел _blockcheck_ с записью лога в `blockcheck/blockcheck.log`\
/cygwin/cygwin.cmd - запуск среды cygwin bash под текущим пользователем `/cygwin/cygwin.cmd` - запуск среды _cygwin bash_ под текущим пользователем\
/cygwin/cygwin-admin.cmd - запуск среды cygwin bash под администратором `/cygwin/cygwin-admin.cmd` - запуск среды _cygwin bash_ под администратором
В среде cygwin уже настроены alias-ы на winws,blockcheck,ip2net,mdig. С путями возиться не нужно ! В среде _cygwin_ уже настроены alias-ы на winws,blockcheck,ip2net,mdig. С путями возиться не нужно!
Из cygwin можно не только тестировать winws, но и посылать сигналы.
Доступны команды pidof,kill,killall,pgrep,pkill. > [!TIP]
Но важно понимать, что таким образом не выйдет посылать сигналы winws, запущенному из zapret-winws, > Из cygwin можно не только тестировать winws, но и посылать сигналы.
поскольку там свой cygwin1.dll, и они не разделяют общее пространство процессов unix. > Доступны команды:
zapret-winws - это отдельный комплект для повседневного использования, не требующий что-то еще, но и не связанный со средой cygwin. >- `pidof`
>- `kill`
>- `killall`
>- `pgrep`
>- `pkill`
Но важно понимать, что таким образом не выйдет посылать сигналы **winws**, запущенному из _zapret-winws_,
поскольку там свой `cygwin1.dll`, и они не разделяют общее пространство процессов unix.
_zapret-winws_ - это отдельный комплект для повседневного использования, не требующий что-то еще, но и не связанный со _средой cygwin_.
Специально для посылки сигналов winws в _zapret-winws_ присутствует killall.exe.
Среду cygwin можно использовать для записи в файл дебаг-лога winws. Для этого пользуйтесь командой tee. Среду cygwin можно использовать для записи в файл дебаг-лога winws. Для этого пользуйтесь командой tee.
winws --debug --wf-tcp=80,443 | tee winws.log `winws --debug --wf-tcp=80,443 | tee winws.log`
winws.log будет в cygwin/home/<имя_пользователя> `winws.log` будет в `cygwin/home/<имя_пользователя>`
Если у вас windows 7, то блокнот не поймет переводы строк в стиле unix. Воспользуйтесь командой Если у вас windows 7, то блокнот не поймет переводы строк в стиле unix. Воспользуйтесь командой
unix2dos winws.log `unix2dos winws.log`
Поскольку 32-битные windows мало востребованы, zapret-win-bundle существует только в варианте для windows x64/arm64. > [!CAUTION]
> Поскольку 32-битные windows мало востребованы, _zapret-win-bundle_ существует только в варианте для windows _x64/arm64_.