Compare commits

..

12 Commits

Author SHA1 Message Date
[anp/hsw]
b5837e844e optimize brackets and macro 2024-08-16 11:10:40 +07:00
[anp/hsw]
37266bcf87
Merge branch 'master' into master 2024-08-16 09:53:07 +07:00
[anp/hsw]
479ff56a6b fixing -Wstrict-aliasing (try 2) 2024-08-16 09:50:26 +07:00
bol-van
abcfa61168 tpws: is_localnet: deny ::0,::1 2024-08-15 20:20:58 +03:00
bol-van
5354c973df
Merge pull request #274 from igrishaev/patch-1
fix typo in quick_start.txt
2024-08-14 11:38:09 +03:00
Ivan Grishaev
0da3501f54
fix typo in quick_start.txt 2024-08-14 10:40:04 +03:00
bol-van
94c848eab5 install_easy: use vim editor 2024-08-13 15:20:34 +03:00
bol-van
6e061c8fc9 update bins and upx ver 2024-08-13 15:13:55 +03:00
bol-van
c369f11638 windows readme: new info about windows 7 driver signing 2024-08-02 21:34:13 +03:00
bol-van
519ba550ed windows readme: new info about windows 7 driver signing 2024-08-02 20:46:12 +03:00
bol-van
f42bd2c0a4 windows readme: new info about windows 7 driver signing 2024-08-02 20:40:17 +03:00
bol-van
25f5d21876 windows readme: new info about windows 7 driver signing 2024-08-02 20:38:23 +03:00
23 changed files with 62 additions and 10 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -39,7 +39,7 @@ edit_file()
# $1 - file name # $1 - file name
local ed="$EDITOR" local ed="$EDITOR"
[ -n "$ed" ] || { [ -n "$ed" ] || {
for e in mcedit nano vi; do for e in mcedit nano vim vi; do
exists "$e" && { exists "$e" && {
ed="$e" ed="$e"
break break
@ -685,4 +685,4 @@ select_fwtype()
} }
echo select firewall type : echo select firewall type :
ask_list FWTYPE "iptables nftables" "$FWTYPE" && write_config_var FWTYPE ask_list FWTYPE "iptables nftables" "$FWTYPE" && write_config_var FWTYPE
} }

View File

@ -133,5 +133,5 @@ NFQWS_OPT_DESYNC_HTTP и NFQWS_OPT_DESYNC_HTTPS заменяют стратег
ipset или хост листом. Читайте основной толмуд readme.txt ради подробностей. ipset или хост листом. Читайте основной толмуд readme.txt ради подробностей.
Это минимальная инструкция, чтобы соориентироваться с чего начать. Однако, это - не панацея. Это минимальная инструкция, чтобы соориентироваться с чего начать. Однако, это - не панацея.
В некоторых случаях вы не обойдетесь без знаний и основного "толмуда". В некоторых случаях вы не обойдетесь без знаний и основного "талмуда".
Подробности и полное техническое описание расписаны в readme.txt Подробности и полное техническое описание расписаны в readme.txt

View File

@ -37,7 +37,7 @@ In *nix it's done by `iptables`, `nftables`, `pf`, `ipfw`.
Windows does not have part 1. No `iptables` exist. That's why 3rd party packet redirector is used. Windows does not have part 1. No `iptables` exist. That's why 3rd party packet redirector is used.
It's called `windivert`. It works starting from `windows 7`. Kernel driver is signed but it may require to disable secure boot It's called `windivert`. It works starting from `windows 7`. Kernel driver is signed but it may require to disable secure boot
or update windows 7. or update windows 7. Read below for windows 7 windivert signing info.
Task of `iptables` is done inside `winws` through `windivert` filters. `Windivert` has it's own [filter language](https://reqrypt.org/windivert-doc.html#filter_language). Task of `iptables` is done inside `winws` through `windivert` filters. `Windivert` has it's own [filter language](https://reqrypt.org/windivert-doc.html#filter_language).
`winws` can automate filter construction using simple ip version and port filter. Raw filters are also supported. `winws` can automate filter construction using simple ip version and port filter. Raw filters are also supported.
@ -89,6 +89,24 @@ There's no `arm64` signed `windivert` driver and no `cygwin`.
But it's possible to use unsigned driver version in test mode and user mode components with x64 emulation. But it's possible to use unsigned driver version in test mode and user mode components with x64 emulation.
x64 emulation requires `windows 11` and not supported in `windows 10`. x64 emulation requires `windows 11` and not supported in `windows 10`.
### windows 7 windivert signing
Requirements for windows driver signing have changed in 2021.
Official free updates of windows 7 ended in 2020.
After 2020 for the years paid updates were available (ESU).
One of the updates from ESU enables signatures used in windivert 2.2.2-A.
There are several options :
1. Take `windivert64.sys` and `windivert.dll` version `2.2.0-C` or `2.2.0-D` from [here](https://reqrypt.org/download).
Replace these 2 files in every location they are present.
In `zapret-win-bundle` they are in `zapret-winws` и `blockcheck/zapret/nfq` folders.
However this option still requires 10+ year old patch that enables SHA256 signatures.
2. [Hack ESU](https://hackandpwn.com/windows-7-esu-patching)
3. Use `UpdatePack7R2` from simplix : https://blog.simplix.info
If you are in Russia or Belarus temporary change region in Control Panel.
### blockcheck ### blockcheck
`blockcheck.sh` is written in posix shell and uses some standard posix utilites. `blockcheck.sh` is written in posix shell and uses some standard posix utilites.

View File

@ -40,9 +40,7 @@ winws
В 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 требуются обновления. На старых очень давно не обновляемых системах может быть ошибка проверки подписи драйвера. На windows 7 вероятно будут проблемы с загрузкой windivert. Читайте ниже соответствующий раздел.
Требования к патчам точно такие же, как и у GoodbyeDPI. Нужно обновление, включающее поддержку подписей с SHA256.
https://learn.microsoft.com/en-us/security-updates/SecurityAdvisories/2015/3033929
Задача iptables в winws решается внутренними средствами через фильтры windivert. Задача iptables в winws решается внутренними средствами через фильтры windivert.
У windivert существует собственный язык фильтров, похожий на язык фильтров wireshark. У windivert существует собственный язык фильтров, похожий на язык фильтров wireshark.
@ -126,6 +124,38 @@ winws требует cygwin1.dll, windivert.dll, windivert64.sys. Их можн
Однако, эмуляция x64 windows 11 позволяет использовать все, кроме WinDivert64.sys без изменений. Однако, эмуляция x64 windows 11 позволяет использовать все, кроме WinDivert64.sys без изменений.
Но при этом надо заменить WinDivert64.sys на неподписанную arm64 версию и установить режим testsigning. Но при этом надо заменить WinDivert64.sys на неподписанную arm64 версию и установить режим testsigning.
Windows 7 и windivert
---------------------
Требования к подписи драйверов windows изменились в 2021 году.
Официальные бесплатные обновления windows 7 закончились в 2020.
После этого несколько лет продолжали идти платные обновления по программе ESU.
Именно в этих ESU обновлениях находится обновление ядра windows 7, позволяющиее загрузить драйвер
windivert 2.2.2-A, который идет в поставке zapret.
Поэтому варианты следующие :
1) Взять windivert64.sys и windivert.dll версии 2.2.0-C или 2.2.0-D отсюда : https://reqrypt.org/download
и заменить эти 2 файла.
В zapret-win-bundle есть отдельных 2 места, где находится winws : zapret-winws и blockcheck/zapret/nfq.
Надо менять в обоих местах.
Этот вариант проверен и должен работать. Тем не менее патч 10 летней давности, который включает SHA256
сигнатуры, все еще необходим.
2) Взломать ESU :
https://hackandpwn.com/windows-7-esu-patching/
http://www.bifido.net/tweaks-and-scripts/8-extended-security-updates-installer.html
и обновить систему
3) Использовать UpdatePack7R2 от simplix : https://blog.simplix.info
Но с этим паком есть проблема. Автор из Украины, он очень обиделся на русских.
Если в панели управления стоит регион RU или BY, появляется неприятный диалог.
Чтобы эту проблему обойти, можно поставить временно любой другой регион, потом вернуть.
Так же нет никаких гарантий, что автор не насовал туда какой-то зловредный код.
Использовать на свой страх и риск.
Более безопасный вариант - скачать последнюю нормальную довоенную версию : 22.2.10
https://nnmclub.to/forum/viewtopic.php?t=1530323
Ее достаточно, чтобы windivert 2.2.2-A заработал на windows 7.
blockcheck blockcheck
---------- ----------

View File

@ -167,9 +167,13 @@ bool saconvmapped(struct sockaddr_storage *a)
bool is_localnet(const struct sockaddr *a) bool is_localnet(const struct sockaddr *a)
{ {
// 127.0.0.0/8, ::1 = localhost // match 127.0.0.0/8, 0.0.0.0, ::1, ::0, :ffff:127.0.0.0/104, :ffff:0.0.0.0
return (a->sa_family==AF_INET && IN_LOOPBACK(((struct sockaddr_in *)a)->sin_addr.s_addr)) || return (a->sa_family==AF_INET && (IN_LOOPBACK(((struct sockaddr_in *)a)->sin_addr.s_addr) ||
(a->sa_family==AF_INET6 && IN6_IS_ADDR_LOOPBACK(((struct sockaddr_in6 *)a)->sin6_addr.s6_addr)); INADDR_ANY == (((struct sockaddr_in *)a)->sin_addr.s_addr))) ||
(a->sa_family==AF_INET6 && (IN6_IS_ADDR_LOOPBACK(((struct sockaddr_in6 *)a)->sin6_addr.s6_addr) ||
IN6_IS_ADDR_UNSPECIFIED(((struct sockaddr_in6 *)a)->sin6_addr.s6_addr) ||
(IN6_IS_ADDR_V4MAPPED(((struct sockaddr_in6 *)a)->sin6_addr.s6_addr) && (IN_LOOPBACK(IN6_EXTRACT_MAP4(((struct sockaddr_in6*)a)->sin6_addr.s6_addr)) ||
INADDR_ANY == IN6_EXTRACT_MAP4(((struct sockaddr_in6*)a)->sin6_addr.s6_addr)))));
} }
bool is_linklocal(const struct sockaddr_in6 *a) bool is_linklocal(const struct sockaddr_in6 *a)
{ {