mirror of
https://github.com/bol-van/zapret.git
synced 2024-11-26 12:10:53 +03:00
Compare commits
12 Commits
1224206f40
...
b5837e844e
Author | SHA1 | Date | |
---|---|---|---|
|
b5837e844e | ||
|
37266bcf87 | ||
|
479ff56a6b | ||
|
abcfa61168 | ||
|
5354c973df | ||
|
0da3501f54 | ||
|
94c848eab5 | ||
|
6e061c8fc9 | ||
|
c369f11638 | ||
|
519ba550ed | ||
|
f42bd2c0a4 | ||
|
25f5d21876 |
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.
@ -39,7 +39,7 @@ edit_file()
|
||||
# $1 - file name
|
||||
local ed="$EDITOR"
|
||||
[ -n "$ed" ] || {
|
||||
for e in mcedit nano vi; do
|
||||
for e in mcedit nano vim vi; do
|
||||
exists "$e" && {
|
||||
ed="$e"
|
||||
break
|
||||
@ -685,4 +685,4 @@ select_fwtype()
|
||||
}
|
||||
echo select firewall type :
|
||||
ask_list FWTYPE "iptables nftables" "$FWTYPE" && write_config_var FWTYPE
|
||||
}
|
||||
}
|
||||
|
@ -133,5 +133,5 @@ NFQWS_OPT_DESYNC_HTTP и NFQWS_OPT_DESYNC_HTTPS заменяют стратег
|
||||
ipset или хост листом. Читайте основной толмуд readme.txt ради подробностей.
|
||||
|
||||
Это минимальная инструкция, чтобы соориентироваться с чего начать. Однако, это - не панацея.
|
||||
В некоторых случаях вы не обойдетесь без знаний и основного "толмуда".
|
||||
В некоторых случаях вы не обойдетесь без знаний и основного "талмуда".
|
||||
Подробности и полное техническое описание расписаны в readme.txt
|
||||
|
@ -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.
|
||||
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).
|
||||
`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.
|
||||
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.sh` is written in posix shell and uses some standard posix utilites.
|
||||
|
@ -40,9 +40,7 @@ winws
|
||||
В windows отсутствуют встроенные средства для перенаправления трафика, такие как iptables, nftables, pf или ipfw.
|
||||
Поэтому используется сторонний драйвер ядра windivert. Он работает, начиная с windows 7. На системах с включенным
|
||||
secure boot могут быть проблемы из-за подписи драйвера. В этом случае отключите secureboot или включите режим testsigning.
|
||||
На windows 7 требуются обновления. На старых очень давно не обновляемых системах может быть ошибка проверки подписи драйвера.
|
||||
Требования к патчам точно такие же, как и у GoodbyeDPI. Нужно обновление, включающее поддержку подписей с SHA256.
|
||||
https://learn.microsoft.com/en-us/security-updates/SecurityAdvisories/2015/3033929
|
||||
На windows 7 вероятно будут проблемы с загрузкой windivert. Читайте ниже соответствующий раздел.
|
||||
|
||||
Задача iptables в winws решается внутренними средствами через фильтры windivert.
|
||||
У windivert существует собственный язык фильтров, похожий на язык фильтров wireshark.
|
||||
@ -126,6 +124,38 @@ winws требует cygwin1.dll, windivert.dll, windivert64.sys. Их можн
|
||||
Однако, эмуляция x64 windows 11 позволяет использовать все, кроме WinDivert64.sys без изменений.
|
||||
Но при этом надо заменить 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
|
||||
----------
|
||||
|
||||
|
@ -167,9 +167,13 @@ bool saconvmapped(struct sockaddr_storage *a)
|
||||
|
||||
bool is_localnet(const struct sockaddr *a)
|
||||
{
|
||||
// 127.0.0.0/8, ::1 = localhost
|
||||
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));
|
||||
// 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) ||
|
||||
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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user