diff --git a/uc-v1.1.8-dev.py b/uc-v1.1.8-dev.py index 5e64e37..d5c5c48 100644 --- a/uc-v1.1.8-dev.py +++ b/uc-v1.1.8-dev.py @@ -339,9 +339,9 @@ def ping_request(self): self.crypt_stub.setup_encryption(self.clientSock) self.print_log( - f'requesting ping from [{ + f'''requesting ping from [{ self.serverAddr}]::[{ - self.serverPort}]') + self.serverPort}]''') self.clientSock.send(self.crypt_stub.encrypt_data(cOP.PING)) answ = self.clientSock.recv(16) ping = self.crypt_stub.decrypt_data(answ) @@ -365,9 +365,9 @@ def download_script(self, downloadType, downloadName, clientToken): # requesting transfer self.print_log( - f'requesting transfer from [{ + f'''requesting transfer from [{ self.serverAddr}]::[{ - self.serverPort}]') + self.serverPort}]''') self.clientSock.send(self.crypt_stub.encrypt_data(cOP.DOWNLOAD)) time.sleep(self.time_buffer) @@ -443,9 +443,9 @@ def download_script(self, downloadType, downloadName, clientToken): # closing socket if file could not be found elif resp == cOP.RST: self.print_log( - f'file_not_found_error: closing connection to [{ + f'''file_not_found_error: closing connection to [{ self.serverAddr}]::[{ - self.serverPort}]') + self.serverPort}]''') self.clientSock.close() # closing socket if selected operand is not available @@ -637,9 +637,9 @@ def download_script(self, downloadType, downloadName, clientToken): # directory not found else: self.print_log( - f'directory_not_found_error: closing connection to [{ + f'''directory_not_found_error: closing connection to [{ self.serverAddr}]::[{ - self.serverPort}]') + self.serverPort}]''') self.clientSock.close() # authentification failure @@ -660,9 +660,9 @@ def listfs(self, clientToken, oFile): # requesting list and sending operand self.print_log( - f'requesting listfs from [{ + f'''requesting listfs from [{ self.serverAddr}]::[{ - self.serverPort}]') + self.serverPort}]''') self.clientSock.send(self.crypt_stub.encrypt_data(cOP.LISTFS)) time.sleep(self.time_buffer) @@ -680,9 +680,9 @@ def listfs(self, clientToken, oFile): # no # closing socket self.print_log( - f'connection refused by [{ + f'''connection refused by [{ self.serverAddr}]::[{ - self.serverPort}]') + self.serverPort}]''') self.clientSock.close() elif answ == cOP.OK: # yes @@ -734,9 +734,9 @@ def listfs(self, clientToken, oFile): file.close() space = 120 * " " self.print_log( - f'filesystem written to { + f'''filesystem written to { self.download + - oFile}{space}') + oFile}{space}''') # sending operation done and closing socket self.clientSock.send(self.crypt_stub.encrypt_data(cOP.OK)) @@ -749,9 +749,9 @@ def test_authtoken(self, clientToken): # requesting token validation self.print_log( - f'requesting token validation from [{ + f'''requesting token validation from [{ self.serverAddr}]::[{ - self.serverPort}]') + self.serverPort}]''') self.clientSock.send(self.crypt_stub.encrypt_data(cOP.USERTOKEN)) time.sleep(self.time_buffer) @@ -788,9 +788,9 @@ def updateuc(self): # requesting update self.print_log( - f'updating uc from [{ + f'''updating uc from [{ self.serverAddr}]::[{ - self.serverPort}]') + self.serverPort}]''') self.clientSock.send(self.crypt_stub.encrypt_data(cOP.SERVERUPDATE)) # receieving file size @@ -830,9 +830,9 @@ def upload_script(self, fileDirectory, userFile, userToken): # requesting file upload current_date_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') self.print_log( - f'requesting file transfer from [{ - self.serverAddr}]::[{ - self.serverPort}]') + f'''requesting file transfer from [{ + self.serverAddr}]::[{ + self.serverPort}]''') self.clientSock.send(self.crypt_stub.encrypt_data(cOP.UPLOAD)) time.sleep(self.time_buffer) @@ -909,9 +909,9 @@ def remove_script(self, removeName, userToken): # sending request to server self.print_log( - f'requesting removal from [{ + f'''requesting removal from [{ self.serverAddr}]::[{ - self.serverPort}]') + self.serverPort}]''') self.clientSock.send(self.crypt_stub.encrypt_data(cOP.REMOVE)) time.sleep(self.time_buffer) @@ -1018,9 +1018,9 @@ def send_backup(): # requesting file transfer sentBytes = 0 self.print_log( - f'requesting file transfer from [{ - self.serverAddr}]::[{ - self.serverPort}]') + f'''requesting file transfer from [{ + self.serverAddr}]::[{ + self.serverPort}]''') self.clientSock.send(self.crypt_stub.encrypt_data(cOP.BACKUP)) time.sleep(self.time_buffer) @@ -1247,9 +1247,9 @@ def install_package(package): # request package from server self.print_log( - f'installing package from [{ - self.serverAddr}]::[{ - self.serverPort}]') + f'''installing package from [{ + self.serverAddr}]::[{ + self.serverPort}]''') self.clientSock.send(self.crypt_stub.encrypt_data(cOP.PACKAGE)) time.sleep(self.time_buffer) @@ -1408,9 +1408,9 @@ def listall(self, userToken): self.crypt_stub.setup_encryption(self.clientSock) # request to list available packages self.print_log( - f'listing available packages from [{ - self.serverAddr}]::[{ - self.serverPort}]') + f'''listing available packages from [{ + self.serverAddr}]::[{ + self.serverPort}]''') self.clientSock.send(self.crypt_stub.encrypt_data(cOP.LISTALL)) time.sleep(self.time_buffer) @@ -1464,16 +1464,16 @@ def remove(self, package): except PermissionError: self.print_log('ERROR: Permission denied. Are you root?') except Exception as e: - self.print_log(f'ERROR: {package} package not found.') + self.print_log(f'ERROR: {e}: {package} package not found.') # script to return if package is available def search(self, userToken, package): self.crypt_stub.setup_encryption(self.clientSock) # request package search self.print_log( - f"searching available package from [{ - self.serverAddr}]::[{ - self.serverPort}]") + f'''searching available package from [{ + self.serverAddr}]::[{ + self.serverPort}]''') self.clientSock.send(self.crypt_stub.encrypt_data(cOP.SEARCH)) time.sleep(self.time_buffer) diff --git a/us-v1.1.8-dev.py b/us-v1.1.8-dev.py index f15743b..bac7086 100644 --- a/us-v1.1.8-dev.py +++ b/us-v1.1.8-dev.py @@ -346,7 +346,9 @@ def token_check(self, recvToken, token): # verification of authentification token def authtoken_check(self, clientSock, clientAddr): clientToken = clientSock.recv(1024) - clientToken = self.crypt_stub.decrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], clientToken) + clientToken = self.crypt_stub.decrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], clientToken) clientToken = clientToken[0:30] self.print_log(f'fetching token from db for {clientAddr}') with open(self.validtoken, "r") as vtFile: @@ -459,26 +461,28 @@ def handle_file(self, clientSock, clientAddr, fileDirectory): # decrypting and decoding data self.print_log(f'decrypting and decoding bytes from {clientAddr}') fileData = fileData - fileData = self.crypt_stub.decrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], fileData, False) + fileData = self.crypt_stub.decrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], fileData, False) specFileFormat = False time.sleep(self.time_delay) # writing file if not specFileFormat: self.print_log( - f'file received from {clientAddr} with { - len(fileData)} bytes. writing to directory') + f'file received from {clientAddr} with {len(fileData)} bytes. writing to directory') with open(fileDirectory + fileName, 'wb') as openFile: openFile.write(fileData) openFile.close() self.print_log( - f'file from {clientAddr} written to { - fileDirectory + fileName}') + f'file from {clientAddr} written to {fileDirectory + fileName}') fileSize = int(fileSize) self.print_log(f'comparing fileSize {fileSize} == {len(fileData)}') # sending finish and closing socket if fileSize == len(fileData): self.print_log(f'filesize OK. sending answer to {clientAddr}') - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) else: message = 'server_side_error occurred. please try upload again.' error = f'fileSize comparing failed. sending answer to {clientAddr}' @@ -803,18 +807,20 @@ def handling_options(self, clientSock, clientAddr, data): if dir_name == dirName: # directory found dirpath = dirpath + '/' - log = f'directory { - dirpath + dir_name} found. sending to client {clientAddr}' - + log = f'directory {dirpath + dir_name} found. sending to client {clientAddr}' server_log(userArray[userID], log) self.print_log(log) - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) time.sleep(self.time_delay) # sending download size backupSize = self.get_size(dirpath + dir_name) backupSize = str(backupSize) - backupSize = self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], backupSize) + backupSize = self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], backupSize) clientSock.send(backupSize) time.sleep(self.time_delay) # sending directory @@ -861,7 +867,9 @@ def handling_options(self, clientSock, clientAddr, data): self.print_log(log) file_name_encr = file_name - file_name_encr = self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], + file_name_encr = self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], file_name_encr) clientSock.send(file_name_encr) time.sleep(self.time_delay) @@ -869,7 +877,9 @@ def handling_options(self, clientSock, clientAddr, data): with open(filePath, 'rb') as clientFile: data = clientFile.read() clientFile.close() - data = self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], data, False) + data = self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], data, False) log = f'sending filesize to {clientAddr}' server_log(userArray[userID], log) @@ -877,7 +887,9 @@ def handling_options(self, clientSock, clientAddr, data): self.print_log(log) fileSize = len(data) fileSize = str(fileSize) - fileSize = self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], fileSize) + fileSize = self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], fileSize) clientSock.send(fileSize) time.sleep(self.time_delay) log = f'receiving status from {clientAddr}' @@ -886,7 +898,9 @@ def handling_options(self, clientSock, clientAddr, data): self.print_log(log) status = clientSock.recv(16) - status = self.crypt_stub.decrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], status) + status = self.crypt_stub.decrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], status) self.debugger.debug("[%s] Received status %s"%(threading.get_ident(), status)) if status == cOP.OK: log = f'sending bytes to {clientAddr}' @@ -906,12 +920,12 @@ def handling_options(self, clientSock, clientAddr, data): server_log(userArray[userID], log) self.print_log(log) resp = clientSock.recv(16) - resp = self.crypt_stub.decrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], resp) + resp = self.crypt_stub.decrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], resp) if resp == cOP.OK: log = f'OK recieved from {clientAddr}' - server_log(userArray[userID], log) - self.print_log(log) pass else: @@ -929,13 +943,17 @@ def handling_options(self, clientSock, clientAddr, data): server_log(userArray[userID], log) self.print_log(log) done = True - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.RST)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.RST)) clientSock.close() del self.crypt_clients_list[threading.get_ident()] # wrong operand choosen from client else: - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.RST)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.RST)) log = f'wrong operand from {clientAddr}' write_log(log) clientSock.close() @@ -948,7 +966,9 @@ def handling_options(self, clientSock, clientAddr, data): server_log(userArray[userID], log) self.print_log(log) - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.RST)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.RST)) clientSock.close() del self.crypt_clients_list[threading.get_ident()] # list filesystem request @@ -961,13 +981,19 @@ def handling_options(self, clientSock, clientAddr, data): error = f'closing connection to {clientAddr}: invalid auth_token' write_log(error) self.print_log(error) - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.RST)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.RST)) clientSock.close() del self.crypt_clients_list[threading.get_ident()] else: - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) outputType = clientSock.recv(1024) - outputType = self.crypt_stub.decrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], outputType) + outputType = self.crypt_stub.decrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], outputType) cut = len(userArray[userID]) # sending client file system for dirpath, dirnames, files in os.walk( @@ -988,20 +1014,28 @@ def handling_options(self, clientSock, clientAddr, data): # custom output if outputType == cOP.LISTFS: listfs = grep - listfs = self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], listfs) + listfs = self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], listfs) fileSize = len(listfs) fileSize = str(fileSize) - fileSize = self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], fileSize) + fileSize = self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], fileSize) clientSock.send(fileSize) time.sleep(self.time_delay) clientSock.send(listfs) # grepable output elif outputType == cOP.GREP: grep = grep - grep = self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], grep) + grep = self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], grep) fileSize = len(grep) fileSize = str(fileSize) - fileSize = self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], fileSize) + fileSize = self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], fileSize) clientSock.send(fileSize) time.sleep(self.time_delay) clientSock.send(grep) @@ -1014,7 +1048,9 @@ def handling_options(self, clientSock, clientAddr, data): self.print_log(log) write_log( f'recieved wrong listfs operand from {clientAddr}') - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.RST)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.RST)) clientSock.close() del self.crypt_clients_list[threading.get_ident()] # finish request @@ -1024,7 +1060,9 @@ def handling_options(self, clientSock, clientAddr, data): self.print_log(log) recv = clientSock.recv(16) - recv = self.crypt_stub.decrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], recv) + recv = self.crypt_stub.decrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], recv) if recv == cOP.OK: log = f'OK recieved. closing connection to {clientAddr}' @@ -1041,14 +1079,20 @@ def handling_options(self, clientSock, clientAddr, data): error = f'closing connection to {clientAddr}: invalid auth_token' write_log(error) self.print_log(error) - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.RST)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.RST)) clientSock.close() del self.crypt_clients_list[threading.get_ident()] else: - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) # receiving name removeName = clientSock.recv(1024) - removeName = self.crypt_stub.decrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], removeName) + removeName = self.crypt_stub.decrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], removeName) # check for potential threat if not self.check_dir_sec(removeName): log = f"WARNING: Detected potential security threat! {clientAddr}" @@ -1071,26 +1115,27 @@ def handling_options(self, clientSock, clientAddr, data): server_log(userArray[userID], log) self.print_log(log) - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) clientSock.close() del self.crypt_clients_list[threading.get_ident()] else: - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.NOT_FOUND)) - log = f'file_not_found_error: { - userArray[userID] + removeName}' - + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.NOT_FOUND)) + log = f'file_not_found_error: {userArray[userID] + removeName}' server_log(userArray[userID], log) - self.print_log(log) clientSock.close() del self.crypt_clients_list[threading.get_ident()] # ping request elif data == cOP.PING: - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) ping = f'sending ping request to {clientAddr}' - server_main_log(ping) - self.print_log(ping) self.print_log(f'closed connection to {clientAddr}') clientSock.close() @@ -1104,10 +1149,14 @@ def handling_options(self, clientSock, clientAddr, data): data = file.read() file.close() data = data - data = self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], data) + data = self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], data) fileSize = len(data) fileSize = str(fileSize) - fileSize = self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], fileSize) + fileSize = self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], fileSize) clientSock.send(fileSize) time.sleep(self.time_delay) clientSock.send(data) @@ -1121,7 +1170,9 @@ def handling_options(self, clientSock, clientAddr, data): # file system decryption request elif data == cOP.DECRYPT: key = clientSock.recv(1024) - key = self.crypt_stub.decrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], key) + key = self.crypt_stub.decrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], key) write_crypt_key(key) write_crypt_dir(self.client1) try: @@ -1136,7 +1187,9 @@ def handling_options(self, clientSock, clientAddr, data): # file system encryption request elif data == cOP.ENCRYPT: key = clientSock.recv(1024) - key = self.crypt_stub.decrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], key) + key = self.crypt_stub.decrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], key) write_crypt_key(key) write_crypt_dir(self.client1) try: @@ -1156,7 +1209,9 @@ def handling_options(self, clientSock, clientAddr, data): error = f'closing connection to {clientAddr}: invalid auth_token' write_log(error) self.print_log(error) - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.FORBIDDEN)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.FORBIDDEN)) clientSock.close() del self.crypt_clients_list[threading.get_ident()] else: @@ -1165,13 +1220,19 @@ def handling_options(self, clientSock, clientAddr, data): if backup_client1_lock.acquire(blocking=False): self.debugger.debug( f"[{threading.get_ident()}] Trying to acquire lock done") - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) else: self.debugger.debug( f"[{threading.get_ident()}] Waiting for client lock") - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.LOCK)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.LOCK)) backup_client1_lock.acquire() - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) try: # receiving file data log = f'receiving file from {clientAddr}' @@ -1180,7 +1241,9 @@ def handling_options(self, clientSock, clientAddr, data): self.print_log(log) fragmentCount = 0 fileDir = clientSock.recv(1024) - fileDir = self.crypt_stub.decrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], fileDir) + fileDir = self.crypt_stub.decrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], fileDir) if not self.check_dir_sec(fileDir): log = f"WARNING: Detected potential security threat! {clientAddr}" @@ -1202,7 +1265,9 @@ def handling_options(self, clientSock, clientAddr, data): fileData = b'' time.sleep(self.time_delay) filesize = clientSock.recv(1024) - filesize = self.crypt_stub.decrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], filesize) + filesize = self.crypt_stub.decrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], filesize) filesize = int(filesize) log = f'recieved filesize from {clientAddr}' @@ -1233,7 +1298,9 @@ def handling_options(self, clientSock, clientAddr, data): recieved = True break fileData = fileData - fileData = self.crypt_stub.decrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], fileData, False) + fileData = self.crypt_stub.decrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], fileData, False) filePath = userArray[userID] + fileDir with open(filePath, 'wb') as openFile: openFile.write(fileData) @@ -1244,17 +1311,21 @@ def handling_options(self, clientSock, clientAddr, data): server_log(userArray[userID], log) self.print_log(log) - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) clientSock.close() del self.crypt_clients_list[threading.get_ident()] else: - log = f'filesize comparison went wrong. ERROR in {filesize}=={ - os.path.getsize(filePath)}. closing connection to {clientAddr}' + log = f'''filesize comparison went wrong. ERROR in {filesize}=={ + os.path.getsize(filePath)}. closing connection to {clientAddr}''' server_log(userArray[userID], log) self.print_log(log) - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.RST)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.RST)) clientSock.close() del self.crypt_clients_list[threading.get_ident()] finally: @@ -1268,13 +1339,17 @@ def handling_options(self, clientSock, clientAddr, data): # token authentificaion request elif data == cOP.USERTOKEN: if self.authtoken_check(clientSock, clientAddr): - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) log = f'closing connection to {clientAddr}: job done' self.print_log(log) clientSock.close() del self.crypt_clients_list[threading.get_ident()] else: - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.RST)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.RST)) error = f'closing connection to {clientAddr}: token invalid' write_log(error) self.print_log(error) @@ -1289,14 +1364,20 @@ def handling_options(self, clientSock, clientAddr, data): error = f'closing connection to {clientAddr}: invalid auth_token' write_log(error) self.print_log(error) - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.FORBIDDEN)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.FORBIDDEN)) clientSock.close() del self.crypt_clients_list[threading.get_ident()] else: - clientSock.send(self.crypt_stub.encrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) + clientSock.send(self.crypt_stub.encrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], cOP.OK)) # receiving package name package = clientSock.recv(1024) - package = self.crypt_stub.decrypt_data(self.crypt_clients_list[threading.get_ident()][0], self.crypt_clients_list[threading.get_ident()][1], package) + package = self.crypt_stub.decrypt_data( + self.crypt_clients_list[threading.get_ident()][0], + self.crypt_clients_list[threading.get_ident()][1], package) package_folder = userArray[userID] + \ '/ultron-server/packages/' + package log = f'searching requested package {package_folder} for {clientAddr}' diff --git a/usi.py b/usi.py index 53acad0..f08d32b 100644 --- a/usi.py +++ b/usi.py @@ -6,6 +6,7 @@ import sys import os + class colors: GREEN = '\033[92m' RED = '\033[91m' @@ -13,13 +14,15 @@ class colors: YELLOW = '\033[93m' BLUE = '\033[94m' + def check_dir(dirPath, x): - if os.path.exists(str(dirPath)): - print(f'found file {dirPath}') - return f_hashing(dirPath) - else: - print(colors.RED, f'ERROR: File {dirPath} not exists.', colors.WHITE) - return False + if os.path.exists(str(dirPath)): + print(f'found file {dirPath}') + return f_hashing(dirPath) + else: + print(colors.RED, f'ERROR: File {dirPath} not exists.', colors.WHITE) + return False + def hash_function(hashString): # hashes a string @@ -27,33 +30,37 @@ def hash_function(hashString): hashedString = hashlib.sha256(hashString.encode()).hexdigest() return hashedString + def find(name, path): # find names in a path for root, dirs, files in os.walk(path): if name in files: return os.path.join(root, name) + def write_file(hash_str, txt_path_): # writing hashes to text file with open(txt_path_, "a") as f: f.write(hash_str) f.close() + def find_files(): hash_string = ['', '', '', ''] print('searching files') # find files in the given path fileArray = [ - '/etc/ultron-server/key.txt', - '/etc/ultron-server/token.txt', - '/etc/ultron-server/valid_token.txt' + '/etc/ultron-server/key.txt', + '/etc/ultron-server/token.txt', + '/etc/ultron-server/valid_token.txt' ] for i in range(4): hash_string[i] = check_dir(fileArray[i], i) if not hash_string[i]: hash_string[i] = 'A'*64 cmp_hashes(hash_string[0], hash_string[1], hash_string[2], hash_string[3], - fileArray[0], fileArray[1], fileArray[2], fileArray[3]) + fileArray[0], fileArray[1], fileArray[2], fileArray[3]) + def f_hashing(filePath): # hashing the given file @@ -66,17 +73,18 @@ def f_hashing(filePath): print(f'created hash for {filePath}') return fileBytes + def cmp_hashes(h1, h2, h3, h4, f1, f2, f3, f4): hash_string = [h1, h2, h3, h4] fileArray = [f1, f2, f3, f4] digit1 = 0 digit2 = 64 - for x in range (4): + for x in range(4): hashHash = hash_string[x] if not os.path.exists('/etc/ultron-server/hashes.txt'): print('hash file not exists. writing hashes to hashfile...') fin_hash = '' - for a in range (4): + for a in range(4): hash_string[a] += ',' fin_hash += hash_string[a] with open('/etc/ultron-server/hashes.txt', 'a') as hashFile: @@ -89,10 +97,10 @@ def cmp_hashes(h1, h2, h3, h4, f1, f2, f3, f4): with open('/etc/ultron-server/hashes.txt', 'r') as hashFile: hashes = hashFile.read() hashFile.close() - for i in range (10): + for i in range(10): hashes = hashes.replace(',', '') print('comparing hashes...') - hash = hashes [digit1:digit2] + hash = hashes[digit1:digit2] if hashHash == hash: print('comparing hashes', colors.GREEN, 'successfull', colors.WHITE) print(f'--> file {fileArray[x]} {colors.GREEN} valid {colors.WHITE}') @@ -103,20 +111,16 @@ def cmp_hashes(h1, h2, h3, h4, f1, f2, f3, f4): digit1 += 64 digit2 += 64 + def main(): print('collecting information...') ultronPath = read_config() find_files() print('job done. quitting') -try: + +try: main() except Exception as error: print(colors.RED, error, colors.WHITE) sys.exit - - - - - -