Полный список обманок (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 модификации

  1. ip6_ttl=N - установить Hop Limit в IPv6 заголовке (аналог TTL)

    • Пример: ip6_ttl=3
  2. ip6_autottl=delta,min-max - автоматическое определение Hop Limit для IPv6

    • Формат: delta,min-max

🔹 IPv6 Extension Headers (расширенные заголовки)

  1. ip6_hopbyhop[=hex] - добавить Hop-by-Hop заголовок

    • Размер данных: 6+N×8 байт
    • По умолчанию: \x00\x00\x00\x00\x00\x00
  2. ip6_hopbyhop2[=hex] - добавить второй Hop-by-Hop заголовок

    • Размер данных: 6+N×8 байт
  3. ip6_destopt[=hex] - добавить Destination Options заголовок (unfragmentable part)

    • Размер данных: 6+N×8 байт
  4. ip6_destopt2[=hex] - добавить второй Destination Options заголовок (fragmentable part)

    • Размер данных: 6+N×8 байт
  5. ip6_routing[=hex] - добавить Routing заголовок

    • Размер данных: 6+N×8 байт
  6. ip6_ah[=hex] - добавить Authentication Header (усеченный)

    • Размер данных: 6+N×4 байт
    • По умолчанию: \x00\x00 + 4 случайных байта

🔹 TCP модификации

  1. tcp_seq=N - добавить N к TCP sequence number

    • Пример: tcp_seq=10000
    • Используется для “badseq” обманки
  2. tcp_ack=N - добавить N к TCP acknowledgment number

    • Пример: tcp_ack=-66000
    • Используется для “badack” обманки (обычно отрицательное значение)
  3. tcp_ts=N - добавить N к TCP timestamp value

    • Модифицирует TCP опцию timestamp
  4. tcp_md5[=hex] - добавить TCP MD5 опцию (RFC 2385)

    • Размер: 16 байт
    • По умолчанию: случайные данные
    • Пример: tcp_md5 или tcp_md5=0x00112233445566778899aabbccddeeff
  5. tcp_flags_set=<список> - установить TCP флаги

    • Список через запятую: FIN,SYN,RST,PSH,ACK,URG,ECE,CWR
    • Пример: tcp_flags_set=PSH,URG
  6. tcp_flags_unset=<список> - снять TCP флаги

    • Пример: tcp_flags_unset=ACK (для “datanoack” обманки)
  7. tcp_ts_up - переместить TCP timestamp опцию в начало

    • Без параметров
    • Workaround для Linux: позволяет отбрасывать пакеты с badack без badseq

🔹 Дополнительные опции

  1. badsum - сделать контрольную сумму L4 невалидной

    • Без параметров
    • Относится к reconstruct options
  2. fool=функция - вызвать пользовательскую функцию обманки

    • Формат: fool_func(dis, fooling_options)
    • Для создания собственных обманок

📋 Популярные комбинации (из nfqws1)

В старой версии (nfqws1) были готовые комбинации:

  • md5sigtcp_md5
  • badseqtcp_seq=-10000 (для SYN) или tcp_ack=-66000 (для обычных пакетов)
  • badacktcp_ack=-66000
  • datanoacktcp_flags_unset=ACK

💡 Примеры использования

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