Some checks failed
Published content check / validate (push) Failing after 5s
Каждая публикуемая заметка получила callout-шапку со ссылкой на свою страницу wiki.zapret.moe (на самой вики она вырезается транформером RemoveMirrorCallout, видна только на зеркале Obsidian Publish и в Forgejo) и SEO-поле description — 1–2 предложения для meta description обоих сайтов. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
127 lines
No EOL
5.6 KiB
Markdown
127 lines
No EOL
5.6 KiB
Markdown
---
|
||
tags:
|
||
link:
|
||
aliases:
|
||
img:
|
||
height: 1000
|
||
description: "Полный список обманок (fooling) в Zapret2: ip_ttl и autottl, tcp_seq/tcp_ack (badseq, badack), tcp_md5, IPv6 extension headers — с примерами."
|
||
---
|
||
|
||
> [!mirror] Резервное зеркало
|
||
> Актуальная версия этой страницы — на основной вики: [wiki.zapret.moe/Zapret2/основные-флаги](https://wiki.zapret.moe/Zapret2/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5-%D1%84%D0%BB%D0%B0%D0%B3%D0%B8)
|
||
|
||
## Полный список обманок (fooling) в zapret2
|
||
|
||
### 🔹 **IP/IPv4 модификации**
|
||
|
||
1. **`ip_ttl=N`** - установить TTL (Time To Live) в IPv4 заголовке
|
||
- Пример: `ip_ttl=5`
|
||
|
||
2. **`ip_autottl=delta,min-max`** - автоматическое определение TTL
|
||
- Формат: `delta,min-max` (например: `-1,3-20`)
|
||
- Автоматически вычисляет оптимальный TTL на основе входящих пакетов
|
||
|
||
### 🔹 **IPv6 модификации**
|
||
|
||
3. **`ip6_ttl=N`** - установить Hop Limit в IPv6 заголовке (аналог TTL)
|
||
- Пример: `ip6_ttl=3`
|
||
|
||
4. **`ip6_autottl=delta,min-max`** - автоматическое определение Hop Limit для IPv6
|
||
- Формат: `delta,min-max`
|
||
|
||
### 🔹 **IPv6 Extension Headers (расширенные заголовки)**
|
||
|
||
5. **`ip6_hopbyhop[=hex]`** - добавить Hop-by-Hop заголовок
|
||
- Размер данных: 6+N×8 байт
|
||
- По умолчанию: `\x00\x00\x00\x00\x00\x00`
|
||
|
||
6. **`ip6_hopbyhop2[=hex]`** - добавить второй Hop-by-Hop заголовок
|
||
- Размер данных: 6+N×8 байт
|
||
|
||
7. **`ip6_destopt[=hex]`** - добавить Destination Options заголовок (unfragmentable part)
|
||
- Размер данных: 6+N×8 байт
|
||
|
||
8. **`ip6_destopt2[=hex]`** - добавить второй Destination Options заголовок (fragmentable part)
|
||
- Размер данных: 6+N×8 байт
|
||
|
||
9. **`ip6_routing[=hex]`** - добавить Routing заголовок
|
||
- Размер данных: 6+N×8 байт
|
||
|
||
10. **`ip6_ah[=hex]`** - добавить Authentication Header (усеченный)
|
||
- Размер данных: 6+N×4 байт
|
||
- По умолчанию: `\x00\x00` + 4 случайных байта
|
||
|
||
### 🔹 **TCP модификации**
|
||
|
||
11. **`tcp_seq=N`** - добавить N к TCP sequence number
|
||
- Пример: `tcp_seq=10000`
|
||
- Используется для "badseq" обманки
|
||
|
||
12. **`tcp_ack=N`** - добавить N к TCP acknowledgment number
|
||
- Пример: `tcp_ack=-66000`
|
||
- Используется для "badack" обманки (обычно отрицательное значение)
|
||
|
||
13. **`tcp_ts=N`** - добавить N к TCP timestamp value
|
||
- Модифицирует TCP опцию timestamp
|
||
|
||
14. **`tcp_md5[=hex]`** - добавить TCP MD5 опцию (RFC 2385)
|
||
- Размер: 16 байт
|
||
- По умолчанию: случайные данные
|
||
- Пример: `tcp_md5` или `tcp_md5=0x00112233445566778899aabbccddeeff`
|
||
|
||
15. **`tcp_flags_set=<список>`** - установить TCP флаги
|
||
- Список через запятую: `FIN,SYN,RST,PSH,ACK,URG,ECE,CWR`
|
||
- Пример: `tcp_flags_set=PSH,URG`
|
||
|
||
16. **`tcp_flags_unset=<список>`** - снять TCP флаги
|
||
- Пример: `tcp_flags_unset=ACK` (для "datanoack" обманки)
|
||
|
||
17. **`tcp_ts_up`** - переместить TCP timestamp опцию в начало
|
||
- Без параметров
|
||
- Workaround для Linux: позволяет отбрасывать пакеты с badack без badseq
|
||
|
||
### 🔹 **Дополнительные опции**
|
||
|
||
18. **`badsum`** - сделать контрольную сумму L4 невалидной
|
||
- Без параметров
|
||
- Относится к reconstruct options
|
||
|
||
19. **`fool=функция`** - вызвать пользовательскую функцию обманки
|
||
- Формат: `fool_func(dis, fooling_options)`
|
||
- Для создания собственных обманок
|
||
|
||
### 📋 **Популярные комбинации (из nfqws1)**
|
||
|
||
В старой версии (nfqws1) были готовые комбинации:
|
||
|
||
- **`md5sig`** → `tcp_md5`
|
||
- **`badseq`** → `tcp_seq=-10000` (для SYN) или `tcp_ack=-66000` (для обычных пакетов)
|
||
- **`badack`** → `tcp_ack=-66000`
|
||
- **`datanoack`** → `tcp_flags_unset=ACK`
|
||
|
||
### 💡 **Примеры использования**
|
||
|
||
```bash
|
||
# Простой TTL
|
||
--lua-desync=fake:ip_ttl=5
|
||
|
||
# Автоматический TTL
|
||
--lua-desync=fake:ip_autottl=-1,3-20
|
||
|
||
# TCP MD5 signature (обманка для DPI)
|
||
--lua-desync=fake:tcp_md5
|
||
|
||
# Badseq + badack (классическая обманка)
|
||
--lua-desync=fakedsplit:tcp_seq=-10000:tcp_ack=-66000:tcp_ts_up
|
||
|
||
# IPv6 extension headers
|
||
--lua-desync=fake:ip6_hopbyhop:ip6_destopt
|
||
|
||
# Снять ACK флаг (datanoack)
|
||
--lua-desync=fake:tcp_flags_unset=ACK
|
||
|
||
# Комбинация нескольких обманок
|
||
--lua-desync=fake:ip_ttl=1:tcp_md5:tcp_ack=-66000
|
||
```
|
||
|
||
Все эти обманки применяются функцией `apply_fooling()` из библиотеки `zapret-lib.lua` и используются для обхода DPI систем путем создания пакетов, которые проходят через DPI, но отбрасываются целевым сервером или наоборот. |