def main(): server_socket = socket.socket() server_socket.bind(("0.0.0.0", 8888)) server_socket.listen() print("The server is up and running") (client_socket, client_address) = server_socket.accept() print("Client is connected") while True: length = client_socket.recv(4).decode() valid_protocol = protocol.get_msg(length) if valid_protocol: cmd = client_socket.recv(int(length)).decode() valid_cmd, command, params = check_client_request(cmd) if valid_cmd: reply = handle_client_request(command, params, client_socket) client_socket.send(protocol.create_msg(reply).encode()) if command == "EXIT": break else: # prepare proper error to client response = 'Bad command or parameters' client_socket.send(protocol.create_msg(response).encode()) else: # prepare proper error to client response = 'Packet not according to protocol' client_socket.send(protocol.create_msg(response).encode()) client_socket.recv(1024) # close sockets print("Closing connection") client_socket.close() server_socket.close()
def main(): my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) my_socket.connect(("127.0.0.1", 8888)) print('Welcome to remote computer application. Available commands are:\n') print('TAKE_SCREENSHOT\nSEND_PHOTO\nDIR\nDELETE\nCOPY\nEXECUTE\nEXIT') # loop until user requested to exit while True: cmd = input("Please enter command:\n") try: if protocol.check_cmd(cmd): packet = protocol.create_msg(cmd) my_socket.send(packet.encode()) length = my_socket.recv(4).decode() valid = protocol.get_msg(length) if valid: serverResponse = my_socket.recv(int(length)).decode() handle_server_response(my_socket, cmd, serverResponse) if serverResponse == "bay": my_socket.close() break except TypeError: print("invalid commend") except IndexError: print("invalid commend")
def main(): # open socket with client server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((IP, protocol.PORT)) server_socket.listen() print("Server is up and running") (client_socket, client_address) = server_socket.accept() print("Client connected") # handle requests until user asks to exit while True: # Check if protocol is OK, e.g. length field OK valid_protocol, cmd = protocol.get_msg(client_socket) if valid_protocol: # Check if params are good, e.g. correct number of params, file name exists valid_cmd, command, params = check_client_request(cmd) if valid_cmd: # prepare a response using "handle_client_request" response = handle_client_request(command, params) # add length field using "create_msg" valid_response = protocol.create_msg(response) # send to client client_socket.send(valid_response) if command == 'SEND_PHOTO': # Send the data of the photo itself to the client with open(PHOTO_PATH, 'rb') as hfile: data = hfile.read() client_socket.send(data) if command == 'EXIT': break else: # prepare proper error to client response = 'Bad command or parameters' valid_response = protocol.create_msg(response) # send to client client_socket.send(valid_response) else: if cmd == 'EXIT': # Handle EXIT command, no need to respond to the client break # prepare proper error to client response = 'Packet not according to protocol' valid_response = protocol.create_msg(response) # send to client client_socket.send(valid_response) # Attempt to clean garbage from socket client_socket.recv(1024) print("Closing connection") server_socket.close() # Close sockets client_socket.close()
def main(): my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # open socket with the server my_socket.connect((IP, protocol.PORT)) # print instructions print('Welcome to remote computer application. Available commands are:\n') print('TAKE_SCREENSHOT\nSEND_PHOTO\nDIR\nDELETE\nCOPY\nEXECUTE\nEXIT') # loop until user requested to exit while True: cmd = input("Please enter command:\n") if protocol.check_cmd(cmd): packet = protocol.create_msg(cmd) my_socket.send(packet) handle_server_response(my_socket, cmd) if cmd == 'EXIT': break else: if cmd == 'EXIT': break print("Not a valid command, or missing parameters\n") print("Closing\n") my_socket.close() # Close socket
def handle_client_request(command, params, client_socket): if command == "DIR": files = glob.glob(params + "\*.*") print(glob.glob(params)) reply = "the dir contain :" + str(files) return reply elif command == "DELETE": os.remove(str(params)) reply = "the file is delited" + params return reply elif command == "COPY": params = params.split(" ") if param_valid(params[0]) & param_valid(params[1]): shutil.copy(params[0], params[1]) return "the operation done" elif command == "EXECUTE": valid = params.find(":") if valid > 0: params = r'' + params + '' print(params) subprocess.call([params], shell=True) return "the operation done" elif command == "TAKE_SCREENSHOT": image = pyautogui.screenshot() image.save(r'C:\screenServer.jpg') return "The server took a screenshot if you want to get the picture please enter - SEND_PHOTO " elif command == "SEND_PHOTO": filename = 'C:\screenServer.jpg' f = open(filename, 'rb') bytes = f.read() size = os.path.getsize(filename) size = str(size) client_socket.send(protocol.create_msg(size).encode()) client_socket.sendall(bytes) f.close() print("photo sent") return "The server sent a screenshot" elif command == "EXIT": return "bay"
def main(): # open socket with client server_socket = socket.socket() server_socket.bind(("0.0.0.0", protocol.PORT)) server_socket.listen() print("Server is up and running") (client_socket, client_address) = server_socket.accept() print("Client connected") # handle requests until user asks to exit while True: # Check if protocol is OK, e.g. length field OK valid_protocol, cmd = protocol.get_msg(client_socket) if valid_protocol: # Check if params are good, e.g. correct number of params, file name exists valid_cmd, command, params = check_client_request(cmd) if valid_cmd: if command == 'SEND_PHOTO': # Send size of length field size_of_pic = os.path.getsize(PHOTO_PATH) num_of_digits = len(str(size_of_pic)) size_msg = protocol.create_msg(str(num_of_digits).zfill(protocol.LENGTH_FIELD_SIZE)) client_socket.send(size_msg) # Send size of picture client_socket.send(str(size_of_pic).encode()) # Send picture try: img = open(PHOTO_PATH, 'rb') image = img.read(size_of_pic) if not image: break client_socket.send(image) img.close() except: client_socket.send(protocol.create_msg("Something went wrong")) return else: # prepare a response using "handle_client_request" response = handle_client_request(command, params) # add length field using "create_msg" response = protocol.create_msg(response) # send to client client_socket.send(response) if command == 'EXIT': break else: # prepare proper error to client response = 'Bad command or parameters' response = protocol.create_msg(response) # send to client client_socket.send(response) else: # prepare proper error to client response = 'Packet not according to protocol' response = protocol.create_msg(response) # send to client client_socket.send(response) # Attempt to clean garbage from socket client_socket.recv(1024) # close sockets print("Closing connection") client_socket.close() server_socket.close()