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:
parent
9eb9432af9
commit
59f79847c2
13
packets.c
13
packets.c
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user