mirror of
https://github.com/bol-van/zapret.git
synced 2025-12-06 11:36:46 +03:00
nfqws: ip_id fixes, more altorder support
This commit is contained in:
@@ -83,13 +83,15 @@ typedef struct
|
|||||||
bool b_cutoff; // mark for deletion
|
bool b_cutoff; // mark for deletion
|
||||||
bool b_wssize_cutoff, b_desync_cutoff, b_dup_cutoff, b_orig_mod_cutoff;
|
bool b_wssize_cutoff, b_desync_cutoff, b_dup_cutoff, b_orig_mod_cutoff;
|
||||||
|
|
||||||
|
uint16_t ip_id;
|
||||||
|
|
||||||
t_l7proto l7proto;
|
t_l7proto l7proto;
|
||||||
bool l7proto_discovered;
|
bool l7proto_discovered;
|
||||||
char *hostname;
|
char *hostname;
|
||||||
bool hostname_is_ip;
|
bool hostname_is_ip;
|
||||||
bool hostname_discovered;
|
bool hostname_discovered;
|
||||||
bool hostname_ah_check; // should perform autohostlist checks
|
bool hostname_ah_check; // should perform autohostlist checks
|
||||||
|
|
||||||
t_reassemble reasm_orig;
|
t_reassemble reasm_orig;
|
||||||
struct rawpacket_tailhead delayed;
|
struct rawpacket_tailhead delayed;
|
||||||
} t_ctrack;
|
} t_ctrack;
|
||||||
|
|||||||
@@ -420,7 +420,7 @@ bool prepare_udp_segment4(
|
|||||||
|
|
||||||
memcpy(payload,data,len);
|
memcpy(payload,data,len);
|
||||||
if (padding)
|
if (padding)
|
||||||
fill_pattern(payload+len,padlen,padding,padding_size);
|
fill_pattern(payload+len,padlen,padding,padding_size,0);
|
||||||
else
|
else
|
||||||
memset(payload+len,0,padlen);
|
memset(payload+len,0,padlen);
|
||||||
udp4_fix_checksum(udp,ip_payload_len,&ip->ip_src,&ip->ip_dst);
|
udp4_fix_checksum(udp,ip_payload_len,&ip->ip_src,&ip->ip_dst);
|
||||||
@@ -509,7 +509,7 @@ bool prepare_udp_segment6(
|
|||||||
|
|
||||||
memcpy(payload,data,len);
|
memcpy(payload,data,len);
|
||||||
if (padding)
|
if (padding)
|
||||||
fill_pattern(payload+len,padlen,padding,padding_size);
|
fill_pattern(payload+len,padlen,padding,padding_size,0);
|
||||||
else
|
else
|
||||||
memset(payload+len,0,padlen);
|
memset(payload+len,0,padlen);
|
||||||
udp6_fix_checksum(udp,transport_payload_len,&ip6->ip6_src,&ip6->ip6_dst);
|
udp6_fix_checksum(udp,transport_payload_len,&ip6->ip6_src,&ip6->ip6_dst);
|
||||||
|
|||||||
2527
nfq/desync.c
2527
nfq/desync.c
File diff suppressed because it is too large
Load Diff
@@ -338,10 +338,18 @@ bool parse_hex_str(const char *s, uint8_t *pbuf, size_t *size)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void fill_pattern(uint8_t *buf,size_t bufsize,const void *pattern,size_t patsize)
|
void fill_pattern(uint8_t *buf,size_t bufsize,const void *pattern,size_t patsize,size_t offset)
|
||||||
{
|
{
|
||||||
size_t size;
|
size_t size;
|
||||||
|
|
||||||
|
if (offset%=patsize)
|
||||||
|
{
|
||||||
|
size = patsize-offset;
|
||||||
|
size = bufsize>size ? size : bufsize;
|
||||||
|
memcpy(buf,pattern+offset,size);
|
||||||
|
buf += size;
|
||||||
|
bufsize -= size;
|
||||||
|
}
|
||||||
while (bufsize)
|
while (bufsize)
|
||||||
{
|
{
|
||||||
size = bufsize>patsize ? patsize : bufsize;
|
size = bufsize>patsize ? patsize : bufsize;
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ static inline uint32_t pntoh32(const uint8_t *p) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool parse_hex_str(const char *s, uint8_t *pbuf, size_t *size);
|
bool parse_hex_str(const char *s, uint8_t *pbuf, size_t *size);
|
||||||
void fill_pattern(uint8_t *buf,size_t bufsize,const void *pattern,size_t patsize);
|
void fill_pattern(uint8_t *buf,size_t bufsize,const void *pattern,size_t patsize,size_t offset);
|
||||||
|
|
||||||
int fprint_localtime(FILE *F);
|
int fprint_localtime(FILE *F);
|
||||||
|
|
||||||
|
|||||||
1296
nfq/nfqws.c
1296
nfq/nfqws.c
File diff suppressed because it is too large
Load Diff
@@ -20,6 +20,7 @@ const char *progname = "nfqws";
|
|||||||
#error UNKNOWN_SYSTEM_TIME
|
#error UNKNOWN_SYSTEM_TIME
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char * tld[6] = { "com","org","net","edu","gov","biz" };
|
||||||
|
|
||||||
int DLOG_FILE(FILE *F, const char *format, va_list args)
|
int DLOG_FILE(FILE *F, const char *format, va_list args)
|
||||||
{
|
{
|
||||||
@@ -297,6 +298,8 @@ struct desync_profile_list *dp_list_add(struct desync_profile_list_head *head)
|
|||||||
}
|
}
|
||||||
static void dp_clear_dynamic(struct desync_profile *dp)
|
static void dp_clear_dynamic(struct desync_profile *dp)
|
||||||
{
|
{
|
||||||
|
free(dp->fsplit_pattern);
|
||||||
|
|
||||||
hostlist_collection_destroy(&dp->hl_collection);
|
hostlist_collection_destroy(&dp->hl_collection);
|
||||||
hostlist_collection_destroy(&dp->hl_collection_exclude);
|
hostlist_collection_destroy(&dp->hl_collection_exclude);
|
||||||
ipset_collection_destroy(&dp->ips_collection);
|
ipset_collection_destroy(&dp->ips_collection);
|
||||||
|
|||||||
@@ -68,6 +68,8 @@
|
|||||||
|
|
||||||
#define MAX_GIDS 64
|
#define MAX_GIDS 64
|
||||||
|
|
||||||
|
extern const char * tld[6];
|
||||||
|
|
||||||
enum log_target { LOG_TARGET_CONSOLE=0, LOG_TARGET_FILE, LOG_TARGET_SYSLOG, LOG_TARGET_ANDROID };
|
enum log_target { LOG_TARGET_CONSOLE=0, LOG_TARGET_FILE, LOG_TARGET_SYSLOG, LOG_TARGET_ANDROID };
|
||||||
|
|
||||||
struct fake_tls_mod_cache
|
struct fake_tls_mod_cache
|
||||||
@@ -140,8 +142,9 @@ struct desync_profile
|
|||||||
uint32_t desync_ts_increment, desync_badseq_increment, desync_badseq_ack_increment;
|
uint32_t desync_ts_increment, desync_badseq_increment, desync_badseq_ack_increment;
|
||||||
|
|
||||||
struct blob_collection_head fake_http,fake_tls,fake_unknown,fake_unknown_udp,fake_quic,fake_wg,fake_dht,fake_discord,fake_stun;
|
struct blob_collection_head fake_http,fake_tls,fake_unknown,fake_unknown_udp,fake_quic,fake_wg,fake_dht,fake_discord,fake_stun;
|
||||||
uint8_t fake_syndata[FAKE_MAX_TCP],seqovl_pattern[FAKE_MAX_TCP],fsplit_pattern[FAKE_MAX_TCP],udplen_pattern[FAKE_MAX_UDP];
|
uint8_t fake_syndata[FAKE_MAX_TCP],seqovl_pattern[FAKE_MAX_TCP],udplen_pattern[FAKE_MAX_UDP];
|
||||||
size_t fake_syndata_size;
|
uint8_t *fsplit_pattern;
|
||||||
|
size_t fake_syndata_size, fsplit_pattern_size;
|
||||||
|
|
||||||
struct fake_tls_mod tls_mod_last;
|
struct fake_tls_mod tls_mod_last;
|
||||||
struct blob_item *tls_fake_last;
|
struct blob_item *tls_fake_last;
|
||||||
|
|||||||
Reference in New Issue
Block a user