Template
1
0
mirror of https://github.com/bol-van/zapret2.git synced 2026-03-14 06:13:09 +00:00

update docs

This commit is contained in:
bol-van
2025-12-16 18:07:00 +03:00
parent 25a9f9e426
commit a12307d7f9

View File

@@ -2090,9 +2090,9 @@ function fix_ip6_next(ip6, last_proto)
Эти функции работают с диссектом ipv6 заголовка ip6 и его extension headers - ip6.exthdr.
При вставлении или удалении extension headers сохраняется корректная цепочка следующих протоколов, начиная с базового ipv6 заголовка.
* insert_ip6_exthdr вставляет extension header с протоколом header_type и данными data в диссект ip6 по индексу ip6.exthdr idx. Если idx=nil, вставляется в конец.
* insert_ip6_exthdr вставляет extension header с протоколом header_type и данными data в диссект ip6 по индексу ip6.exthdr idx. Если idx=nil, вставляется в конец. Размер data должен быть 6+N*4 для IPPROTO_AH и 6+N*8 для остальных, иначе будут ошибки при реконструкции.
* del_ip6_exthdr удаляет extension header по индексу ip6.exthdr idx.
* fix_ip6_next восстанавливает корректную цепочку следующих протоколов за счет ip6_nxt и полей type в ip6.exthdr.
* fix_ip6_next восстанавливает корректную цепочку следующих протоколов за счет ip6.ip6_nxt и полей type в ip6.exthdr.
```
function l3_base_len(dis)
@@ -2158,7 +2158,7 @@ function writeable_file_name(filename)
* is_absolute_path возвращает true, если путь path начинается с корня. Учитываются особенности путей CYGWIN.
* append_path дописывает имя файла или каталога file к пути path, разделяя их знаком '/'
* writeable_file_name возвращает filename, если filename содержит абсолютный путь или env `WRITEABLE` отсутствует.
Иначе берется путь из env `WRITEABLE` и к нему дописывается имя файла filename.
Иначе берется путь из env `WRITEABLE` и к нему дописывается имя файла filename через append_path.
## autottl
@@ -2184,26 +2184,25 @@ delta - это положительная или отрицательная ра
В следующих функция и функциях отсылки применяются стандартные блоки опций, представленных в виде полей отдельно передаваемой таблицы.
Таблицы опций имеет формат desync.arg. Может передаваться прямо desync.arg без изменений.
Если передается desync и опции nil, функции берут desync.arg по умолчанию вместо опций.
ipid_options
**ipid_options**
| Поле | Описание |
|:------|:---------|
| ip_id | режим назначения ip_id : seq, rnd, zero, none<br>seq - последовательное<br>rnd - случайное<br>zero - ноль<br>none - не менять |
| ip_id_conn | запоминать последнее сгенерированное значение seq и начинать с него в следующем пакете. не работает без desync.track |
Из seq далеко не всегда получится ожидаемая и преемлемая последовательность.
ip_id применяется только в ряде функций, оно не применяется ко всем проходящим пакетом автоматически.
ip_id применяется только в ряде функций, оно не применяется ко всем проходящим пакетам автоматически.
Поскольку ОС не следит за измененными ip_id, в пакетах, которые не трогали, оно может начать идти заново.
Windows заменяет нулевые ip_id на собственную последовательность, остальные ОС - нет.
fooling_options
**fooling_options**
| Поле | Описание |
|:------|:---------|
| ip_ttl | изменить TTL в ipv4 заголовке на указанный |
| ip6_ttl | изменить TTL (HL) в ipv6 заголовке на указанный |
| ip_autottl | изменить TTL в ipv4 заголовке на автоматически определяемый по шаблону autottl. при невозможности определения TTL не меняется |
| ip6_autottl | изменить TTL (HL) в ipv6 заголовке на автоматически определяемый по шаблону autottl. при невозможности определения TTL (HL) не меняется |
| ip_autottl | изменить TTL в ipv4 заголовке на автоматически определяемый по шаблону autottl. При невозможности определения TTL берется ip_ttl, если есть. Иначе TTL не меняется. |
| ip6_autottl | изменить HL в ipv6 заголовке на автоматически определяемый по шаблону autottl. При невозможности определения HL берется ip6_ttl, если есть. Иначе HL не меняется. |
| ip6_hopbyhop | вставить extension header "hop-by-hop options". по умолчанию данные - 6 нулей, но можно задать hex строку с данными. длина должна быть 6+N*8 |
| ip6_hopbyhop2 | вставить второй extension header "hop-by-hop options" |
| ip6_destopt | вставить extension header "destination options". по умолчанию данные - 6 нулей, но можно задать hex строку с данными. длина должна быть 6+N*8 |
@@ -2218,9 +2217,19 @@ fooling_options
| tcp_flags_unset | снять флаги TCP. аналогично tcp_flags_set |
| tcp_ts_up | поднять tcp timestamp опцию в самое начало, если она есть |
ipv6 extension headers добавляются в следующем порядке:
1. hopbyhop
2. hopbyhop2
3. destopt
4. routing
5. destopt2
6. ah
Опции IP фрагментации ipfrag_options содержат только два стандартных параметра. Остальное берут заменяемые функции фрагментаторы,
для которых существуют свои специфические опции.
ipfrag_options
**ipfrag_options**
| Поле | Описание |
|:------|:---------|
| ipfrag | имя функции фрагментатора. если нет, использовать ipfrag2. фрагментатор возвращает массив диссектов - фрагментов |
@@ -2287,3 +2296,12 @@ function ipfrag2(dis, ipfrag_options)
Задействуется через rawsend_dissect_ipfrag, если отсутствует поле ipfrag в ipfrag_options.
Отдельно вызывать эту функцию вряд ли понадобится.
Если вам нужно резать IP пакет как-то иначе, вы можете по аналогии создать свой фрагментатор и указать его в ipfrag_options.
В случае ipv6 fragment headers вставляется после всех hopbyhop, routing и первого destopt. Это unfragmentable part.
Дальше идет fragment header, а все остальное после него является fragmentable part.
Unfragmentable part передается в каждом фрагменте с измененными полями fragment header, остальное режется поверх
всего блока данных за fragment header согласно смещению фрагмента.
По стандарту в случае ipv6 фрагментации next протокол берется только из первого фрагмента с offset=0.
В остальных фрагментах он не обязан совпадать и игнорируется. Это известная и описанная в статьях penetration атака, позволяющая
пробить некоторые фаерволы. ipfrag2 реализует эту возможность на двух фрагментах через указание параметра ipfrag_next.