0
0
mirror of https://github.com/hufrea/byedpi.git synced 2025-06-30 02:31:15 +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) {
return 0;
return;
}
uint16_t full_sz = 0;
uint16_t r_sz = ANTOHS(buffer, 3);
int i = 0;
while (1) {
full_sz += r_sz;
@ -140,11 +139,9 @@ static int merge_tls_records(char *buffer, ssize_t n)
}
memmove(buffer + 5 + full_sz,
buffer + 10 + full_sz, n - (10 + full_sz));
i++;
}
SHTONA(buffer, 3, full_sz);
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 avail = merge_tls_records(buffer, n);
avail += (nn - n);
merge_tls_records(buffer, n);
int avail = nn < n ? nn - n : 0;
uint16_t r_sz = ANTOHS(buffer, 3);
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);
if (avail >= 4) {
avail += remove_tls_ext(buffer, n, skip, 0x0015);
SHTONA(buffer, 5 + r_sz - avail, 0x0015);
SHTONA(buffer, 5 + r_sz - avail + 2, avail - 4);
memset(buffer + 5 + r_sz - avail + 4, 0, avail - 4);