## Полный список обманок (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, но отбрасываются целевым сервером или наоборот.