0
0
mirror of https://github.com/hufrea/byedpi.git synced 2025-07-02 03:23:04 +00:00

Ignore extra bytes after tlsrec in fake payload

This commit is contained in:
ruti 2025-03-15 14:38:01 +03:00
parent 9eb9432af9
commit 59f79847c2

View File

@ -118,14 +118,13 @@ static size_t find_ext_block(const char *data, size_t size)
} }
static int merge_tls_records(char *buffer, ssize_t n) static void merge_tls_records(char *buffer, ssize_t n)
{ {
if (n < 5) { if (n < 5) {
return 0; return;
} }
uint16_t full_sz = 0; uint16_t full_sz = 0;
uint16_t r_sz = ANTOHS(buffer, 3); uint16_t r_sz = ANTOHS(buffer, 3);
int i = 0;
while (1) { while (1) {
full_sz += r_sz; full_sz += r_sz;
@ -140,11 +139,9 @@ static int merge_tls_records(char *buffer, ssize_t n)
} }
memmove(buffer + 5 + full_sz, memmove(buffer + 5 + full_sz,
buffer + 10 + full_sz, n - (10 + full_sz)); buffer + 10 + full_sz, n - (10 + full_sz));
i++;
} }
SHTONA(buffer, 3, full_sz); SHTONA(buffer, 3, full_sz);
SHTONA(buffer, 7, full_sz - 4); SHTONA(buffer, 7, full_sz - 4);
return i * 5;
} }
@ -228,8 +225,8 @@ static void resize_sni(char *buffer, ssize_t n,
int change_tls_sni(const char *host, char *buffer, ssize_t n, ssize_t nn) int change_tls_sni(const char *host, char *buffer, ssize_t n, ssize_t nn)
{ {
int avail = merge_tls_records(buffer, n); merge_tls_records(buffer, n);
avail += (nn - n); int avail = nn < n ? nn - n : 0;
uint16_t r_sz = ANTOHS(buffer, 3); uint16_t r_sz = ANTOHS(buffer, 3);
r_sz += avail; r_sz += avail;
@ -285,6 +282,8 @@ int change_tls_sni(const char *host, char *buffer, ssize_t n, ssize_t nn)
copy_name(buffer + sni_offs + 9, host, new_sz); copy_name(buffer + sni_offs + 9, host, new_sz);
if (avail >= 4) { if (avail >= 4) {
avail += remove_tls_ext(buffer, n, skip, 0x0015);
SHTONA(buffer, 5 + r_sz - avail, 0x0015); SHTONA(buffer, 5 + r_sz - avail, 0x0015);
SHTONA(buffer, 5 + r_sz - avail + 2, avail - 4); SHTONA(buffer, 5 + r_sz - avail + 2, avail - 4);
memset(buffer + 5 + r_sz - avail + 4, 0, avail - 4); memset(buffer + 5 + r_sz - avail + 4, 0, avail - 4);