import socket # Updated connection details HOST = "netsec.net.in.tum.de" PORT = 20103 def get_flag(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((HOST, PORT)) sf = s.makefile("rw") # we use a file abstraction for the sockets full_message = [] collecting = False while True: try: message = sf.readline() if not message: break message = message.rstrip("\n") print(f"Server says: {message}") if "team number" in message.lower(): sf.write("153\n") sf.flush() elif "In this challenge" in message: collecting = True full_message = [message] elif collecting: full_message.append(message) if "solution" in message.lower(): answer = '[("192.168.0.126", "8.8.8.8", "udp", 53836, 53), ("192.168.0.126", "31.192.117.132", "tcp", 41160, 80), ("73.73.73.73", "192.168.0.20", "tcp", 38451, 23), ("192.168.0.126", "54.54.54.54", "tcp", 57020, 25)]' sf.write(answer + "\n") sf.flush() collecting = False full_message = [] except socket.timeout: continue except (EOFError, ConnectionError) as e: print(f"Connection error: {e}") break sf.close() s.close() if __name__ == "__main__": get_flag()