Compare commits

...

30 Commits

Author SHA1 Message Date
bol-van 7364bab8a7 docs works 2025-08-22 18:58:29 +03:00
bol-van 1f48453989 docs works 2025-08-22 18:56:28 +03:00
bol-van dc5efebee2 docs works 2025-08-22 18:55:06 +03:00
bol-van 10c9499647 update changes 2025-08-22 18:51:31 +03:00
bol-van a50082df92 readme: hardware details 2025-08-22 18:49:09 +03:00
bol-van 0c33bbfb37 readme.en: 6.17 kernel iptables notice 2025-08-22 18:38:01 +03:00
bol-van ea1be413a6 readme.en: 6.17 kernel iptables notice 2025-08-22 18:37:03 +03:00
bol-van 850d4023fb readme: 6.17 kernel iptables notice 2025-08-22 18:33:08 +03:00
bol-van 4872b8e4e8 doc fix 2025-08-21 17:05:48 +03:00
bol-van 75eaefa950 Merge pull request #1686 from ekungurov/update-readme
doc fix
2025-08-21 17:05:08 +03:00
bol-van 582ade3190 doc fix 2025-08-21 17:00:08 +03:00
Yevgeny Kungurov efd369bb0e doc fix 2025-08-19 18:51:35 +04:00
bol-van 784465bdcf add windivert lang desc link 2025-08-13 10:00:07 +03:00
bol-van 40a80cd328 update changes 2025-08-12 12:41:49 +03:00
bol-van 73f21b0524 discord only ipv4 2025-08-12 12:38:42 +03:00
bol-van 34698479d0 minor improve stun windivert filter 2025-08-12 11:29:27 +03:00
bol-van 0830633f42 windivert: --filter-l7 in readme.txt 2025-08-12 11:00:27 +03:00
bol-van fc837e14fa windivert filter examples 2025-08-12 10:53:45 +03:00
bol-van 0e288262b5 wg4all note 2025-08-12 09:57:08 +03:00
bol-van dce049d6b8 discord custom 2025-08-12 09:41:55 +03:00
bol-van d103602d86 stun4all fix length check 2025-08-12 09:41:44 +03:00
bol-van aaf8f18a7d optimize 50-stun4all 2025-08-12 08:48:33 +03:00
bol-van de19cc3cd4 replace spaces with tab 2025-08-11 20:44:27 +03:00
bol-van 1e56703d4b replace spaces with tab 2025-08-11 20:43:07 +03:00
bol-van cd0f1c4bdf stun4all, wg4all improve 2025-08-11 20:27:39 +03:00
bol-van 135b152497 stun4all, wg4all improve 2025-08-11 20:23:38 +03:00
bol-van 56456c1e0c nfqws,tpws: fix possible crashes or high memory usage if hostlist has duplicate hostnames 2025-08-08 11:35:13 +03:00
bol-van d6a8d1dc33 lame issue warning in english 2025-08-06 08:25:23 +03:00
bol-van 04b3b6abcb update issue warning 2025-08-04 10:59:41 +03:00
bol-van fd58ecf8a5 update issue warning 2025-08-04 10:58:41 +03:00
15 changed files with 271 additions and 29 deletions
+1
View File
@@ -1,3 +1,4 @@
* text=auto eol=lf * text=auto eol=lf
*.cmd eol=crlf *.cmd eol=crlf
*.bat eol=crlf *.bat eol=crlf
init.d/windivert.filter.examples/** eol=crlf
+15 -9
View File
@@ -7,13 +7,19 @@ assignees: ''
--- ---
1. Здесь не место для вопросов, касающихся компьютерной грамотности и навыков использования ОС Issues - это место для обращений к разработчику.
2. Здесь не место для вопросов "у меня не работает" без технических подробностей Discussions - место для обсуждения вопросов между пользователями.
3. Здесь не место для вопросов "как мне открыть ютуб", "что писать в ...", "перестало открываться". Не тратье время разработчика на ерунду. Вам не будут здесь обьяснять как скопировать, что "писать в", почему сразу же закрывается окно, почему не открывается сайт или госуслуги. Здесь не место обсуждению любых шаманств , т.е. манипуляций без понимания, в стиле 4pda.
4. Здесь не место для обсуждения сборок Пишите только конкретные проблемы на техническом уровне в оригинальном zapret (не в сборках), которые вы заметили, и которые являются или могут являться багами в софте.
5. Вирусов здесь нет. У вас либо чья-то сборка, либо ваш антивирус давно пора отправить на покой. Антивирусы в основном жалуются на upx и windivert, которые убраны НЕ будут. upx - это паковщик для сокращения требуемого места на openwrt, windivert - замена iptables для windows, потенциальный инструмент хакера или компонент зловредной программы, но сам по себе вирусом не является. Не согласны - удаляйте софт. За агрессивные наезды "почему автор распространяет вирусы" молча схватите бан. Или если вы считаете, что ваше обращение обосновано, технически грамотно и по адресу.
Все, что будет нарушать эти критерии, может быть молча удалено, закрыто или перенесено в дискуссии на усмотрение разработчика.
Если сомневаетесь - пишите лучше сразу в дискуссии.
Все означенное обсуждать в дискуссиях или на форумах. Прочитайте для начала docs/quick_start.md или docs/quick_start_windows.md.
При нарушении будет закрываться или конвертироваться в дискуссии. Там обьясняется для кого этот софт, какие требуются знания, почему это не простая волшебная таблетка.
Issue только для обсуждения проблем самого софта. Неработа стратегии или ваше неумение настроить - это ваша проблема, а не проблема софта.
Однокнопочные решения дают только сборщики, поэтому "открытие сайта" не является функцией программы, и нет смысла жаловаться, что он не открывается. Но можно это обсудить в дискуссиях. Не захламляйте issues ! Вирусов здесь нет. У вас либо чья-то сборка, либо ваш антивирус давно пора отправить на покой. Антивирусы в основном жалуются на upx и windivert, которые убраны НЕ будут. upx - это паковщик для сокращения требуемого места на openwrt, windivert - замена iptables для windows, потенциальный инструмент хакера или компонент зловредной программы, но сам по себе вирусом не является. Не согласны - удаляйте софт. За агрессивные наезды "почему автор распространяет вирусы" молча схватите бан.
Here is the place for bugs only. All questions, especially user-like questions (non-technical) go to Discussions.
There're also no viruses here. All virus claims and everyting non-technical and non-bugs will be instantly deleted, closed or moved to Discussions.
+7
View File
@@ -534,3 +534,10 @@ nfqws: ts fooling
blockcheck: test ts fooling blockcheck: test ts fooling
blockcheck: auto enable tcp timestamps in windows blockcheck: auto enable tcp timestamps in windows
tpws,nfqws: special handling of IP-like hostnames. strip :port from hostname:port tpws,nfqws: special handling of IP-like hostnames. strip :port from hostname:port
v71.4
nfqws,tpws: fix possible crashes or high memory usage if hostlist has duplicate hostnames
init.d: custom scripts 50-discord-media, 50-stun4all
init.d: windivert filters for discord media, stun, wireguard
readme: hardware problems description
+6 -3
View File
@@ -1,4 +1,4 @@
# zapret v71.3 # zapret v71.4
# SCAMMER WARNING # SCAMMER WARNING
@@ -701,6 +701,9 @@ Set up bridge networking.
### IPTABLES for nfqws ### IPTABLES for nfqws
> [!CAUTION]
> Starting from Linux kernel 6.17 there's CONFIG_NETFILTER_XTABLES_LEGACY parameter which is not set by default. Many distributions will likely not turn it on making iptables-legacy non working. This is part of iptables deprecation. However iptables-nft still works because their backend is based on nftables.
This is the common way to redirect some traffic to nfqws : This is the common way to redirect some traffic to nfqws :
``` ```
@@ -1145,7 +1148,7 @@ If `MODE_FILTER=hostlist` all present lists are passed to **nfqws** or **tpws**.
If all include lists are empty it works like no include lists exist at all. If all include lists are empty it works like no include lists exist at all.
If you need "all except" mode you dont have to delete zapret-hosts-users.txt. Just make it empty. If you need "all except" mode you dont have to delete zapret-hosts-users.txt. Just make it empty.
Subdomains auto apply. For example, "ru" in the list affects "*.ru" . Subdomains auto apply. For example, "ru" in the list affects "\*.ru" .
`^` prefix symbol disables subdomain match. `^` prefix symbol disables subdomain match.
**tpws** and **nfqws** automatically reload lists if their modification time or file size is changed. **tpws** and **nfqws** automatically reload lists if their modification time or file size is changed.
@@ -1243,7 +1246,7 @@ Change postnat scheme mark bit
If uncommented pass to zapret only packets marked with this bit If uncommented pass to zapret only packets marked with this bit
`#FILTER_MARK_POSTNAT=0x10000000` `#FILTER_MARK=0x10000000`
Bit must be set in your own rules. Bit must be set in your own rules.
* iptables - in mangle PREROUTING and mangle OUTPUT before zapret rules (iptables -I _after_ zapret rules application). * iptables - in mangle PREROUTING and mangle OUTPUT before zapret rules (iptables -I _after_ zapret rules application).
+74 -3
View File
@@ -1,4 +1,4 @@
# zapret v71.3 # zapret v71.4
# ВНИМАНИЕ, остерегайтесь мошенников # ВНИМАНИЕ, остерегайтесь мошенников
@@ -43,6 +43,7 @@ zapret является свободным и open source.
- [IPTABLES ДЛЯ NFQWS](#iptables-для-nfqws) - [IPTABLES ДЛЯ NFQWS](#iptables-для-nfqws)
- [NFTABLES ДЛЯ NFQWS](#nftables-для-nfqws) - [NFTABLES ДЛЯ NFQWS](#nftables-для-nfqws)
- [FLOW OFFLOADING](#flow-offloading) - [FLOW OFFLOADING](#flow-offloading)
- [ОСОБЕННОСТИ ЖЕЛЕЗОК](#особенности-железок)
- [ДУРЕНИЕ СО СТОРОНЫ СЕРВЕРА](#дурение-со-стороны-сервера) - [ДУРЕНИЕ СО СТОРОНЫ СЕРВЕРА](#дурение-со-стороны-сервера)
- [tpws](#tpws) - [tpws](#tpws)
- [TCP СЕГМЕНТАЦИЯ В TPWS](#tcp-сегментация-в-tpws) - [TCP СЕГМЕНТАЦИЯ В TPWS](#tcp-сегментация-в-tpws)
@@ -817,6 +818,9 @@ wireless extensions считаются deprecated и на новых ядрах
### IPTABLES ДЛЯ NFQWS ### IPTABLES ДЛЯ NFQWS
> [!CAUTION]
> Начиная с ядер Linux 6.17 присутствует параметр конфигурации ядра CONFIG_NETFILTER_XTABLES_LEGACY, который по умолчанию в дистрибутиве может быть "not set". Отсутствие этой настройки выключает iptables-legacy. Это часть процесса депрекации iptables. Тем не менее iptables-nft будут работать, поскольку используют backend nftables.
iptables для задействования атаки на первые пакеты данных в tcp соединении : iptables для задействования атаки на первые пакеты данных в tcp соединении :
``` ```
@@ -931,6 +935,73 @@ iptables target `FLOWOFFLOAD` - это проприетарное изобрет
Управление offload в nftables реализовано в базовом ядре linux без патчей. Управление offload в nftables реализовано в базовом ядре linux без патчей.
nftables - единственный способ включения offload на классическом Linux. nftables - единственный способ включения offload на классическом Linux.
### ОСОБЕННОСТИ ЖЕЛЕЗОК
На устройствах mediatek замечены 2 проблемы.
Драйвер mediatek ethernet отбрасывает tcp и udp пакеты с неверной чексуммой на аппаратном уровне, это не отключается.
Как следствие не будет работать fooling badsum через роутер, но будет с него.
Другая проблема mediatek, затрагивающая как ethernet, так и wireless, проявляется на udp, когда включен offload rx-gro-list.
Пока отсутствует nfqueue, все хорошо. Как только nfqueue появляется, часть пакетов выпадает.
Особенно заметно это проявляется на дурении QUIC с kyber.
<details>
<summary><b>shell код лечения</b></summary>
```
append_separator_list()
{
# $1 - var name to receive result
# $2 - separator
# $3 - quoter
# $4,$5,... - elements
local _var="$1" sep="$2" quo="$3" i
eval i="\$$_var"
shift; shift; shift
while [ -n "$1" ]; do
if [ -n "$i" ] ; then
i="$i$sep$quo$1$quo"
else
i="$quo$1$quo"
fi
shift
done
eval $_var="\$i"
}
resolve_lower_devices()
{
# $1 - bridge interface name
[ -d "/sys/class/net/$1" ] && {
find "/sys/class/net/$1" -follow -maxdepth 1 -name "lower_*" |
{
local l lower lowers
while read lower; do
lower="$(basename "$lower")"
l="${lower#lower_*}"
[ "$l" != "$lower" ] && append_separator_list lowers ' ' '' "$l"
done
printf "$lowers"
}
}
}
# it breaks nfqueue
lans=$(resolve_lower_devices br-lan)
for int in $lans; do
ethtool -K $int rx-gro-list off
done
```
</details>
Этот код нужно вызывать после вставания интерфейса LAN, когда все bridge members уже занесены в bridge.
Можно использовать хук в `/etc/hotplug.d/iface`. Должен быть установлен `ethtool`.
Проблемы mediatek были подтверждены на MT7621 (TP-Link Archer C6U v1) и MT7981 (Xiaomi AX3000T).
Другие чипсеты могут быть так же подвержены проблеме, а могут и не быть. Более широкой статистики нет.
### ДУРЕНИЕ СО СТОРОНЫ СЕРВЕРА ### ДУРЕНИЕ СО СТОРОНЫ СЕРВЕРА
Это тоже возможно. Это тоже возможно.
@@ -1510,7 +1581,7 @@ LISTS_RELOAD=- отключает перезагрузку листов.
Файл есть, но несмотря на это дурится все, кроме exclude. Файл есть, но несмотря на это дурится все, кроме exclude.
Если вам нужен именно такой режим - не обязательно удалять `zapret-hosts-users.txt`. Достаточно сделать его пустым. Если вам нужен именно такой режим - не обязательно удалять `zapret-hosts-users.txt`. Достаточно сделать его пустым.
Поддомены учитываются автоматически. Например, строчка "ru" вносит в список "*.ru". Строчка "*.ru" в списке не сработает. Поддомены учитываются автоматически. Например, строчка "ru" вносит в список "\*.ru". Строчка "\*.ru" в списке не сработает.
Можно использовать символ `^` в начале хоста, чтобы отказаться от автоматического учета поддоменов. Можно использовать символ `^` в начале хоста, чтобы отказаться от автоматического учета поддоменов.
Список доменов РКН может быть получен скриптами Список доменов РКН может быть получен скриптами
@@ -1848,7 +1919,7 @@ nfqws начнет получать адреса пакетов из локал
`DESYNC_MARK_POSTNAT=0x20000000` `DESYNC_MARK_POSTNAT=0x20000000`
***Если раскоментировано, пометка пакетов, которые должны быть обработаны zapret.***\ ***Если раскоментировано, пометка пакетов, которые должны быть обработаны zapret.***\
`#FILTER_MARK_POSTNAT=0x10000000` `#FILTER_MARK=0x10000000`
Бит должен быть установлен вашими собственными правилами. Бит должен быть установлен вашими собственными правилами.
* Для iptables - в цепочках mangle PREROUTING и mangle OUTPUT перед правилами zapret (iptables -I _после_ применения правил zapret). * Для iptables - в цепочках mangle PREROUTING и mangle OUTPUT перед правилами zapret (iptables -I _после_ применения правил zapret).
@@ -0,0 +1,35 @@
# this custom script runs desync to all discord media packets
# can override in config :
NFQWS_OPT_DESYNC_DISCORD_MEDIA="${NFQWS_OPT_DESYNC_DISCORD_MEDIA:---dpi-desync=fake}"
DISCORD_MEDIA_PORT_RANGE="${DISCORD_MEDIA_PORT_RANGE:-50000-50099}"
alloc_dnum DNUM_DISCORD_MEDIA
alloc_qnum QNUM_DISCORD_MEDIA
zapret_custom_daemons()
{
# $1 - 1 - add, 0 - stop
local opt="--qnum=$QNUM_DISCORD_MEDIA $NFQWS_OPT_DESYNC_DISCORD_MEDIA"
do_nfqws $1 $DNUM_DISCORD_MEDIA "$opt"
}
# size = 156 (8 udp header + 148 payload) && payload starts with 0x01000000
zapret_custom_firewall()
{
# $1 - 1 - run, 0 - stop
local DISABLE_IPV6=1
local port_range=$(replace_char - : $DISCORD_MEDIA_PORT_RANGE)
local f="-p udp --dport $port_range -m u32 --u32"
# this is simplified test to skip writing monstrous rule. instead of checking 64 bytes for zeroes only check 2 dwords for zero
fw_nfqws_post $1 "$f 0>>22&0x3C@4>>16=0x52&&0>>22&0x3C@8=0x00010046&&0>>22&0x3C@16=0&&0>>22&0x3C@76=0" '' $QNUM_DISCORD_MEDIA
}
zapret_custom_firewall_nft()
{
# stop logic is not required
local DISABLE_IPV6=1
local f="udp dport $DISCORD_MEDIA_PORT_RANGE udp length == 82 @ih,0,32 0x00010046 @ih,64,128 0x00000000000000000000000000000000 @ih,192,128 0x00000000000000000000000000000000 @ih,320,128 0x00000000000000000000000000000000 @ih,448,128 0x00000000000000000000000000000000"
nft_fw_nfqws_post "$f" '' $QNUM_DISCORD_MEDIA
}
@@ -0,0 +1,30 @@
# this custom script runs desync to all stun packets
# can override in config :
NFQWS_OPT_DESYNC_STUN="${NFQWS_OPT_DESYNC_STUN:---dpi-desync=fake}"
alloc_dnum DNUM_STUN4ALL
alloc_qnum QNUM_STUN4ALL
zapret_custom_daemons()
{
# $1 - 1 - add, 0 - stop
local opt="--qnum=$QNUM_STUN4ALL $NFQWS_OPT_DESYNC_STUN"
do_nfqws $1 $DNUM_STUN4ALL "$opt"
}
# size = 156 (8 udp header + 148 payload) && payload starts with 0x01000000
zapret_custom_firewall()
{
# $1 - 1 - run, 0 - stop
local f='-p udp -m u32 --u32'
fw_nfqws_post $1 "$f 0>>22&0x3C@4>>16=28:65535&&0>>22&0x3C@12=0x2112A442&&0>>22&0x3C@8&0xC0000003=0" "$f 44>>16=28:65535&&52=0x2112A442&&48&0xC0000003=0" $QNUM_STUN4ALL
}
zapret_custom_firewall_nft()
{
# stop logic is not required
local f="udp length >= 28 @ih,32,32 0x2112A442 @ih,0,2 0 @ih,30,2 0"
nft_fw_nfqws_post "$f" "$f" $QNUM_STUN4ALL
}
+6 -5
View File
@@ -1,4 +1,5 @@
# this custom script runs desync to all wireguard handshake initiation packets # this custom script runs desync to all wireguard handshake initiation packets
# NOTE : this works for original wireguard and may not work for 3rd party implementations such as xray
# can override in config : # can override in config :
NFQWS_OPT_DESYNC_WG="${NFQWS_OPT_DESYNC_WG:---dpi-desync=fake}" NFQWS_OPT_DESYNC_WG="${NFQWS_OPT_DESYNC_WG:---dpi-desync=fake}"
@@ -10,7 +11,7 @@ zapret_custom_daemons()
{ {
# $1 - 1 - add, 0 - stop # $1 - 1 - add, 0 - stop
local opt="--qnum=$QNUM_WG4ALL $NFQWS_OPT_DESYNC_WG" local opt="--qnum=$QNUM_WG4ALL $NFQWS_OPT_DESYNC_WG"
do_nfqws $1 $DNUM_WG4ALL "$opt" do_nfqws $1 $DNUM_WG4ALL "$opt"
} }
# size = 156 (8 udp header + 148 payload) && payload starts with 0x01000000 # size = 156 (8 udp header + 148 payload) && payload starts with 0x01000000
@@ -18,13 +19,13 @@ zapret_custom_firewall()
{ {
# $1 - 1 - run, 0 - stop # $1 - 1 - run, 0 - stop
local f='-p udp -m u32 --u32' local f='-p udp -m u32 --u32'
fw_nfqws_post $1 "$f 0>>22&0x3C@4>>16=0x9c&&0>>22&0x3C@8=0x01000000" "$f 44>>16=0x9c&&48=0x01000000" $QNUM_WG4ALL fw_nfqws_post $1 "$f 0>>22&0x3C@4>>16=0x9c&&0>>22&0x3C@8=0x01000000" "$f 44>>16=0x9c&&48=0x01000000" $QNUM_WG4ALL
} }
zapret_custom_firewall_nft() zapret_custom_firewall_nft()
{ {
# stop logic is not required # stop logic is not required
local f="udp length 156 @th,64,32 0x01000000" local f="udp length 156 @ih,0,32 0x01000000"
nft_fw_nfqws_post "$f" "$f" $QNUM_WG4ALL nft_fw_nfqws_post "$f" "$f" $QNUM_WG4ALL
} }
@@ -0,0 +1,14 @@
Цель этих фильтров - отсекать полезную нагрузку в режиме ядра, не насилуя процессор перенаправлением целого потока на winws.
Задействуются через `winws --wf-raw=@filename`.
Однако, язык фильтров windivert не содержит операций с битовыми полями, сдвигов и побитовой логики.
Поэтому фильтры получились более слабыми, способными передавать неправильную нагрузку.
Дофильтрация производится силами winws.
Описание языка фильтров : https://reqrypt.org/windivert-doc.html#filter_language
Пример инстанса для пробития медиапотоков в discord : `winws --wf-raw=@windivert.discord_media+stun.txt --filter-l7=stun,discord --dpi-desync=fake`
These filters are invoked using `winws --wf-raw=@filename`.
Filters are kernel mode and save great amount of CPU.
However windivert cannot filter by bit fields, lacks shift and bitwise logic operations.
Filters are relaxed and can pass wrong payloads. Finer filtering is done by winws.
@@ -0,0 +1,29 @@
!impostor and !loopback and
(outbound and
((ip and
udp.DstPort>=50000 and udp.DstPort<=50099 and
udp.PayloadLength=74 and
udp.Payload32[0]=0x00010046 and
udp.Payload32[2]=0 and
udp.Payload32[3]=0 and
udp.Payload32[4]=0 and
udp.Payload32[5]=0 and
udp.Payload32[6]=0 and
udp.Payload32[7]=0 and
udp.Payload32[8]=0 and
udp.Payload32[9]=0 and
udp.Payload32[10]=0 and
udp.Payload32[11]=0 and
udp.Payload32[12]=0 and
udp.Payload32[13]=0 and
udp.Payload32[14]=0 and
udp.Payload32[15]=0 and
udp.Payload32[16]=0 and
udp.Payload32[17]=0)
or
(udp.PayloadLength>=20 and
udp.Payload32[1]=0x2112A442 and udp.Payload[0]<0x40)) and
( ((ip.DstAddr < 127.0.0.1 or ip.DstAddr > 127.255.255.255) and (ip.DstAddr < 10.0.0.0 or ip.DstAddr > 10.255.255.255) and (ip.DstAddr < 192.168.0.0 or ip.DstAddr > 192.168.255.255) and (ip.DstAddr < 172.16.0.0 or ip.DstAddr > 172.31.255.255) and (ip.DstAddr < 169.254.0.0 or ip.DstAddr > 169.254.255.255)) or
((ipv6.DstAddr > ::1) and (ipv6.DstAddr < 2001::0 or ipv6.DstAddr >= 2001:1::0) and (ipv6.DstAddr < fc00::0 or ipv6.DstAddr >= fe00::0) and (ipv6.DstAddr < fe80::0 or ipv6.DstAddr >= fec0::0) and (ipv6.DstAddr < ff00::0 or ipv6.DstAddr >= ffff::0))
)
)
@@ -0,0 +1,23 @@
!impostor and !loopback and
(outbound and
udp.DstPort>=50000 and udp.DstPort<=50099 and
udp.PayloadLength=74 and
udp.Payload32[0]=0x00010046 and
udp.Payload32[2]=0 and
udp.Payload32[3]=0 and
udp.Payload32[4]=0 and
udp.Payload32[5]=0 and
udp.Payload32[6]=0 and
udp.Payload32[7]=0 and
udp.Payload32[8]=0 and
udp.Payload32[9]=0 and
udp.Payload32[10]=0 and
udp.Payload32[11]=0 and
udp.Payload32[12]=0 and
udp.Payload32[13]=0 and
udp.Payload32[14]=0 and
udp.Payload32[15]=0 and
udp.Payload32[16]=0 and
udp.Payload32[17]=0 and
(ip.DstAddr < 127.0.0.1 or ip.DstAddr > 127.255.255.255) and (ip.DstAddr < 10.0.0.0 or ip.DstAddr > 10.255.255.255) and (ip.DstAddr < 192.168.0.0 or ip.DstAddr > 192.168.255.255) and (ip.DstAddr < 172.16.0.0 or ip.DstAddr > 172.31.255.255) and (ip.DstAddr < 169.254.0.0 or ip.DstAddr > 169.254.255.255)
)
@@ -0,0 +1,8 @@
!impostor and !loopback and
(outbound and
udp.PayloadLength>=20 and
udp.Payload32[1]=0x2112A442 and udp.Payload[0]<0x40 and
( ((ip.DstAddr < 127.0.0.1 or ip.DstAddr > 127.255.255.255) and (ip.DstAddr < 10.0.0.0 or ip.DstAddr > 10.255.255.255) and (ip.DstAddr < 192.168.0.0 or ip.DstAddr > 192.168.255.255) and (ip.DstAddr < 172.16.0.0 or ip.DstAddr > 172.31.255.255) and (ip.DstAddr < 169.254.0.0 or ip.DstAddr > 169.254.255.255)) or
((ipv6.DstAddr > ::1) and (ipv6.DstAddr < 2001::0 or ipv6.DstAddr >= 2001:1::0) and (ipv6.DstAddr < fc00::0 or ipv6.DstAddr >= fe00::0) and (ipv6.DstAddr < fe80::0 or ipv6.DstAddr >= fec0::0) and (ipv6.DstAddr < ff00::0 or ipv6.DstAddr >= ffff::0))
)
)
@@ -0,0 +1,8 @@
!impostor and !loopback and
(outbound and
udp.PayloadLength=148 and
udp.Payload[0]=0x01 and
( ((ip.DstAddr < 127.0.0.1 or ip.DstAddr > 127.255.255.255) and (ip.DstAddr < 10.0.0.0 or ip.DstAddr > 10.255.255.255) and (ip.DstAddr < 192.168.0.0 or ip.DstAddr > 192.168.255.255) and (ip.DstAddr < 172.16.0.0 or ip.DstAddr > 172.31.255.255) and (ip.DstAddr < 169.254.0.0 or ip.DstAddr > 169.254.255.255)) or
((ipv6.DstAddr > ::1) and (ipv6.DstAddr < 2001::0 or ipv6.DstAddr >= 2001:1::0) and (ipv6.DstAddr < fc00::0 or ipv6.DstAddr >= fe00::0) and (ipv6.DstAddr < fe80::0 or ipv6.DstAddr >= fec0::0) and (ipv6.DstAddr < ff00::0 or ipv6.DstAddr >= ffff::0))
)
)
+7 -4
View File
@@ -25,7 +25,7 @@
memcpy(elem->str, keystr, keystr_len); \ memcpy(elem->str, keystr, keystr_len); \
elem->str[keystr_len] = 0; \ elem->str[keystr_len] = 0; \
oom = false; \ oom = false; \
HASH_ADD_KEYPTR(hh, *ppool, elem->str, strlen(elem->str), elem); \ HASH_ADD_KEYPTR(hh, *ppool, elem->str, keystr_len, elem); \
if (oom) \ if (oom) \
{ \ { \
free(elem->str); \ free(elem->str); \
@@ -33,9 +33,12 @@
return false; \ return false; \
} }
#define ADD_HOSTLIST_POOL(etype, ppool, keystr, keystr_len, flg) \ #define ADD_HOSTLIST_POOL(etype, ppool, keystr, keystr_len, flg) \
ADD_STR_POOL(etype,ppool,keystr,keystr_len); \ etype *elem_find; \
elem->flags = flg; HASH_FIND(hh, *ppool, keystr, keystr_len, elem_find); \
if (!elem_find) { \
ADD_STR_POOL(etype,ppool,keystr,keystr_len); \
elem->flags = flg; \
}
#undef uthash_nonfatal_oom #undef uthash_nonfatal_oom
#define uthash_nonfatal_oom(elt) ut_oom_recover(elt) #define uthash_nonfatal_oom(elt) ut_oom_recover(elt)
+7 -4
View File
@@ -25,7 +25,7 @@
memcpy(elem->str, keystr, keystr_len); \ memcpy(elem->str, keystr, keystr_len); \
elem->str[keystr_len] = 0; \ elem->str[keystr_len] = 0; \
oom = false; \ oom = false; \
HASH_ADD_KEYPTR(hh, *ppool, elem->str, strlen(elem->str), elem); \ HASH_ADD_KEYPTR(hh, *ppool, elem->str, keystr_len, elem); \
if (oom) \ if (oom) \
{ \ { \
free(elem->str); \ free(elem->str); \
@@ -33,9 +33,12 @@
return false; \ return false; \
} }
#define ADD_HOSTLIST_POOL(etype, ppool, keystr, keystr_len, flg) \ #define ADD_HOSTLIST_POOL(etype, ppool, keystr, keystr_len, flg) \
ADD_STR_POOL(etype,ppool,keystr,keystr_len); \ etype *elem_find; \
elem->flags = flg; HASH_FIND(hh, *ppool, keystr, keystr_len, elem_find); \
if (!elem_find) { \
ADD_STR_POOL(etype,ppool,keystr,keystr_len); \
elem->flags = flg; \
}
#undef uthash_nonfatal_oom #undef uthash_nonfatal_oom
#define uthash_nonfatal_oom(elt) ut_oom_recover(elt) #define uthash_nonfatal_oom(elt) ut_oom_recover(elt)