mirror of
https://github.com/bol-van/zapret.git
synced 2025-12-06 03:26:47 +03:00
nfqws: ip_id fixes, more altorder support
This commit is contained in:
@@ -83,6 +83,8 @@ typedef struct
|
||||
bool b_cutoff; // mark for deletion
|
||||
bool b_wssize_cutoff, b_desync_cutoff, b_dup_cutoff, b_orig_mod_cutoff;
|
||||
|
||||
uint16_t ip_id;
|
||||
|
||||
t_l7proto l7proto;
|
||||
bool l7proto_discovered;
|
||||
char *hostname;
|
||||
|
||||
@@ -420,7 +420,7 @@ bool prepare_udp_segment4(
|
||||
|
||||
memcpy(payload,data,len);
|
||||
if (padding)
|
||||
fill_pattern(payload+len,padlen,padding,padding_size);
|
||||
fill_pattern(payload+len,padlen,padding,padding_size,0);
|
||||
else
|
||||
memset(payload+len,0,padlen);
|
||||
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);
|
||||
if (padding)
|
||||
fill_pattern(payload+len,padlen,padding,padding_size);
|
||||
fill_pattern(payload+len,padlen,padding,padding_size,0);
|
||||
else
|
||||
memset(payload+len,0,padlen);
|
||||
udp6_fix_checksum(udp,transport_payload_len,&ip6->ip6_src,&ip6->ip6_dst);
|
||||
|
||||
2511
nfq/desync.c
2511
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;
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
if (offset%=patsize)
|
||||
{
|
||||
size = patsize-offset;
|
||||
size = bufsize>size ? size : bufsize;
|
||||
memcpy(buf,pattern+offset,size);
|
||||
buf += size;
|
||||
bufsize -= size;
|
||||
}
|
||||
while (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);
|
||||
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);
|
||||
|
||||
|
||||
1284
nfq/nfqws.c
1284
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
|
||||
#endif
|
||||
|
||||
const char * tld[6] = { "com","org","net","edu","gov","biz" };
|
||||
|
||||
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)
|
||||
{
|
||||
free(dp->fsplit_pattern);
|
||||
|
||||
hostlist_collection_destroy(&dp->hl_collection);
|
||||
hostlist_collection_destroy(&dp->hl_collection_exclude);
|
||||
ipset_collection_destroy(&dp->ips_collection);
|
||||
|
||||
@@ -68,6 +68,8 @@
|
||||
|
||||
#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 };
|
||||
|
||||
struct fake_tls_mod_cache
|
||||
@@ -140,8 +142,9 @@ struct desync_profile
|
||||
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;
|
||||
uint8_t fake_syndata[FAKE_MAX_TCP],seqovl_pattern[FAKE_MAX_TCP],fsplit_pattern[FAKE_MAX_TCP],udplen_pattern[FAKE_MAX_UDP];
|
||||
size_t fake_syndata_size;
|
||||
uint8_t fake_syndata[FAKE_MAX_TCP],seqovl_pattern[FAKE_MAX_TCP],udplen_pattern[FAKE_MAX_UDP];
|
||||
uint8_t *fsplit_pattern;
|
||||
size_t fake_syndata_size, fsplit_pattern_size;
|
||||
|
||||
struct fake_tls_mod tls_mod_last;
|
||||
struct blob_item *tls_fake_last;
|
||||
|
||||
Reference in New Issue
Block a user