Template
1
0
mirror of https://github.com/bol-van/zapret2.git synced 2026-03-19 15:55:48 +00:00

update docs

This commit is contained in:
bol-van
2025-12-15 19:27:16 +03:00
parent 6d31036ca1
commit f4a7fe3aaf

View File

@@ -1683,3 +1683,41 @@ function rawsend_dissect(dissect, rawsend_opts, reconstruct_opts)
* rawsend работает с raw строкой, содержащий полностью собранный ipv4 или ipv6 пакет
* rawsend_dissect собирает пакет из диссекта и отправляет
* dissect представляет собой таблицу, описанную в соответствующем разделе
### Работа с пейлоадами
Следующие функции позволяют искать по маркерам байтовые позиции внутри пейлоадов.
* **Абсолютный положительный маркер** - числовое смещение внутри пейлоада.
* **Абсолютный отрицательный маркер** - числовое смещение внутри пейлоада от следующего за концом байта. -1 указывает на последний байт.
* **Относительный маркер** - положительное или отрицательное смещение относительно логической позиции внутри пейлоада.
Относительные позиции :
* **method** - начало метода HTTP ('GET', 'POST', 'HEAD', ...). Метод обычно всегда находится на позиции 0, но может сместиться из-за methodeol. Тогда позиция может стать 1 или 2.
* **host** - начало имени хоста
* **endhost** - байт, следующий за последним байтом имени хоста
* **sld** - начало домена 2 уровня в имени хоста
* **endsld** - байт, следующий за последним байтом домена 2 уровня в имени хоста
* **midsld** - середина домена 2 уровня в имени хоста
* **sniext** - начало поля данных SNI extension в TLS. Любой extension состоит из 2-байтовых полей type и length, за ними идет поле данных.
* **extlen** - поле длины TLS extensions
Относительные маркеры работают с логическими элементами отдельных известных пейлоадов, поэтому они не будут работать с чем попало.
Пример списка маркеров : `100,midsld,sniext+1,endhost-2,-10`.
Задача следующих функций - преобразовать маркеры в абсолютные позиции.
```
function resolve_pos(blob,l7payload_type,marker[,zero_based_pos])
function resolve_multi_pos(blob,l7payload_type,marker_list[,zero_based_pos])
function resolve_range(blob,l7payload_type,marker_list[,strict,zero_based_pos])
```
* resolve_pos работает с единственным маркером. если маркер не ресолвится, возвращается nil.
* resolve_multi_pos работает со списком маркеров через запятую. возвращает массив уникальных абсолютных позиций. если некоторые маркеры не ресолвятся - их не будет в результате.
* resolve_range ресолвит список из ровно 2 маркеров, представляющих собой диапазон внутри пейлоада. Если strict = true, и любой маркер не ресолвится, возвращается nil. Иначе если первый маркер не ресолвится - он заменяется на 0. Если не ресолвится второй маркер - он заменяется на длину пейлоада. Если не ресолвятся оба - возвращается nil.
* если задано zero_based_pos=true, все позиции начинаются с 0, иначе с 1, как это принято в LUA.
* при невалидных значениях l7payload_type, marker, marker_list, если количество маркеров не равно 2 для resolve_range - вызывается error