ICE candidate gathering via STUN
The tool creates an RTCPeerConnection configured with a public STUN server, opens a data channel to force candidate gathering, and calls createOffer/setLocalDescription. Each event fired at onicecandidate carries a candidate string encoding an IP, port, and type (host, srflx, or relay). The tool parses these strings and lists every unique address exposed, independent of what the address bar or VPN client reports.