From 3f4a99cc54e6edca0a453bf697f88c0f3ec00096 Mon Sep 17 00:00:00 2001 From: SashaXser <24498484+SashaXser@users.noreply.github.com> Date: Tue, 14 Nov 2023 12:11:50 +0400 Subject: [PATCH] Update goodbyedpi.c --- src/goodbyedpi.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/goodbyedpi.c b/src/goodbyedpi.c index 690bf9f..a429c36 100644 --- a/src/goodbyedpi.c +++ b/src/goodbyedpi.c @@ -390,14 +390,15 @@ static int find_header_and_get_info(const char *pktdata, unsigned int pktlen, */ static int extract_sni(const char *pktdata, unsigned int pktlen, char **hostnameaddr, unsigned int *hostnamelen) { + unsigned int ptr = 0; const unsigned char *d = (const unsigned char *)pktdata; const unsigned char *hnaddr = NULL; - size_t hnlen = 0; + int hnlen = 0; - for (size_t ptr = 0; ptr + 8 < pktlen; ptr++) { + while (ptr + 8 < pktlen) { if (d[ptr] == '\0' && d[ptr+1] == '\0' && d[ptr+2] == '\0' && d[ptr+4] == '\0' && d[ptr+6] == '\0' && d[ptr+7] == '\0' && - d[ptr+3] - d[ptr+5] == 2 && d[ptr+5] - d[ptr+8] == 3) + (d[ptr+3] ^ d[ptr+5]) == 2 && (d[ptr+5] ^ d[ptr+8]) == 3) { hnaddr = &d[ptr+9]; hnlen = d[ptr+8]; @@ -406,7 +407,7 @@ static int extract_sni(const char *pktdata, unsigned int pktlen, return FALSE; } - for (size_t i = 0; i < hnlen; i++) { + for (int i = 0; i < hnlen; i++) { if (!((hnaddr[i] >= '0' && hnaddr[i] <= '9') || (hnaddr[i] >= 'a' && hnaddr[i] <= 'z') || hnaddr[i] == '.' || hnaddr[i] == '-')) @@ -419,12 +420,14 @@ static int extract_sni(const char *pktdata, unsigned int pktlen, *hostnamelen = (unsigned int)hnlen; return TRUE; } + ptr++; } return FALSE; } + static inline void change_window_size(const PWINDIVERT_TCPHDR ppTcpHdr, unsigned int size) { if (size >= 1 && size <= 0xFFFFu) { ppTcpHdr->Window = htons((u_short)size);