Solicitudes STUN IP para WebRTC (se rompe lo complicado del rastreo de las direcciones IP no validas a través de un Firewall en forma remota)

(PRUEBA DE CONCEPTO EN TIEMPO REAL)

Firefox y Chrome han implementado WebRTC que permiten peticiones para aturdir servidores que devolverá las direcciones IP locales y públicas del el usuario.

stum1
¿Qué es un servidor STUN?

Un STUN (Transversal Sesión de User Datagram Protocol [UDP] A través de la dirección de red Traductores [NAT]) servidor permite a los clientes NAT (es decir, Teléfonos IP detrás de un firewall) para configuración de llamadas telefónicas a un proveedor de VoIP alojada fuera de la red local.

———————————————————————————————————
Ahora coloque esta tecnología en un navegador Firefox y Chrome

Estos resultados de solicitud están disponibles para javascript, por lo que ahora pueden obtener unos usuarios de direcciones IP locales y públicas en javascript. Este demo es una implementación ejemplo de ello.

Además, estas solicitudes de STUN se hacen fuera del procedimiento normal de XMLHttpRequest, por lo que no son visibles en la consola de desarrollo o en condiciones de ser bloqueados por los plugins como AdBlockPlus o Ghostery. Esto hace que este tipo de solicitudes disponibles para el seguimiento en línea si un anunciante establece un servidor STUN con un dominio comodín.

stun

 

 

stum3

PRUEBA DE CONCEPTO EN TIEMPO REAL, (ACÁ PODRÁS VER DEMOSTRACIÓN DE LO PLANTEADO.)

RASTREAR TU IP VALIDA Y NO VALIDAD.

Código

Esta es la función de demostración anotada que realiza la petición STUN. Usted puede copiar y pegar esto en la consola de desarrolladores de Firefox o Chrome para ejecutar la prueba.


// Obtener las direcciones IP asociadas a una cuenta
de función getIPs ( devolución de llamada ) {
var ip_dups = {};

// Compatibilidad para firefox y chrome
var RTCPeerConnection = window .RTCPeerConnection
|| window .mozRTCPeerConnection
|| window .webkitRTCPeerConnection;
var mediaConstraints = {
opcionales : [{RtpDataChannels : verdaderos }]
};

// Firefox ya tiene un servidor predeterminado de aturdimiento en about: config
// media.peerconnection.default_iceservers =
// [{“url”: “paralizante: stun.services.mozilla.com”}]
var servidores = indefinido ;

// Agregar mismo servidor de aturdimiento para el cromo
si ( ventana .webkitRTCPeerConnection)
servidores = {iceServers : [{urls : ” paralizantes: stun.services.mozilla.com ” }]};

// Construir una nueva RTCPeerConnection
var pc = nuevos RTCPeerConnection (servidores, mediaConstraints);

// Detectar eventos candidatos
pc . onicecandidate = función ( hielo ) {

// Saltar eventos no candidatos
si (ice.candidate) {

// Partido sólo la IP address
var ip_regex = / ( [ 0-9 ] {1,3} ( \. [ 0-9 ] {1,3} ) {3} ) /
var ip_addr = ip_regex. exec (ice.candidate.candidate)[ 1 ];

// Eliminar duplicados
si (ip_dups [dir_ip] === indefinidos )
devolución de llamada (dir_ip);

ip_dups [dir_ip] = verdadero ;
}
};

// Crear un canal de datos falsos
pc.createDataChannel ( ” ” );

// Crear una oferta SDP
pc.createOffer ( función ( resultado ) {

// Activar la petición del servidor de aturdimiento
pc.setLocalDescription (resultado, la función () {}, la función () {});

}, la función () {});
}

// Prueba: Imprimir las direcciones IP en la consola
getIPs ( función ( ip ) { consola .log (ip);});


CÓDIGO FUENTE PRINCIPAL ( PARA AVANZADOS)

 

Leave a Comment