From c16508e2e4d0d2e2720f7a8e5852cc6906523208 Mon Sep 17 00:00:00 2001 From: bol-van Date: Mon, 15 Dec 2025 18:29:49 +0300 Subject: [PATCH] nfqws2: add l3_len, l4_len to dissect --- docs/changes.txt | 1 + docs/manual.md | 4 +++- nfq2/lua.c | 4 +++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 4859d99..6860d19 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -111,3 +111,4 @@ v0.7.3 * nfqws2, zapret-lib : check tcp sequence range overflow * zapret-lib : seq compare functions +* nfqws2: add l3_len, l4_len to dissect diff --git a/docs/manual.md b/docs/manual.md index dd43238..b96294e 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -1323,6 +1323,7 @@ mss дублируется в поле `desync.tcp_mss` независимо о | IP6F_MORE_FRAG | number | бит "More fragment" поля ip6f_offlg из ipv6 fragment header | 0x0001 | | IPPROTO_IP
IPPROTO_IPV6
IPPROTO_ICMP
IPPROTO_TCP
IPPROTO_UDP
IPPROTO_ICMPV6
IPPROTO_HOPOPTS
IPPROTO_ROUTING
IPPROTO_FRAGMENT
IPPROTO_AH
IPPROTO_ESP
IPPROTO_DSTOPTS
IPPROTO_MH
IPPROTO_HIP
IPPROTO_SHIM6
IPPROTO_NONE | number | [номера IP протоколов](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml) | используются в ipv4 и ipv6 | + ## C функции ### Логгинг @@ -1472,7 +1473,7 @@ function parse_hex(hex_string) Но завязываться на внешние модули нельзя - LUA обычно линкуется статически без возможности загрузки внешних модулей. Не должно быть лишних зависимостей и дополнительных файлов. openssl имеет размер несколько Mb, что критично для embedded систем. -nfqws2 уже имеет минимальный набор криптографических операций для работы с некоторыми протоколами (QUIC). +nfqws2 не использует никакие криптобиблиотеки, но имеет минимальный набор криптографических операций для работы с некоторыми протоколами (QUIC). Эти функции выставляются в LUA и могут использоваться для любых целей. ``` @@ -1535,3 +1536,4 @@ HKDF - HMAC-based Key Derivation Function. Генератор ключей на * info - raw строка произвольного размера, может быть nil. аналогично salt, но salt подмешивается на extraction phase, а info - на expansion. если nil, то используется info нулевого размера. * okm_len - требуемая длина okm - output keying material * возвращается raw строка - okm + diff --git a/nfq2/lua.c b/nfq2/lua.c index 803b390..a1de53a 100644 --- a/nfq2/lua.c +++ b/nfq2/lua.c @@ -1251,13 +1251,15 @@ void lua_push_dissect(const struct dissect *dis) if (dis) { - lua_createtable(params.L, 0, 7); + lua_createtable(params.L, 0, 9); lua_pushf_iphdr(dis->ip, dis->len_l3); lua_pushf_ip6hdr(dis->ip6, dis->len_l3); lua_pushf_tcphdr(dis->tcp, dis->len_l4); lua_pushf_udphdr(dis->udp, dis->len_l4); lua_pushf_int("l4proto",dis->proto); lua_pushf_int("transport_len",dis->transport_len); + lua_pushf_int("l3_len",dis->len_l3); + lua_pushf_int("l4_len",dis->len_l4); lua_pushf_raw("payload",dis->data_payload,dis->len_payload); } else