mirror of
https://github.com/SantaSpeen/winConnect.git
synced 2025-07-02 07:56:49 +00:00
[!] Fix salt..
[+] Chunked ready [+] sha256 check
This commit is contained in:
parent
7e12d64c05
commit
ac6ed4aea3
@ -208,17 +208,20 @@ class WinConnectBase:
|
|||||||
def __read_chunked_message(self, data_info: bytes):
|
def __read_chunked_message(self, data_info: bytes):
|
||||||
self._log.debug(f"[{self._pipe_name}] Receive long message. Reading in chunks...")
|
self._log.debug(f"[{self._pipe_name}] Receive long message. Reading in chunks...")
|
||||||
chunk_size = self._body_max_size - 32
|
chunk_size = self._body_max_size - 32
|
||||||
sha256, data_len = data_info[:32], int(data_info[32:])
|
cdata_sha256, cdata_len = data_info[:32], int(data_info[32:])
|
||||||
if data_len > self.read_max_buffer:
|
if cdata_len > self.read_max_buffer:
|
||||||
self._send_error(WinConnectErrors.BODY_TOO_BIG, f"Body is too big. Max size: {self.read_max_buffer}kb")
|
self._send_error(WinConnectErrors.BODY_TOO_BIG, f"Body is too big. Max size: {self.read_max_buffer}kb")
|
||||||
self.close()
|
self.close()
|
||||||
_buffer = b""
|
_buffer = b""
|
||||||
|
|
||||||
with self._read_lock:
|
with self._read_lock:
|
||||||
for i in range(0, data_len, chunk_size):
|
for i in range(0, cdata_len, chunk_size):
|
||||||
_buffer += self.__read_and_decrypt(chunk_size)
|
_buffer += self.__read_and_decrypt(chunk_size)
|
||||||
|
|
||||||
return _buffer
|
if cdata_sha256 != hashlib.sha256(_buffer).digest():
|
||||||
|
self._send_error(WinConnectErrors.BAD_DATA, f"Data is corrupted")
|
||||||
|
|
||||||
|
return zlib.decompress(_buffer)
|
||||||
|
|
||||||
def __send_chunked_message(self, data: bytes):
|
def __send_chunked_message(self, data: bytes):
|
||||||
self._log.debug(f"[{self._pipe_name}] Long message. Sending in chunks...")
|
self._log.debug(f"[{self._pipe_name}] Long message. Sending in chunks...")
|
||||||
@ -276,9 +279,12 @@ class WinConnectBase:
|
|||||||
return True
|
return True
|
||||||
case b'set_session_settings':
|
case b'set_session_settings':
|
||||||
self._log.debug(f"[{self._pipe_name}] Received session settings.")
|
self._log.debug(f"[{self._pipe_name}] Received session settings.")
|
||||||
len_salt, data = self.__parse_message(data)
|
len_salt, data_salt = self.__parse_message(data)
|
||||||
len_salt = int(len_salt)
|
len_salt = int(len_salt)
|
||||||
data, salt = data[:-len_salt], data[-len_salt:]
|
if len_salt > 0:
|
||||||
|
data, salt = data_salt[:-len_salt], data_salt[-len_salt:]
|
||||||
|
else:
|
||||||
|
data, salt = data_salt, b''
|
||||||
|
|
||||||
if salt != self.__crypto.crypt_salt:
|
if salt != self.__crypto.crypt_salt:
|
||||||
self._log.debug(f"[{self._pipe_name}] Updating salt")
|
self._log.debug(f"[{self._pipe_name}] Updating salt")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user