mirror of
https://github.com/bol-van/zapret2.git
synced 2026-03-20 16:25:49 +00:00
update docs
This commit is contained in:
347
docs/manual.md
347
docs/manual.md
@@ -1424,6 +1424,8 @@ function bitset(u32, bit_from, bit_to, set)
|
||||
При операциях с числями без знака всегда важна разрядность. От нее зависит результат.
|
||||
Поэтому все функции имеют в своем названии разрядность. При передаче аргументов, выходящих за пределы разрядности, вызывается error.
|
||||
|
||||
#### uX
|
||||
|
||||
```
|
||||
function u8(raw_string, offset)
|
||||
function u16(raw_string, offset)
|
||||
@@ -1435,6 +1437,8 @@ function u32(raw_string, offset)
|
||||
offset - номер байта от начала raw строки, начиная с 1.
|
||||
Аналогичные встроенные средства (string.unpack) есть только в LUA 5.3.
|
||||
|
||||
#### buX
|
||||
|
||||
```
|
||||
function bu8(u8)
|
||||
function bu16(u16)
|
||||
@@ -1445,11 +1449,15 @@ function bu32(u32)
|
||||
Преобразуют число в raw строку в формате big endian.
|
||||
Чтобы собрать структуру из числовых полей, можно использовать обычную операцию конкатенации строк `..`
|
||||
|
||||
#### swapX
|
||||
|
||||
```
|
||||
function swap16(u16)
|
||||
function swap32(u32)
|
||||
```
|
||||
|
||||
#### uXadd
|
||||
|
||||
Инвертируют порядок следования байт в u16 или u32. Если в вашей структуре порядок байт little endian,
|
||||
можно использовать uX/buX + swap.
|
||||
|
||||
@@ -1466,6 +1474,8 @@ function u32add(u32_1, u32_2, ...., u32_N)
|
||||
|
||||
### Целочисленное деление
|
||||
|
||||
#### divint
|
||||
|
||||
Встроенное целочисленное деление есть только в LUA 5.3+, где есть тип данных integer.
|
||||
Чтобы не возиться с округлением, целочисленное деление реализовано C функцией :
|
||||
|
||||
@@ -1478,6 +1488,8 @@ function divint(dividend, divisor)
|
||||
|
||||
### Генерация случайных данных
|
||||
|
||||
#### brandom
|
||||
|
||||
Функции генерируют raw строку указанного размера , состоящую из случайных байт.
|
||||
Случайные данные не являются криптографически стойкими.
|
||||
```
|
||||
@@ -1492,6 +1504,8 @@ function brandom_az09(size)
|
||||
|
||||
### Парсинг
|
||||
|
||||
#### parse_hex
|
||||
|
||||
```
|
||||
function parse_hex(hex_string)
|
||||
```
|
||||
@@ -1508,18 +1522,24 @@ function parse_hex(hex_string)
|
||||
nfqws2 не использует никакие криптобиблиотеки, но имеет минимальный набор криптографических операций для работы с некоторыми протоколами (QUIC).
|
||||
Эти функции выставляются в LUA и могут использоваться для любых целей.
|
||||
|
||||
#### bcryptorandom
|
||||
|
||||
```
|
||||
function bcryptorandom(size)
|
||||
```
|
||||
|
||||
Генерирует raw строку - криптографически стойкий блок случайных данных указанного размера. Источник - `/dev/random`
|
||||
|
||||
#### hash
|
||||
|
||||
```
|
||||
function hash(hash_type, data)
|
||||
```
|
||||
|
||||
Возвращает raw строку - hash от блока данных - raw строки data. hash_type может быть "sha256" или "sha224".
|
||||
|
||||
#### aes
|
||||
|
||||
```
|
||||
function aes(encrypt, key, data)
|
||||
```
|
||||
@@ -1531,6 +1551,8 @@ function aes(encrypt, key, data)
|
||||
* возвращается raw строка 16 байт с результатом операции
|
||||
* в случае неверных размеров key или data вызывается error
|
||||
|
||||
#### aes_gcm
|
||||
|
||||
```
|
||||
function aes_gcm(encrypt, key, iv, data, associated_data)
|
||||
```
|
||||
@@ -1544,6 +1566,8 @@ function aes_gcm(encrypt, key, iv, data, associated_data)
|
||||
* возвращается 2 значения : raw строка - блок шифрованных данных и raw строка atag (authentication tag). atag может быть передан вместе с шифрованным сообщением, iv и associated_data для проверки их целостности.
|
||||
* в случае неверных размеров key или iv вызывается error
|
||||
|
||||
#### aes_ctr
|
||||
|
||||
```
|
||||
function aes_ctr(key, iv, data)
|
||||
```
|
||||
@@ -1555,6 +1579,8 @@ function aes_ctr(key, iv, data)
|
||||
* возвращается raw строка - блок шифрованных данных
|
||||
* в случае неверных размеров key или iv вызывается error
|
||||
|
||||
#### hkdf
|
||||
|
||||
```
|
||||
function hkdf(hash_type, salt, ikm, info, okm_len)
|
||||
```
|
||||
@@ -1571,6 +1597,8 @@ HKDF - HMAC-based Key Derivation Function. Генератор ключей на
|
||||
|
||||
### Системные функции
|
||||
|
||||
#### uname
|
||||
|
||||
```
|
||||
function uname()
|
||||
```
|
||||
@@ -1578,6 +1606,7 @@ HKDF - HMAC-based Key Derivation Function. Генератор ключей на
|
||||
Возвращает то же самое, что и команда uname в shell - название ядра ОС. "Linux", "FreeBSD", "OpenBSD".
|
||||
В Windows возвращается строка, начинающаяся с "CYGWIN", далее следует версия.
|
||||
|
||||
#### clock_gettime
|
||||
|
||||
```
|
||||
function clock_gettime()
|
||||
@@ -1585,6 +1614,8 @@ HKDF - HMAC-based Key Derivation Function. Генератор ключей на
|
||||
|
||||
Узнать точное время. Возвращает 2 значения - unixtime в секундах и наносекунды. Встроенная функция `os.time()` не выдает наносекунды.
|
||||
|
||||
#### getpid
|
||||
|
||||
```
|
||||
function getpid()
|
||||
function gettid()
|
||||
@@ -1599,6 +1630,8 @@ HKDF - HMAC-based Key Derivation Function. Генератор ключей на
|
||||
В следующих функциях будут использоваться стандартные наборы опций - rawsend и reconstruct.
|
||||
Они представляют собой таблицы со специфическими полями. Если nil, считается, что ни одно поле не задано.
|
||||
|
||||
#### standard reconstruct
|
||||
|
||||
Опции реконструкции диссектов - reconstruct_opts. Реконструкция - это сборка raw пакета из диссекта.
|
||||
| Поле | Тип | Описание |
|
||||
|:------|:----|:---------|
|
||||
@@ -1622,6 +1655,8 @@ badsum вынесен в реконструкцию, поскольку чекс
|
||||
Поэтому по отдельным частям гарантированно испортить чексумму невозможно.
|
||||
Что бы вы туда не вписали, существует маленькая вероятность (1/65536), что она окажется верной.
|
||||
|
||||
#### standard rawsend
|
||||
|
||||
Опции отсылки raw пакетов - rawsend_opts
|
||||
| Поле | Тип | Описание |
|
||||
|:------|:----|:---------|
|
||||
@@ -1646,6 +1681,8 @@ repeats шлют бинарно идентичный пакет указанно
|
||||
Диссекция - процесс получения структурированного представления raw ip пакета.
|
||||
Реконструкция - обратный процесс - получение raw ip из диссекта.
|
||||
|
||||
#### dissect
|
||||
|
||||
```
|
||||
function dissect(raw_ip)
|
||||
```
|
||||
@@ -1654,6 +1691,8 @@ function dissect(raw_ip)
|
||||
Это та же самая операция, что происходит автоматически до вызова desync функций по профилю.
|
||||
Они получают уже готовый диссект.
|
||||
|
||||
#### reconstruct_dissect
|
||||
|
||||
```
|
||||
function reconstruct_dissect(dissect, reconstruct_opts)
|
||||
```
|
||||
@@ -1673,6 +1712,8 @@ ip6.ip6_len должен быть рассчитан таким, каким он
|
||||
Если C код видит признаки необходимости фрагментации, он проверяет корректность рассчитанных длин и смещений,
|
||||
и если они корректны, после реконструкции сдвигает содержимое raw пакета в буфере реконструкции, чтобы получился фрагмент с нужными данными.
|
||||
|
||||
#### reconstruct_hdr
|
||||
|
||||
```
|
||||
function reconstruct_tcphdr(tcp)
|
||||
function reconstruct_udphdr(udp)
|
||||
@@ -1685,6 +1726,8 @@ function reconstruct_ip6hdr(ip6, reconstruct_opts)
|
||||
* чексумма ip header считается автоматически, поскольку ни от чего больше не зависит
|
||||
* чексуммы tcp и udp не считаются, поскольку зависят от других компонент
|
||||
|
||||
#### csum_fix
|
||||
|
||||
```
|
||||
function csum_ip4_fix(raw_ipv4_header)
|
||||
function csum_tcp_fix(raw_ip_header, raw_tcp_header, payload)
|
||||
@@ -1703,6 +1746,8 @@ csum_ip4_fix вам наверняка понадобится.
|
||||
|
||||
### Прием и отсылка пакетов
|
||||
|
||||
#### rawsend
|
||||
|
||||
```
|
||||
function rawsend(raw_data, rawsend_opts)
|
||||
function rawsend_dissect(dissect, rawsend_opts, reconstruct_opts)
|
||||
@@ -1712,6 +1757,8 @@ function rawsend_dissect(dissect, rawsend_opts, reconstruct_opts)
|
||||
* rawsend_dissect собирает пакет из диссекта и отправляет
|
||||
* dissect представляет собой таблицу, описанную в соответствующем разделе
|
||||
|
||||
#### raw_packet
|
||||
|
||||
```
|
||||
function raw_packet(ctx)
|
||||
```
|
||||
@@ -1722,7 +1769,7 @@ LUA функции получают готовый диссект текущег
|
||||
|
||||
### Работа с пейлоадами
|
||||
|
||||
Следующие функции позволяют искать по маркерам байтовые позиции внутри пейлоадов.
|
||||
#### Маркеры
|
||||
|
||||
* **Абсолютный положительный маркер** - числовое смещение внутри пейлоада.
|
||||
* **Абсолютный отрицательный маркер** - числовое смещение внутри пейлоада от следующего за концом байта. -1 указывает на последний байт.
|
||||
@@ -1743,6 +1790,8 @@ LUA функции получают готовый диссект текущег
|
||||
|
||||
Пример списка маркеров : `100,midsld,sniext+1,endhost-2,-10`.
|
||||
|
||||
#### resolve_pos
|
||||
|
||||
Задача следующих функций - преобразовать маркеры в абсолютные позиции.
|
||||
|
||||
```
|
||||
@@ -1759,6 +1808,8 @@ function resolve_range(blob,l7payload_type,marker_list[,strict,zero_based_pos])
|
||||
|
||||
### Управление выполнением инстансов
|
||||
|
||||
#### instance_cutoff
|
||||
|
||||
```
|
||||
function instance_cutoff(ctx, outgoing)
|
||||
```
|
||||
@@ -1769,6 +1820,8 @@ function instance_cutoff(ctx, outgoing)
|
||||
* outgoing = false - входящее направление
|
||||
* outgoing = nil - оба направления
|
||||
|
||||
#### lua_cutoff
|
||||
|
||||
```
|
||||
function lua_cutoff(ctx, outgoing)
|
||||
```
|
||||
@@ -1780,6 +1833,8 @@ function lua_cutoff(ctx, outgoing)
|
||||
Состояние lua cutoff может случиться и естественным образом, если все инстансы превысили верхнюю границу
|
||||
range или самоотсекли себя от направления.
|
||||
|
||||
#### execution_plan
|
||||
|
||||
```
|
||||
function execution_plan(ctx)
|
||||
```
|
||||
@@ -1809,6 +1864,8 @@ function execution_plan(ctx)
|
||||
| mode | string | режим счетчика - a, x, n, d, b, s, p |
|
||||
| pos | number | значение счетчика |
|
||||
|
||||
#### execution_plan_cancel
|
||||
|
||||
```
|
||||
function execution_plan_cancel(ctx)
|
||||
```
|
||||
@@ -1826,6 +1883,8 @@ function execution_plan_cancel(ctx)
|
||||
|
||||
Их можно в готовом виде использовать в `--lua-desync`.
|
||||
|
||||
### luaexec
|
||||
|
||||
```
|
||||
function luaexec(ctx, desync)
|
||||
```
|
||||
@@ -1836,22 +1895,30 @@ function luaexec(ctx, desync)
|
||||
|
||||
Пример : `--lua-desync=luaexec:code="desync.rnd=brandom(math.random(5,10))"`
|
||||
|
||||
### pass
|
||||
|
||||
```
|
||||
function pass(ctx, desync)
|
||||
```
|
||||
|
||||
Ничего не делать, только вывести в debug log сообщение "pass".
|
||||
|
||||
### pktdebug
|
||||
|
||||
```
|
||||
function pktdebug(ctx, desync)
|
||||
```
|
||||
|
||||
Вывести структуру desync в debug log.
|
||||
|
||||
### argdebug
|
||||
|
||||
```
|
||||
function argdebug(ctx, desync)
|
||||
```
|
||||
|
||||
### posdebug
|
||||
|
||||
Вывести таблицу аргументов в debug log.
|
||||
|
||||
```
|
||||
@@ -1860,6 +1927,8 @@ function posdebug(ctx, desync)
|
||||
|
||||
Вывести в debug log информацию о текущих conntrack позициях по прямому и обратному направлению.
|
||||
|
||||
### desync_orchestrator_example
|
||||
|
||||
```
|
||||
function desync_orchestrator_example(ctx, desync)
|
||||
```
|
||||
@@ -1869,6 +1938,8 @@ function desync_orchestrator_example(ctx, desync)
|
||||
|
||||
## Служебные функции
|
||||
|
||||
### var_debug
|
||||
|
||||
```
|
||||
function var_debug(v)
|
||||
```
|
||||
@@ -1876,6 +1947,8 @@ function var_debug(v)
|
||||
Выводит в debug log информацию о параметре v - тип и значение.
|
||||
Если это таблица, происходит рекурсивный проход по вложенным значениям и таблицам, информация представляется в виде дерева.
|
||||
|
||||
### deepcopy
|
||||
|
||||
```
|
||||
function deepcopy(orig)
|
||||
```
|
||||
@@ -1892,6 +1965,8 @@ function deepcopy(orig)
|
||||
Если новая строка будет иной по значению, и ее нет в пуле, будет создан новый элемент пула. Иначе будет присвоена ссылка
|
||||
на существующий элемент.
|
||||
|
||||
### logical_xor
|
||||
|
||||
```
|
||||
function logical_xor(a,b)
|
||||
```
|
||||
@@ -1900,10 +1975,14 @@ function logical_xor(a,b)
|
||||
|
||||
## Работа со строками
|
||||
|
||||
### in_list
|
||||
|
||||
```
|
||||
function in_list(s, v)
|
||||
```
|
||||
|
||||
### find_next_line
|
||||
|
||||
Включена ли строка v в список строк через запятую s. Например, `abc` включено в список `xyz,abc,12345`.
|
||||
|
||||
```
|
||||
@@ -1915,6 +1994,8 @@ function find_next_line(s, pos)
|
||||
|
||||
## Обслуживание raw string
|
||||
|
||||
### hex
|
||||
|
||||
```
|
||||
function string2hex(s)
|
||||
function has_nonprintable(s)
|
||||
@@ -1922,7 +2003,6 @@ function make_readable(s)
|
||||
function str_or_hex(s)
|
||||
function hexdump(s, max)
|
||||
function hexdump_dlog(s)
|
||||
function pattern(pat, offset, len)
|
||||
```
|
||||
|
||||
* string2hex преобразует raw строку в символьное hex представление. байты разделены пробелами. "\xAB\xCD\x01\0x2" => "AB CD 01 02"
|
||||
@@ -1931,7 +2011,16 @@ function pattern(pat, offset, len)
|
||||
* str_or_hex возвращает саму строку, если has_nonpritable(s) = false, иначе string2hex(s)
|
||||
* hexdump преобразует начальные байт raw строки s (до max байт) в hex строку + результат make_readable. Классический hex dump.
|
||||
* hexdump_dlog выполняет hexdump и выводит результат в debug log
|
||||
* pattern - это часть условно бесконечно повторяющейся raw строки pat, начинающаяся с позиции offset (нумерация с 1) и длиной len
|
||||
|
||||
### pattern
|
||||
|
||||
```
|
||||
function pattern(pat, offset, len)
|
||||
```
|
||||
|
||||
pattern - это часть условно бесконечно повторяющейся raw строки pat, начинающаяся с позиции offset (нумерация с 1) и длиной len
|
||||
|
||||
### blob
|
||||
|
||||
```
|
||||
function blob(desync, name, def)
|
||||
@@ -1987,6 +2076,8 @@ function pos_str(desync, pos)
|
||||
|
||||
Диссекция - это разбор некоторого сообщения для представления в структурированной форме.
|
||||
|
||||
### dissect_url
|
||||
|
||||
```
|
||||
function dissect_url(url)
|
||||
```
|
||||
@@ -2009,6 +2100,9 @@ function dissect_url(url)
|
||||
string /my_uri/script.php?a=1&b=3
|
||||
</pre></details>
|
||||
|
||||
|
||||
### dissect_nld
|
||||
|
||||
```
|
||||
function dissect_nld(domain, level)
|
||||
```
|
||||
@@ -2016,6 +2110,8 @@ function dissect_nld(domain, level)
|
||||
Получение домена уровня level из domain. level=2 'www.microsoft.com' => 'microsoft.com'.
|
||||
Если уровня level нет, возвращается nil.
|
||||
|
||||
### dissect_http
|
||||
|
||||
```
|
||||
function http_dissect_req(http)
|
||||
function http_dissect_reply(http)
|
||||
@@ -2098,12 +2194,16 @@ function http_dissect_reply(http)
|
||||
|
||||
## Работа с элементами L3 и L4 протоколов
|
||||
|
||||
### find_tcp_options
|
||||
|
||||
```
|
||||
function find_tcp_option(options, kind)
|
||||
```
|
||||
|
||||
Вернуть первый элемент dis.tcp.options с опцией kind. nil, если не найдено.
|
||||
|
||||
### ip6hdr
|
||||
|
||||
```
|
||||
function find_ip6_exthdr(exthdr, proto)
|
||||
```
|
||||
@@ -2116,6 +2216,8 @@ function del_ip6_exthdr(ip6, idx)
|
||||
function fix_ip6_next(ip6, last_proto)
|
||||
```
|
||||
|
||||
### packet_len
|
||||
|
||||
Эти функции работают с диссектом ipv6 заголовка ip6 и его extension headers - ip6.exthdr.
|
||||
При вставлении или удалении extension headers сохраняется корректная цепочка следующих протоколов, начиная с базового ipv6 заголовка.
|
||||
* insert_ip6_exthdr вставляет extension header с протоколом header_type и данными data в диссект ip6 по индексу ip6.exthdr idx. Если idx=nil, вставляется в конец. Размер data должен быть 6+N*4 для IPPROTO_AH и 6+N*8 для остальных, иначе будут ошибки при реконструкции.
|
||||
@@ -2148,6 +2250,8 @@ function packet_len(dis)
|
||||
|
||||
## Работа с именами хостов
|
||||
|
||||
### genhost
|
||||
|
||||
```
|
||||
function genhost(len, template)
|
||||
```
|
||||
@@ -2167,6 +2271,8 @@ function genhost(len, template)
|
||||
-- no template, len=10 : jgha7c.com
|
||||
```
|
||||
|
||||
### host_ip
|
||||
|
||||
```
|
||||
function host_ip(desync)
|
||||
function host_or_ip(desync)
|
||||
@@ -2213,6 +2319,8 @@ delta - это положительная или отрицательная ра
|
||||
В следующих функция и функциях отсылки применяются стандартные блоки опций, представленных в виде полей отдельно передаваемой таблицы.
|
||||
Таблицы опций имеет формат desync.arg. Может передаваться прямо desync.arg без изменений.
|
||||
|
||||
### standard ipid
|
||||
|
||||
**ipid_options**
|
||||
| Поле | Описание |
|
||||
|:------|:---------|
|
||||
@@ -2224,6 +2332,8 @@ ip_id применяется только в ряде функций, оно н
|
||||
Поскольку ОС не следит за измененными ip_id, в пакетах, которые не трогали, оно может начать идти заново.
|
||||
Windows заменяет нулевые ip_id на собственную последовательность, остальные ОС - нет.
|
||||
|
||||
### standard fooling
|
||||
|
||||
**fooling_options**
|
||||
| Поле | Описание |
|
||||
|:------|:---------|
|
||||
@@ -2255,6 +2365,8 @@ ipv6 extension headers добавляются в следующем порядк
|
||||
5. destopt2
|
||||
6. ah
|
||||
|
||||
### standard ipfrag
|
||||
|
||||
Опции IP фрагментации ipfrag_options содержат только два стандартных параметра. Остальное берут заменяемые функции фрагментаторы,
|
||||
для которых существуют свои специфические опции.
|
||||
|
||||
@@ -2267,6 +2379,8 @@ ipv6 extension headers добавляются в следующем порядк
|
||||
| ipfrag_pos_tcp | (фрагментатор ipfrag2) позиция фрагментации tcp. должна быть кратна 8, по умолчанию 32 |
|
||||
| ipfrag_next | (фрагментатор ipfrag2) тип следующего протокола в "fragment" extension header второго фрагмента |
|
||||
|
||||
### apply_ip_id
|
||||
|
||||
```
|
||||
function apply_ip_id(desync, dis, ipid_options, def)
|
||||
```
|
||||
@@ -2276,6 +2390,8 @@ function apply_ip_id(desync, dis, ipid_options, def)
|
||||
Если ipid_options = nil, берется desync.arg.
|
||||
def содержит режим назначения по умолчанию. Если nil, применяется "seq".
|
||||
|
||||
### apply_fooling
|
||||
|
||||
```
|
||||
function apply_fooling(desync, dis, fooling_options)
|
||||
```
|
||||
@@ -2284,6 +2400,8 @@ function apply_fooling(desync, dis, fooling_options)
|
||||
Если dis = nil, берется desync.dis.
|
||||
Если fooling_options = nil, берется desync.arg
|
||||
|
||||
### ipfrag2
|
||||
|
||||
```
|
||||
function ipfrag2(dis, ipfrag_options)
|
||||
```
|
||||
@@ -2304,6 +2422,8 @@ Unfragmentable part передается в каждом фрагменте с
|
||||
ipfrag2 реализует эту возможность на двух фрагментах через указание параметра ipfrag_next.
|
||||
Некоторые фаерволы пробиваются только большим количество фрагментов - для этого потребуется своя функция фрагментатор.
|
||||
|
||||
### wssize_rewrite
|
||||
|
||||
```
|
||||
function wsize_rewrite(dis, arg)
|
||||
```
|
||||
@@ -2319,6 +2439,8 @@ function wsize_rewrite(dis, arg)
|
||||
Следующие функции могут брать несколько блоков описанных выше опций, каждый из которых представлен полем параметра options.
|
||||
Во всех функциях используется `options.reconstruct` и `options.rawsend`. Они соответствуют формату параметров C функции `rawsend_dissect`.
|
||||
|
||||
### rawsend_dissect_ipfrag
|
||||
|
||||
```
|
||||
function rawsend_dissect_ipfrag(dis, options)
|
||||
```
|
||||
@@ -2326,6 +2448,8 @@ function rawsend_dissect_ipfrag(dis, options)
|
||||
Использует кастомную функцию фрагментатор, если указано `options.ipfrag.ipfrag`.
|
||||
Отсылает фрагменты в обратном порядке, если указано `options.ipfrag.ipfrag_disorder`.
|
||||
|
||||
### rawsend_dissect_segmented
|
||||
|
||||
```
|
||||
function rawsend_dissect_segmented(desync, dis, mss, options)
|
||||
```
|
||||
@@ -2333,6 +2457,8 @@ function rawsend_dissect_segmented(desync, dis, mss, options)
|
||||
Отправить диссект dis с автоматической tcp сегментацией на базе mss с применением `options.fooling` и `options.ipid`.
|
||||
ipid применяется к каждому фрагменту. Для udp сегментация невозможна и не выполняется.
|
||||
|
||||
### rawsend_payload_segmented
|
||||
|
||||
```
|
||||
function rawsend_payload_segmented(desync, payload, seq, options)
|
||||
```
|
||||
@@ -2404,6 +2530,8 @@ function replay_drop(desync)
|
||||
По сухому описанию может быть сложно понять как работает оркестрация. Рекомендуется изучить код реальных оркестраторов,
|
||||
а описанием пользоваться для уточнения смысла отдельных действий.
|
||||
|
||||
### instance_cutoff_shim(
|
||||
|
||||
```
|
||||
function instance_cutoff_shim(ctx, desync, dir)
|
||||
```
|
||||
@@ -2411,18 +2539,24 @@ function instance_cutoff_shim(ctx, desync, dir)
|
||||
Выполняет обычный instance cutoff по направлению dir, если ctx присутствует, иначе cutoff через дублирующий механизм,
|
||||
состояние которого хранится в desync.track.lua_state. dir = true - исходящее направление, dir = false - входящее, dir = nil - оба направления.
|
||||
|
||||
### cutoff_shim_check
|
||||
|
||||
```
|
||||
function cutoff_shim_check(desync)
|
||||
```
|
||||
|
||||
Проверяет состояние instance cutoff для desync.func_instance по направлению desync.outgoing.
|
||||
|
||||
### apply_arg_prefix
|
||||
|
||||
```
|
||||
function apply_arg_prefix(desync)
|
||||
```
|
||||
|
||||
Выполняет подстановку значений аргументов из desync.arg, начинающихся с `%` и `#`.
|
||||
|
||||
### apply_execution_plan
|
||||
|
||||
```
|
||||
function apply_execution_plan(desync, instance)
|
||||
```
|
||||
@@ -2431,18 +2565,24 @@ function apply_execution_plan(desync, instance)
|
||||
тем самым воссоздает состояние desync, как если бы `instance` был вызван напрямую C кодом.
|
||||
execution plan выдается C функцией `execution_plan()` как массив, элементами которого являются `instance`.
|
||||
|
||||
### verdict_aggregate
|
||||
|
||||
```
|
||||
function verdict_aggregate(v1, v2)
|
||||
```
|
||||
|
||||
Аггрегация вердиктов v1 и v2. VERDICT_MODIFY замещает VERDICT_PASS, VERDICT_DROP замещает их обоих.
|
||||
|
||||
### plan_instance_execute
|
||||
|
||||
```
|
||||
function plan_instance_execute(desync, verdict, instance)
|
||||
```
|
||||
|
||||
Выполняет элемент execution plan `instance` с учетом текущего вердикта verdict.
|
||||
Возвращает аггрегацию текущего вердикта и вердикта `instance`.
|
||||
Выполняет элемент execution plan `instance` с учетом instance cutoff и стандартных фильтров payload и range.
|
||||
Возвращает аггрегацию verdict и вердикта `instance`.
|
||||
|
||||
### plan_instance_pop
|
||||
|
||||
```
|
||||
function plan_instance_pop(desync)
|
||||
@@ -2450,12 +2590,16 @@ function plan_instance_pop(desync)
|
||||
|
||||
Берет, удаляет и возвращает первый элемент execution plan из desync.plan. Если элементов нет - возвращает nil.
|
||||
|
||||
### plan_clear
|
||||
|
||||
```
|
||||
function plan_clear(desync)
|
||||
```
|
||||
|
||||
Очищает execution plan в desync.plan - удаляет все `instance`.
|
||||
|
||||
### orchestrate
|
||||
|
||||
```
|
||||
function orchestrate(ctx, desync)
|
||||
```
|
||||
@@ -2463,6 +2607,8 @@ function orchestrate(ctx, desync)
|
||||
Если оркестратор - первый, т.е. присутствует ctx, забирает execution plan и помещает его в desync.plan, а потом выполняет `execution_plan_cancel()`.
|
||||
Если ctx=nil - не делает ничего. Считается, что план уже находится в desync.plan.
|
||||
|
||||
### replay_execution_plan
|
||||
|
||||
```
|
||||
function replay_execution_plan(desync)
|
||||
```
|
||||
@@ -2482,6 +2628,9 @@ function replay_execution_plan(desync)
|
||||
|
||||
nfqws2 ничего не знает о том, что нужно `--lua-desync` функциям. Поэтому фильтрация направления и типа пейлоадов ложится целиком на вас. По умолчанию стоит запрет только на входящие, потому что они используются редко, а пользователь может не написать ограничение, и все это пойдет на LUA функции и будет напрасно грузить процессор гигабайтами скачиваемого трафика.
|
||||
|
||||
|
||||
### standard direction
|
||||
|
||||
Фильтр по направлению. В большинстве функций, использующих фильтр по направлению, значение по умолчанию - "out", но есть и те, где по умолчанию "any". Фильтр по направлению можно реализовать и средствами C кода `--in-range` и `--out-range`.
|
||||
|
||||
**standard direction**
|
||||
@@ -2489,6 +2638,8 @@ nfqws2 ничего не знает о том, что нужно `--lua-desync`
|
||||
|:------|:---------|
|
||||
| dir | in - входящее направление<br> out - исходящее направление<br>any - любое направление |
|
||||
|
||||
### standard payload
|
||||
|
||||
Фильтр по пейлоаду берет список типов пейлоада. Список известных типов пейлоада можно получить из help текста nfqws2. Все пустые пакеты имеют пейлоад empty, неизвестные - unknown. Особые значения - all и known. all означает любой пейлоад, known - не unknown и не empty.
|
||||
|
||||
**standard payload**
|
||||
@@ -2499,79 +2650,93 @@ nfqws2 ничего не знает о том, что нужно `--lua-desync`
|
||||
|
||||
Применяются так же наборы опций
|
||||
|
||||
* [standard ipfrag](#операции-с-диссектами)
|
||||
* [standard ipid](#операции-с-диссектами)
|
||||
* [standard fooling](#операции-с-диссектами)
|
||||
* [standard reconstruct](#опции-по-работе-с-пакетами)
|
||||
* [standard rawsend](#опции-по-работе-с-пакетами)
|
||||
* [standard ipfrag](#standard-ipfrag)
|
||||
* [standard ipid](#standard-ipid)
|
||||
* [standard fooling](#standard-fooling)
|
||||
* [standard reconstruct](#standard-reconstruct)
|
||||
* [standard rawsend](#standard-rawsend)
|
||||
|
||||
|
||||
## Базовые функции
|
||||
|
||||
### drop
|
||||
|
||||
```
|
||||
function drop(ctx, desync)
|
||||
```
|
||||
|
||||
* arg: [standard direction](#стандартные-наборы-параметров)
|
||||
* arg: [standard payload](#стандартные-наборы-параметров)
|
||||
* arg: [standard direction](#standard-direction)
|
||||
* arg: [standard payload](#standard-payload)
|
||||
* По умолчанию payload=all, direction=any, то есть drop всего.
|
||||
|
||||
Выносит VERDICT_DROP при выполнении условий фильтра.
|
||||
|
||||
### send
|
||||
|
||||
```
|
||||
function send(ctx, desync)
|
||||
```
|
||||
|
||||
* arg: [standard direction](#стандартные-наборы-параметров)
|
||||
* arg: [standard fooling](#операции-с-диссектами)
|
||||
* arg: [standard ipid](#операции-с-диссектами)
|
||||
* arg: [standard ipfrag](#операции-с-диссектами)
|
||||
* arg: [standard reconstruct](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard rawsend](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard direction](#standard-direction)
|
||||
* arg: [standard fooling](#standard-fooling)
|
||||
* arg: [standard ipid](#standard-ipid)
|
||||
* arg: [standard ipfrag](#standard-ipfrag)
|
||||
* arg: [standard reconstruct](#standard-reconstruct)
|
||||
* arg: [standard rawsend](#standard-rawsend)
|
||||
* режим ip_id по умолчанию - none
|
||||
|
||||
Отсылает текущий диссект c опциональным применением модификаций.
|
||||
|
||||
### pktmod
|
||||
|
||||
```
|
||||
function pktmod(ctx, desync)
|
||||
```
|
||||
|
||||
* arg: [standard direction](#стандартные-наборы-параметров)
|
||||
* arg: [standard fooling](#операции-с-диссектами)
|
||||
* arg: [standard ipid](#операции-с-диссектами)
|
||||
* arg: [standard direction](#standard-direction)
|
||||
* arg: [standard fooling](#standard-fooling)
|
||||
* arg: [standard ipid](#standard-ipid)
|
||||
|
||||
Применить модификации к текущему диссекту без отправки и вынесения вердикта.
|
||||
|
||||
## Дурение http
|
||||
|
||||
### http_hostcase
|
||||
|
||||
```
|
||||
function http_hostcase(ctx, desync)
|
||||
```
|
||||
|
||||
* arg: [standard direction](#стандартные-наборы-параметров)
|
||||
* arg: [standard direction](#standard-direction)
|
||||
* arg: spell - точное написание заголовка. по умолчанию "host"
|
||||
|
||||
Заменяет регистр http заголовка `Host:`
|
||||
|
||||
### http_domcase
|
||||
|
||||
```
|
||||
function http_domcase(ctx, desync)
|
||||
```
|
||||
|
||||
* arg: [standard direction](#стандартные-наборы-параметров)
|
||||
* arg: [standard direction](#standard-direction)
|
||||
|
||||
Меняет регистр написания домена внутри заголовка `Host:`. Верхний и нижний регистр чредуется каждый символ : `rUtRaCkEr.oRg`.
|
||||
|
||||
### http_methodeol
|
||||
|
||||
```
|
||||
function http_methodeol(ctx, desync)
|
||||
```
|
||||
|
||||
* arg: [standard direction](#стандартные-наборы-параметров)
|
||||
* arg: [standard direction](#standard-direction)
|
||||
|
||||
Вставляет '\r\n' перед методом, отрезая 2 последних символа из содержимого заголовка `User-Agent:`. Работает только на nginx, остальные сервера ломает.
|
||||
|
||||
|
||||
## Замена window size
|
||||
|
||||
### wsize
|
||||
|
||||
```
|
||||
function wsize(ctx, desync)
|
||||
```
|
||||
@@ -2583,11 +2748,13 @@ function wsize(ctx, desync)
|
||||
|
||||
Цель техники - подменить window size со стороны клиента или сервера, чтобы в ответ на это клиент отослал следующий пакет частями, поскольку целиком он не влезает в window size. Может приводить к замедлению. Устаревшая техника, рекомендуется применять только с сервера в крайнем случае для работы по клиентам, которые не делают ничего для обхода блокировки. С клиента лучше применять техники tcp сегментации, поскольку они лишены побочных эффектов в виде замедления скорости и имеют больше возможностей.
|
||||
|
||||
### wssize
|
||||
|
||||
```
|
||||
function wssize(ctx, desync)
|
||||
```
|
||||
|
||||
* arg: [standard direction](#стандартные-наборы-параметров)
|
||||
* arg: [standard direction](#standard-direction)
|
||||
* arg: wsize - размер tcp окна
|
||||
* arg: scale - scaling фактор. заменяется в tcp option, если есть. только уменьшение, увеличение блокируется
|
||||
* arg: forced_cutoff - список типов пейлоадов через зяпятую, при получении которых выполняется instance cutoff. Если нужно применять wssize бесконечно, можно указать forced_cutoff=no, то есть несуществующий тип пейлоада, который не придет никогда.
|
||||
@@ -2616,14 +2783,16 @@ function wssize(ctx, desync)
|
||||
иначе это поломает соединение. Без фулинга фейк должен повторять часть оригинальной информации, чтобы сервер не получил ложную информацию.
|
||||
Скрытые фейки не воспринимаются сервером в силу характеристик пакетов, частью которых они являются.
|
||||
|
||||
### syndata
|
||||
|
||||
```
|
||||
function syndata(ctx, desync)
|
||||
```
|
||||
|
||||
* arg: [standard fooling](#операции-с-диссектами)
|
||||
* arg: [standard ipfrag](#операции-с-диссектами)
|
||||
* arg: [standard reconstruct](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard rawsend](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard fooling](#standard-fooling)
|
||||
* arg: [standard ipfrag](#standard-ipfrag)
|
||||
* arg: [standard reconstruct](#standard-reconstruct)
|
||||
* arg: [standard rawsend](#standard-rawsend)
|
||||
* arg: blob - blob, содержащий фейковый payload. Должен помещаться в один пакет, сегментация невозможна.
|
||||
* arg: tls_mod - применить указанный tls_mod к пейлоаду blob
|
||||
|
||||
@@ -2632,34 +2801,38 @@ function syndata(ctx, desync)
|
||||
Таким образом воздействие выполняется на все ретрансмиссии SYN, после чего функция прекращает работу.
|
||||
Является стратегией нулевой фазы, которая работает с хостлистами только в режиме `--ipcache-hostname`.
|
||||
|
||||
### fake
|
||||
|
||||
```
|
||||
function fake(ctx, desync)
|
||||
```
|
||||
|
||||
* arg: [standard direction](#стандартные-наборы-параметров)
|
||||
* arg: [standard payload](#стандартные-наборы-параметров)
|
||||
* arg: [standard fooling](#операции-с-диссектами)
|
||||
* arg: [standard ipid](#операции-с-диссектами)
|
||||
* arg: [standard ipfrag](#операции-с-диссектами)
|
||||
* arg: [standard reconstruct](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard rawsend](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard direction](#standard-direction)
|
||||
* arg: [standard payload](#standard-payload)
|
||||
* arg: [standard fooling](#standard-fooling)
|
||||
* arg: [standard ipid](#standard-ipid)
|
||||
* arg: [standard ipfrag](#standard-ipfrag)
|
||||
* arg: [standard reconstruct](#standard-reconstruct)
|
||||
* arg: [standard rawsend](#standard-rawsend)
|
||||
* arg: blob - blob, содержащий фейковый payload. Может быть любой длины - сегментация выполняется автоматически.
|
||||
* arg: tls_mod - применить указанный tls_mod к пейлоаду blob
|
||||
* payload фильтр по умолчанию - "known"
|
||||
|
||||
Это прямой фейк - отдельный пакет или группа пакетов. Функция не выносит вердикт и не блокирует отправку оригинала.
|
||||
|
||||
### rst
|
||||
|
||||
```
|
||||
function rst(ctx, desync)
|
||||
```
|
||||
|
||||
* arg: [standard direction](#стандартные-наборы-параметров)
|
||||
* arg: [standard payload](#стандартные-наборы-параметров)
|
||||
* arg: [standard fooling](#операции-с-диссектами)
|
||||
* arg: [standard ipid](#операции-с-диссектами)
|
||||
* arg: [standard ipfrag](#операции-с-диссектами)
|
||||
* arg: [standard reconstruct](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard rawsend](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard direction](#standard-direction)
|
||||
* arg: [standard payload](#standard-payload)
|
||||
* arg: [standard fooling](#standard-fooling)
|
||||
* arg: [standard ipid](#standard-ipid)
|
||||
* arg: [standard ipfrag](#standard-ipfrag)
|
||||
* arg: [standard reconstruct](#standard-reconstruct)
|
||||
* arg: [standard rawsend](#standard-rawsend)
|
||||
* arg: rstack - отсылка RST,ACK вместо RST
|
||||
* payload фильтр по умолчанию - "known"
|
||||
|
||||
@@ -2667,17 +2840,19 @@ function rst(ctx, desync)
|
||||
|
||||
## TCP сегментация
|
||||
|
||||
### multisplit
|
||||
|
||||
```
|
||||
function multisplit(ctx, desync)
|
||||
```
|
||||
|
||||
* arg: [standard direction](#стандартные-наборы-параметров)
|
||||
* arg: [standard payload](#стандартные-наборы-параметров)
|
||||
* arg: [standard fooling](#операции-с-диссектами)
|
||||
* arg: [standard ipid](#операции-с-диссектами)
|
||||
* arg: [standard ipfrag](#операции-с-диссектами)
|
||||
* arg: [standard reconstruct](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard rawsend](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard direction](#standard-direction)
|
||||
* arg: [standard payload](#standard-payload)
|
||||
* arg: [standard fooling](#standard-fooling)
|
||||
* arg: [standard ipid](#standard-ipid)
|
||||
* arg: [standard ipfrag](#standard-ipfrag)
|
||||
* arg: [standard reconstruct](#standard-reconstruct)
|
||||
* arg: [standard rawsend](#standard-rawsend)
|
||||
* arg: pos - список через запятую позиционных маркеров - точек разреза. По умолчанию "2".
|
||||
* arg: seqovl - число - смещение относительно текущего sequence для создания дополнительной части сегмента, выходящей влево за границу tcp window
|
||||
* arg: seqovl_pattern - blob, используемый для заполнения seqovl. По умолчанию 0x00
|
||||
@@ -2700,18 +2875,19 @@ seqovl - это фактически средство замешивания ф
|
||||
|
||||
Особое преимущество seqovl - в отсутствии необходимости фулинга. Сервер принимает только часть сегмента за счет игры с sequence numbers, а не за счет модификации каких-то элементов ip и tcp заголовков, что привело бы к полному непринятию.
|
||||
|
||||
### multidisorder
|
||||
|
||||
```
|
||||
function multidisorder(ctx, desync)
|
||||
```
|
||||
|
||||
* arg: [standard direction](#стандартные-наборы-параметров)
|
||||
* arg: [standard payload](#стандартные-наборы-параметров)
|
||||
* arg: [standard fooling](#операции-с-диссектами)
|
||||
* arg: [standard ipid](#операции-с-диссектами)
|
||||
* arg: [standard ipfrag](#операции-с-диссектами)
|
||||
* arg: [standard reconstruct](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard rawsend](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard direction](#standard-direction)
|
||||
* arg: [standard payload](#standard-payload)
|
||||
* arg: [standard fooling](#standard-fooling)
|
||||
* arg: [standard ipid](#standard-ipid)
|
||||
* arg: [standard ipfrag](#standard-ipfrag)
|
||||
* arg: [standard reconstruct](#standard-reconstruct)
|
||||
* arg: [standard rawsend](#standard-rawsend)
|
||||
* arg: pos - список через запятую позиционных маркеров - точек разреза. По умолчанию "2".
|
||||
* arg: seqovl - маркер - смещение относительно текущего sequence для создания дополнительной части сегмента, выходящей влево
|
||||
* arg: seqovl_pattern - blob, используемый для заполнения seqovl. По умолчанию 0x00
|
||||
@@ -2729,17 +2905,18 @@ function multidisorder(ctx, desync)
|
||||
|
||||
Последний отсылаемый сегмент (1-й в оригинальной очередности) отправляется неизменным, переписывая в буфере сокета ложные данные из seqovl_pattern реальными. Восстанавливается непрерывная последовательность потока, данные передаются в сокет приложения.
|
||||
|
||||
### fakedsplit
|
||||
|
||||
```
|
||||
function fakedsplit(ctx, desync)
|
||||
```
|
||||
|
||||
* arg: [standard direction](#стандартные-наборы-параметров)
|
||||
* arg: [standard payload](#стандартные-наборы-параметров)
|
||||
* arg: [standard fooling](#операции-с-диссектами)
|
||||
* arg: [standard ipid](#операции-с-диссектами)
|
||||
* arg: [standard reconstruct](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard rawsend](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard direction](#standard-direction)
|
||||
* arg: [standard payload](#standard-payload)
|
||||
* arg: [standard fooling](#standard-fooling)
|
||||
* arg: [standard ipid](#standard-ipid)
|
||||
* arg: [standard reconstruct](#standard-reconstruct)
|
||||
* arg: [standard rawsend](#standard-rawsend)
|
||||
* arg: pos - один позиционный маркер - точка разреза. По умолчанию "2".
|
||||
* arg: seqovl - число - смещение относительно текущего sequence для создания дополнительной части сегмента, выходящей влево за границу tcp window
|
||||
* arg: seqovl_pattern - blob, используемый для заполнения seqovl. По умолчанию 0x00
|
||||
@@ -2770,16 +2947,18 @@ function fakedsplit(ctx, desync)
|
||||
В случае успеха отсылки выносится VERDICT_DROP, если не указано "nodrop".
|
||||
blob позволяет заменить текущией пейлоад на произвольный блоб, и тем самым отослать любой совместимый пейлоад с тем же разбиением.
|
||||
|
||||
### fakeddisorder
|
||||
|
||||
```
|
||||
function fakeddisorder(ctx, desync)
|
||||
```
|
||||
|
||||
* arg: [standard direction](#стандартные-наборы-параметров)
|
||||
* arg: [standard payload](#стандартные-наборы-параметров)
|
||||
* arg: [standard fooling](#операции-с-диссектами)
|
||||
* arg: [standard ipid](#операции-с-диссектами)
|
||||
* arg: [standard reconstruct](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard rawsend](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard direction](#standard-direction)
|
||||
* arg: [standard payload](#standard-payload)
|
||||
* arg: [standard fooling](#standard-fooling)
|
||||
* arg: [standard ipid](#standard-ipid)
|
||||
* arg: [standard reconstruct](#standard-reconstruct)
|
||||
* arg: [standard rawsend](#standard-rawsend)
|
||||
* arg: pos - один позиционный маркер - точка разреза. По умолчанию "2".
|
||||
* arg: seqovl - маркер - смещение относительно текущего sequence для создания дополнительной части сегмента, выходящей влево
|
||||
* arg: seqovl_pattern - blob, используемый для заполнения seqovl. По умолчанию 0x00
|
||||
@@ -2810,16 +2989,18 @@ function fakeddisorder(ctx, desync)
|
||||
В случае успеха отсылки выносится VERDICT_DROP, если не указано "nodrop".
|
||||
blob позволяет заменить текущией пейлоад на произвольный блоб, и тем самым отослать любой совместимый пейлоад с тем же разбиением.
|
||||
|
||||
### hostfakesplit
|
||||
|
||||
```
|
||||
function hostfakesplit(ctx, desync)
|
||||
```
|
||||
|
||||
* arg: [standard direction](#стандартные-наборы-параметров)
|
||||
* arg: [standard payload](#стандартные-наборы-параметров)
|
||||
* arg: [standard fooling](#операции-с-диссектами)
|
||||
* arg: [standard ipid](#операции-с-диссектами)
|
||||
* arg: [standard reconstruct](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard rawsend](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard direction](#standard-direction)
|
||||
* arg: [standard payload](#standard-payload)
|
||||
* arg: [standard fooling](#standard-fooling)
|
||||
* arg: [standard ipid](#standard-ipid)
|
||||
* arg: [standard reconstruct](#standard-reconstruct)
|
||||
* arg: [standard rawsend](#standard-rawsend)
|
||||
* arg: host - шаблон для генерации фейкового хоста - random.template
|
||||
* arg: midhost - маркер для дополнительного разреза сегмента с реальным хостом
|
||||
* arg: disorder_after - маркер для дополнительного разреза заключительной реальной части и отправки сегментов в обратном порядке
|
||||
@@ -2847,17 +3028,19 @@ function hostfakesplit(ctx, desync)
|
||||
В случае успеха отсылки выносится VERDICT_DROP, если не указано "nodrop".
|
||||
blob позволяет заменить текущией пейлоад на произвольный блоб, и тем самым отослать любой совместимый пейлоад с тем же разбиением.
|
||||
|
||||
### tcpseg
|
||||
|
||||
```
|
||||
function tcpseg(ctx, desync)
|
||||
```
|
||||
|
||||
* arg: [standard direction](#стандартные-наборы-параметров)
|
||||
* arg: [standard payload](#стандартные-наборы-параметров)
|
||||
* arg: [standard fooling](#операции-с-диссектами)
|
||||
* arg: [standard ipid](#операции-с-диссектами)
|
||||
* arg: [standard ipfrag](#операции-с-диссектами)
|
||||
* arg: [standard reconstruct](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard rawsend](#опции-по-работе-с-пакетами)
|
||||
* arg: [standard direction](#standard-direction)
|
||||
* arg: [standard payload](#standard-payload)
|
||||
* arg: [standard fooling](#standard-fooling)
|
||||
* arg: [standard ipid](#standard-ipid)
|
||||
* arg: [standard ipfrag](#standard-ipfrag)
|
||||
* arg: [standard reconstruct](#standard-reconstruct)
|
||||
* arg: [standard rawsend](#standard-rawsend)
|
||||
* arg: pos - список из двух маркеров, определяющий границы tcp сегмента
|
||||
* arg: seqovl - число - смещение относительно текущего sequence для создания дополнительной части сегмента, выходящей влево за границу tcp window
|
||||
* arg: seqovl_pattern - blob, используемый для заполнения seqovl. По умолчанию 0x00
|
||||
|
||||
Reference in New Issue
Block a user