RTCIceCandidate no longer returning IP

rtcicecandidate pairstats
webrtc
webrtc local ip
chrome webrtc disable mdns
webrtc tutorial
webrtc get local ips
enable-webrtc-hide-local ips-with mdns
anonymize local ips exposed by webrtc

Just noticed that on Chrome only, RTCIceCandidate no longer returns an IP, but rather an obfuscated address.

RTCIceCandidate 
address: "a5b3ef18-2e66-4e24-91d2-893b93bbc1c1.local"
candidate: "candidate:169888242 1 udp 2113937151 a5b3ef18-2e66-4e24-91d2-893b93bbc1c1.local 47871 typ host generation 0 ufrag 7dHv network-cost 999"
component: "rtp"
foundation: "169888242"
port: 47871
priority: 2113937151
protocol: "udp"
relatedAddress: null
relatedPort: null
sdpMLineIndex: 0
sdpMid: "0"
tcpType: ""
type: "host"
usernameFragment: "7dHv"

Notice the first property of RTCIceCanadate is "address", and "ip" is no longer part of this object.

The following code determines the local IP address of a browser. Still works on MOZ.

function discover()
{
    try{
        //Get Local IP
        window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;   //compatibility for firefox and chrome

        if (pc)
            pc.close();

        pc = new RTCPeerConnection({iceServers:[]});   
        pc.onicecandidate = onIceCandidate;   
        pc.createDataChannel("");   
        pc.createOffer(pc.setLocalDescription.bind(pc), noop);   

    } catch (e)
    { console.log(e.message);}
}

function noop()
{
}

function onIceCandidate(ice)
{   
    console.log(ice.candidate);

    if(!ice || !ice.candidate || !ice.candidate.candidate)  return;

    var my_ip = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/.exec(ice.candidate.candidate)[1];

    this.onicecandidate = noop;

    ip = my_ip.split(".")[0]+'.'+my_ip.split(".")[1]+'.'+my_ip.split(".")[2];
}

Is WebRTC officially now a fractured standard? MOZ still lists "ip" as a member of RTCIceCandidate, with no mention of the "address" member that Chrome returns.

Is there a way to de-obfusucate the mDNS address back to an ip address without forcing users to mess around with browser settings they don't uderstand?

Chrome is not broken, the WebRTC standard is evolving to prevent sites from collecting local addresses by diverting the WebRTC API. If you used this hack to obtain local addresses, you might need to find another approach.

Here are the corresponding issues for Chromium and Firefox, and the current IETF draft for WebRTC mDNS candidates.

RTCIceCandidate.address, There's also this: "If the DNS query returns more than one IP address, one is No. Implementations should at a very low level only return the  Given the RTCIceCandidate's current configuration, toJSON() returns a DOMString containing a JSON representation of that configuration in the form of a RTCIceCandidateInit object. Examples For examples, see the article Signaling and video calling , which demonstrates the entire process.

The ip field got renamed to address in the W3C webrtc specification at some point since these days the field can contain either an IP address or a mdns hostname. What you are seeing is part of the rollout of the WebRTC host candidate obfuscation which is described ħere which is happening in Chrome 75. You can not decode this mdns hostname in the browser.

If you have a legitimate use-case you might want to ask for it to be considered in that mailing list thread.

rename RTCIceCandidate.ip to address? · Issue #1913 · w3c/webrtc , Just noticed that on Chrome only, RTCIceCandidate no longer returns an IP, but rather an obfuscated address. RTCIceCandidate address:  To manually update the hostname, login to your No-IP account and click Hosts/Redirects at the top left of the page. Next to the hostname that you need to update click “Modify”. On the next page, under the Hostname Information window, you will see a location to change the IP address.

You can disable this feature in Chrome goto chrome:://flags and disable "Anonymize local IPs exposed by WebRTC"

RTCIceCandidate object (Internet Explorer), is supported. Return to main site Microsoft makes no warranties, express or implied, with respect to the information provided here.] dictionary RTCIceCandidate { DOMString foundation; unsigned long priority; DOMString ip; RTCIceProtocol protocol; unsigned short port; RTCIceCandidateType type;  If you lost the IP PIN or didn’t receive one in the mail, visit Retrieve Your IP PIN. Paper Return: If you have an IP PIN, you’re the primary taxpayer, and you fail to enter your IP PIN correctly, your return will take longer to process while we validate the information.

WebRTC 1.0: Real-time Communication Between Browsers, If sdp is the empty string, or if it no longer accurately represents the offerer's Return the result of creating an RTCIceCandidate with candidateInitDict . If the local IP address value is not already exposed as part of a local  An RTCDtlsTransport object in the closed or failed states can be garbage-collected when it is no longer referenced. Since the Datagram Transport Layer Security (DTLS) negotiation occurs between transport endpoints determined via ICE, implementations of this specification MUST support multiplexing of STUN, TURN, DTLS and RTP and/or RTCP.

PSA: Private IP addresses exposed by WebRTC changing to mDNS , Summary WebRTC currently lets web applications discover private IP addresses to enable If the peer connection has either audio or video capture permission, IP addresses are returned in host candidates. The chrome client has no need to record video or audio, as a result I do get it being more complicated though. ifconfig Command Does Not Show IPv4 Address on Linux for wifi. You need to connect wifi. Here are some steps for connecting to a wireless network on Linux: Open the system menu from the right side of the top bar. Select Wi-Fi Not Connected. The Wi-Fi section of the menu will expand. Click Select Network.

RTCIceCandidate, The RTCIceCandidate interface of the the WebRTC API represents a Learn the Web · Tutorials · References · Developer Guides · Accessibility more docs Because this technology's specification has not stabilized, check the the relatedAddress is the IP address of the candidate that it is derived from. of my powerlessness, I no longer needed to use drugs. This acceptance of my condition—my powerlessness over addiction and the unmanageability of my life was the key to my recovery. With the help of the recovering addicts at NA meetings, I abstained—a minute, an hour, a day at a time. I still wanted to get high. Life felt intolerable without

Comments
  • This has been changed back in beta, but the production version of Chrome still has fractured WebRTC. The Chrome-WebRTC bug forum already has complaints from intranet service providers about this. Services as basic as network printing are now broken.
  • Thanks for raising this point.
  • Also noticed Google is discontinuing its own network printing service "Google Cloud Print", which relies on discovering local printer IPs.
  • It was not a hack, it was the standard default until it was arbitrarily switched 'because security reasons'. If you had actually read the standards, you would have known that. Chrome security policies are obviously unstable and make peer-to-peer stacks like WebRTC too risky for production. My advice to devs is to avoid Chrome if possible. Don't shoot the messenger.
  • Sorry, but RFC 5245 said collecting host IP candidates is not mandatory (actually, Safari does not do it by default for IPv4). RFC 8445 even states about the private IPv4 addresses in server reflexive candidates "These MAY be omitted or set to invalid values if the agent does not want to reveal them, e.g., for privacy reasons." I'm all for avoiding Chrome and switching to Firefox actually, however note that they are implementing the same mDNS candidates standard in Firefox.
  • Comments are not for extended discussion; this conversation has been moved to chat.
  • This presents the same problem. Web applications that now depend on mDNS hostnames will break if this new default is disabled. What would Torvalds say about arbitrarily changing platform default policies 'because security reasons'? Does anyone really expect users to be ok with being forced to mess around with Chrome internals?
  • This link github.com/meetecho/janus-gateway/issues/1692 will help you.