import socket import threading from cryptography.fernet import Fernet # Generate key untuk enkripsi key = Fernet.generate_key() cipher_suite = Fernet(key) def handle_client(client_socket): try: # Terima data terenkripsi dari client encrypted_data = client_socket.recv(4096) # Dekripsi data data = cipher_suite.decrypt(encrypted_data) # Proses request (contoh: akses website) target_host, target_port = "www.example.com", 80 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as remote_socket: remote_socket.connect((target_host, target_port)) remote_socket.send(data) # Terima response dan kirim kembali ke client response = remote_socket.recv(4096) encrypted_response = cipher_suite.encrypt(response) client_socket.send(encrypted_response) except Exception as e: print(f"Error: {e}") finally: client_socket.close() def start_vpn_server(): server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(("0.0.0.0", 8888)) server.listen(5) print("[*] VPN Server listening on port 8888") while True: client, addr = server.accept() print(f"[*] Accepted connection from {addr[0]}:{addr[1]}") client_handler = threading.Thread(target=handle_client, args=(client,)) client_handler.start() if __name__ == "__main__": print("Key untuk enkripsi (simpan untuk client):", key.decode()) start_vpn_server()