zapret/nfq/desync.h

54 lines
1.3 KiB
C
Raw Normal View History

2021-03-04 11:30:38 +00:00
#pragma once
#include "darkmagic.h"
#include <stdint.h>
#include <stdbool.h>
#include <netinet/ip.h>
#include <netinet/ip6.h>
#include <netinet/tcp.h>
#include <netinet/in.h>
#ifdef __linux__
#define DPI_DESYNC_FWMARK_DEFAULT 0x40000000
#else
#define DPI_DESYNC_FWMARK_DEFAULT 512
#endif
#define DPI_DESYNC_MAX_FAKE_LEN 9216
2021-03-04 11:30:38 +00:00
enum dpi_desync_mode {
DESYNC_NONE=0,
DESYNC_INVALID,
DESYNC_FAKE,
2022-04-12 12:52:06 +00:00
DESYNC_FAKE_KNOWN,
2021-03-04 11:30:38 +00:00
DESYNC_RST,
DESYNC_RSTACK,
2021-04-07 09:13:46 +00:00
DESYNC_SYNACK,
2024-03-19 10:50:20 +00:00
DESYNC_SYNDATA,
2021-03-04 11:30:38 +00:00
DESYNC_DISORDER,
DESYNC_DISORDER2,
DESYNC_SPLIT,
2022-01-03 09:38:18 +00:00
DESYNC_SPLIT2,
DESYNC_IPFRAG2,
2022-02-05 10:36:03 +00:00
DESYNC_HOPBYHOP,
2022-02-05 12:41:46 +00:00
DESYNC_DESTOPT,
2022-04-12 12:52:06 +00:00
DESYNC_IPFRAG1,
2023-09-07 16:03:37 +00:00
DESYNC_UDPLEN,
DESYNC_TAMPER
2021-03-04 11:30:38 +00:00
};
extern const char *fake_http_request_default;
extern const uint8_t fake_tls_clienthello_default[517];
enum dpi_desync_mode desync_mode_from_string(const char *s);
2021-04-07 09:13:46 +00:00
bool desync_valid_zero_stage(enum dpi_desync_mode mode);
2021-03-04 11:30:38 +00:00
bool desync_valid_first_stage(enum dpi_desync_mode mode);
bool desync_only_first_stage(enum dpi_desync_mode mode);
2021-03-04 11:30:38 +00:00
bool desync_valid_second_stage(enum dpi_desync_mode mode);
2022-04-12 12:52:06 +00:00
bool desync_valid_second_stage_tcp(enum dpi_desync_mode mode);
bool desync_valid_second_stage_udp(enum dpi_desync_mode mode);
2021-03-04 11:30:38 +00:00
2023-10-13 17:10:46 +00:00
void desync_init(void);
2024-04-20 17:59:45 +00:00
uint8_t dpi_desync_packet(uint32_t fwmark, const char *ifout, uint8_t *data_pkt, size_t *len_pkt);