Buenas, en muchos sitios se dice cómo es posible obtener la IP de un contacto de Messenger enviándole un fichero y mirando con netstat las conexiones.
Aquí voy a mostrar cómo es posible hacerlo sin enviar ningún fichero. Y obtener no solo la IP pública sino también las IPs internas de sus adaptadores de red. Se hará de forma manual, usando netstat, después usando Wireshark y por último expondré un programa que he realizado que automáticamente muestra las IPs de los contactos según se van obteniendo.
Lo primero que debemos saber es cómo funciona Messenger por encima. La autenticación la realiza conectándose a los servidores de Microsoft vía SSL. Una vez autenticado todas las conversaciones pasan por los servidores de Microsoft sin ningún tipo de cifrado (así que cuidado con utilizar Messenger en redes inseguras).
Un tema aparte es como se envían entre los contactos ficheros, imágenes, avatares y emoticonos. Para ello Messenger utiliza un protocolo p2p. Así que cuando un contacto solicita por ejemplo nuestro avatar se inicia una negociación entre nosotros y el contacto para ver cómo es posible realizar la conexión. En este punto ambas partes se intercambian las IPs internas y externas, puertos, tipo de conexión, si usamos NAT, UPnP, etc…
En en este punto a donde podemos aprovecharnos para saber la IP del otro contacto.
Con netstat
La opción más fácil es utilizar netstat para monitorizar las conexiones y ver las nuevas conexiones que realiza el proceso del Messenger. Vamos a ello. Todo desde la consola.
El proceso encargado de las comunicaciones de Messenger es wlcomm.exe. Así que obtenemos su PID:
tasklist | find "wlcomm.exe"
Ahora con el PID podemos filtrar la salida de netstat para quedarnos solo con las conexiones que realiza dicho proceso(requiere permisos de administrador):
netstat -nabo | find "PID_ENCONTRADO"
Ahora en este punto iniciamos una conversación con el contacto del que nos interesa saber la IP y le enviamos un emoticono personalizado, para no levantar sospechas lo mejor es un emoticono transparente o blanco. Se iniciará la negociación entre los dos clientes y se iniciará la conexión. Volvemos a lanzar el comando anterior y veremos una nueva conexión de nuestro contacto.
Con Wireshark
Vamos a filtrar los paquetes obtenidos por Wireshark para quedarnos con aquellos donde se realiza la negociación entre dos contactos. De ahí cogeremos la IP externa y las internas.
Wireshark ofrece el filtro “msnms” para quedarnos con los paquetes del procolo de Messenger.
Mirando paquete a paquete en uno de ellos encontraremos algo así:
Fijaos en estas cadenas:
“srddA-lanretxE4vPI” Dando la vuelta a la cadena: IPv4External-Addrs
“srddA-lanretnI4vPI” –> IPv4External-Addrs
En esos campos se muestran las IPs y puertos donde se debe realizar la conexión. Claro que hay que darles la vuelta. Mirando el campo “From:” sabremos de que contacto es la IP.
Ir mirando los paquetes uno a uno buscando estos campos no parece muy divertido. Es mas cómodo hacer un filtro que busque en todo el paquete la cadena “srddA-lanretxE4vPI” o “stroPdnAsrddAlanretxE4vPI” (que es otra de las formas en las que aparece).
Este es el filtro que se queda con los paquetes que nos interesan:
frame[0:] contains 73:74:72:6f:50:64:6e:41:73:72:64:64:41:6c:61:6e:72:65:74:78:45:34:76:50:49:3a:20:36:34:37:33:3a:31:39:2e:35:30:31:2e:39:34:2e:35:38:0d:0a or frame[0:] contains 73:72:64:64:41:2d:6c:61:6e:72:65:74:78:45:34:76:50:49
Con mi programa “GetMSNIPs”
Usando Wireshark con el filtro se pueden obtener las IPs de una manera bastante cómoda. Pero me apetecía hacerlo un poco mas sencillo y ya de paso programar algo usando WinPcap.
El resultado es este programa que ahora expongo, le he llamado GetMSNIPs, me encantan los nombres originales. No pongo el código aquí que son 300 líneas.
GetMSNIPs: Source y binario.
Una captura de cómo funciona:
Modo de uso:
-
Si no tiene instalado WinPcap, instálelo!.
-
Arranque “GetMSNIPs” y seleccione la interfaz con la que se conecta a internet.
-
Inicie Windows Live Messenger y cámbiese de avatar, utilice uno que no haya usado antes (así sus contactos no lo tendrán y se iniciará una conexión P2P para su envío).
-
Espere un tiempo ó inicie conversaciones con sus contactos para forzar a que carguen su avatar y capturar así su IP.
Así que ya sabéis, si usáis Windows Live Messenger estas diciendo a tus contactos tu dirección IP. No es un gran problema, pero está bien saberlo.
Saludos!
Muy buena idea. Me estaba planteando hacer algo parecido pero con el servicio de PunkBuster, el otro dia detecte una salida un poco excesiva de datos 9/10 Kbps constantes, sin estar haciendo nada... me temi lo peor y al mirar, encontre una cantidad bestial de procsesos PBS.exe (o asi no recuerdo las 3 letras...) lanzando datos como un loco, al investigar resulto k tenia abierto un juego en red y punkbuster estaba mandando comunicacion con todos los usuarios de mi lista de amigos (mantener sus estados, enviarles el mio, etc...) Asi que pense en hacer algo parecido a lo que tu propones con MSN, pero sobre punkbuster. En el Perfmon.exe del sistema pude apreciar k filtrando por el proceso de punkbuster, aparecia una extensisima lista de IPs asociadas, que punkbuster habia creado un hilo para cada uno de ellos, y que estos eran usuarios de la red vinculados a mi cuenta...
ResponderEliminarCrees que podria aprovechar tu mismo planteamiento/proceso para al igual que con MSN uan vez localizada la conex, obtener IPs y valores de cada usuario con el que estoy conectado durante una partida?
Muchas gracias de antemano.
G.
Si, es posible. Tendrías que mirar el protocolo que use Punkbuster para saber la IP de tus contactos y así poder asociar una IP a un contacto.
ResponderEliminarEsta muy bien perfmon, a ver si me acostumbro a usarlo jeje.
Gracias a ti.
Máquina!! te metiste una buena panzada a currar ayer por lo que veo!
ResponderEliminarVendrá de lujo para la próxima con ganas de guarrerías jaja
Saludos!
Excelente trabajo,muchas gracias por el articulo.
ResponderEliminarBuena entrada, gracias por el artículo y el código.
ResponderEliminarSaludos
Hola cuando lo ejecuto no me muestra ninguna interface
ResponderEliminarY si estoy usando Tor ? igual sale mi IP? Gracias
ResponderEliminar@Juan es un programa por consola. Tienes que ejecutarlo desde cmd.exe
ResponderEliminar@Anónimo Si configuras MSN para que use Tor saldrá la IP pública de un nodo Tor.
Gracias @German, @LeGNa!
Muy interesante el aporte. Muchas gracias!
ResponderEliminarInteresante, pero he probado hablando con dos contactos y con el filtro de Wireshark, y sólo me aparecen mis direcciones IP (ext./int.), pero las del contacto no. Además, sólo me ha salido con uno de los contactos, estando en conversación con 2.
ResponderEliminarCon el programa al efecto, no he conseguido que saliese ningún dato, cambiando entre las tres opciones de conexión de red.
Incluso mostrando una imagen a un contacto, no me ha salido nada.
@Anónimo: Supongo que tenías activo Wireshark desde antes de conectar a Messenger. Sino puede que se haya intercambiado las IPs con ese contacto antes de que hayas activado Wireshark. Una vez que se han intercambiado no se vuelven a enviar a no ser que reinicies MSN Messenger. Por eso ves la de un contacto y no la del otro.
ResponderEliminarPor otro lado los dos contactos de los que hablas tienen que usar MSN Messenger. He probado con otro cliente de Messenger, digsy, y no se intercambian las IPs.
El programa funciona como el filtro de wireshark (a no ser que haya implementado algo mal), así que los resultados que obtienes con el filtro deberías obtenerlos con el programa.
Puede que el hecho de que no encuentres ninguna IP con el programa se deba a que lo arrancaste después de haber iniciado la conversación con los 2 contactos y haberte cambiado el avatar. Por lo que ya se habían intercambiado las IPs.
Por último no entiendo exactamente como funciona el protocolo P2P del MSN Messenger, así que podría suceder que en alguna ocasión no se intercambien las IPs porque uno de los clientes no puede iniciar ni recibir conexiones, y se envié el archivo/avatar/emoticono a través de servidores de Microsoft.
Espero que con esto puedas hacerlo funcionar.
Saludos!
Hola Thor, comentas que requiere que sea la aplicacion MSNMessenger, que pasa si se utiliza la interfaz web? (Conectarse a travez de messenger integrado en la pagina)?
ResponderEliminarSi un contacto tuyo utiliza la interfaz web no podrás saber su IP tampoco.
ResponderEliminarHe arrancado el GetMSNIP antes de iniciar sesión, he cerrado sesión antes de cambiar de interface de red, he iniciado GetMSNIP despues de iniciar sesión; he cambiado foto a nuevas, he hecho que mi contacto cambie foto.
ResponderEliminarEl GetMSNIP no ha cambiado el mensaje :(
WinPcap 4.0.2, Windows Vista Home Premiun SP2, WLM 2009 14.0.nnnn, y mis contactos con el WLM ultima versión, supongo que es tontería probar en linux.
(@Anonimo que no le funcionaba)
Lo del interface de red es porque me salen 3, broadcom, microsoft y tunnel; había que probarlas todas
ResponderEliminarhola estaba viendo el articulo de verdad que muy interesante,pero tengo una duda usando el “GetMSNIPs” y es que no me funciona cuando dice que elija la interfaz, me podrías explicar un poco eso.
ResponderEliminarGracias
@Nicky69es que raro :S Yo solo lo he probado en mi equipo. Aun así no te fíes demasiado del programa, fíate mas de lo que diga WireShark. Es el primer programa que hago con winpcap no se si habré hecho algo mal.
ResponderEliminarSería perfecto si pudieses enviarme la captura del wireshark con el filtro msnms para intentar averiguar que es lo que sucede. Si quieres contacta conmigo via twitter o te dejo el correo.
@Christian Dj en esa parte solo tienes que seleccionar la interfaz que usas para acceder a internet poniendo el número que aparece a la izquierda, 1, 2, 3. ¿Qué es lo que no funciona de esa parte?
Un saludo!
En mi placa de red inalámbrica, una Atheros AR5006X funcionando en Windows Server 2008 R2, da el siguiente error:
ResponderEliminar"Unable to open the adapter. \Device\NPF_{blablabla} is not supported by WinPcap".
No funcionaba porque iniciaba la captura en modo promiscuo, cosa que a los efectos de esta aplicación se puede ignorar. Al que le surja este error, tiene que seguir estos pasos.
* Descomprimir el código fuente
* Abrir el proyecto GetMSNIPs.sln en Visual Studio
* En el archivo GetMSNIPs.cpp, línea 165, se declaran los parámetros con los que se inician la captura PCAP. Cambien el valor 1 por 0, y apreten F7. El nuevo ejecutable se va a generar en la carpeta Releases dentro de la carpeta del código fuente.
Ejecuten la aplicación recién compilada y elijan otra vez la interfaz, a mi me funcionó correctamente.
Me tomé el atrevimiento de traducir la aplicación y compilar la herramienta (Thor: he dejado constancia tu autoría en el ejecutable) con el código fuente modificado. Está en http://inner-core.org/GetMSNIPs.zip
Muchas gracias manu^^, desconocía que pudiese dar problemas el modo promiscuo.
ResponderEliminarSaludos!
¡Felicidades Thor! Esto no se hace en cinco minutos...
ResponderEliminarUn abrazo, buenísimas entradas!
Excelente sin duda eres un crack amigo, llevaba tiempo sin ver tus ideas que son de gran calidad se te extraña en tu foro
ResponderEliminar(Simpl3x)
En interface que pongo? :(
ResponderEliminarUn número, 1, 2 ó 3 que corresponde a la interfaz de red que se usa para "salir a internet".
ResponderEliminarSuerte!
Ola no se si lo estoy haciendo mal, pero los pasos que hago son estos.
ResponderEliminar1- Inicio el GetMSNIP y selecciono la interfaz
2- Inicio sesion y cambio mi avatar y establesco la conversacio con una amigo pero nada que captura la ip
@Gustavo haces todo bien, debería funcionarte. Desconozco por que no te funciona :(
ResponderEliminarPfff!, este chico es la leche, una pasada, uno de los pocos españoles que admiro (y no se ilusionen que el Chema no está en mi lista).
ResponderEliminarJamás imaginé que regresaría con tremenda furia y calidad de material, realmente te admiro THOR, y venga como esto de saber las IP's ha logrado 25 COMENTARIOS... Mmmm como que "amigos-amigos" NO TENEMOS EN EL MSN, espías confesadlo!!!.
Sinceramente me pareces una maquina!!
ResponderEliminarNunca lo hubiera averiguado.
Gracias!
Gracias Digit0 y..."jose -anuncios eroticos" ¿? vaya nick jaja
ResponderEliminarEste comentario ha sido eliminado por un administrador del blog.
ResponderEliminarEres un crack. Gracias por tu tiempo y el aporte. Vas a llegar lejos tio!
ResponderEliminarHola primero que nada muchas gracias por la info es muy útil, segundo los link de GetMSNIPs murieron después de lo que paso con megaupload me imagino.
ResponderEliminarSe agradeceria mucho si fuera posible su re-subida pero si no es posible con los otros dos métodos quedamos muy bien :P
saludos y muchas gracias
No me funciona che! probe abriendo el msn antes y despues del getmsnips pero nada, solo me figura una conexion a intenet y no loguea nada, anda a saber. Y con wireshark tb probe y me guarda registros de todo lo q hace el messenger pero no me figuran las ips, solo registros con datos, probe usar el filtro que posteaste y me filtra todo, o sea, no figura nada. Tendra algo que ver la version instalada del messenger? Otra cosa, ahora en la version nueva del messenger se puede chatear con otras redes sociales, se podra utilizar el metodo para obtener las ips de facebook por ejemplo? Saludos!
ResponderEliminar@Cristian: Arreglado en enlace, maldito multiupload, me ha fallado!
ResponderEliminarhttp://www.informatica64.com/descargas/GetMSNIPs.zip
@Anónimo: Lo acabo de probar con Windows Live Messenger 2011 Compilación 15.4.3538.513 y me ha funcionado. con otros clientes de Messenger dudo que funcione y con otras redes de mensajería no funcionará es algo del protocolo privado de MSN Messenger.
Saludos!
Gracias por contestarme! en el wireshark debajo de estas cadenas: “srddA-lanretxE4vPI” y “srddA-lanretnI4vPI” me sale IPv6-Addrs: y IPv6-Port: (y 2 direcciones de IPV6, una mia y la otra no la puedo decodificar). Tengo exactamente la misma version de messenger y nada.
ResponderEliminarEn el getmsnips solo me figura 1 sola "red", en el ejemplo q vos pusiste figuran 2 y una dice y otra , en mi caso figura una sola. Sera problema de la placa de red?
Saludos!
Yo de nuevo, me sale esto nada mas:
ResponderEliminarlistening on Intel 82579V Gigabit Network Connection...
Solo Eso.
@Lokillo lo que pasa es que no es compatible con IPv6, de momento solo soporta IPv4. Miraré si es muy complicado añadir IPv6.
ResponderEliminarPor lo demás es normal que te salga solo una interfaz de red si solo tienes una en tu equipo.
Un saludo!
Lo que no comprendo bien es porque a vos te figura (va..te llega desde el servidor de microsoft) una ipv4 y a mi me llega una IPv6. Tendra que ver donde estara registrada la cuenta?
ResponderEliminarSi te puedo ayudar en algo decime
A mi no me funciona el GetMSNIPs ... me sale solo lo de listening on .... y después ni enviando emoticonos personalizados ni nada ... no sale nada en la consola .... Por cierto, con el Wireshark tampoco me sale, envio emoticono y no aparece por ningún lado la cadena "IPv4External-Addrs" ... tampoco ninguna linea de captura de msnms que ponga lo de "NFY PUT " solo sale "MSG" "QNG" "PNG" "ACK" ... probado en windows live messenger 2009 sobre windows xp ... Alguna ayuda por favor ?
ResponderEliminarHola, bueno he probado el programa, previamente he instalado la ultima version del winpcap de su pagina oficial, GetMSNIPs, selecciono mi unica interface de red y alli se queda, entro en el Messenger, cambio mis avatares por unos nuevos descargados de internet y no sale nada. Sera por qe tengo Windows 7 de 64 bits??
ResponderEliminarAlguien lo ha probado en Win7 x64??
Gracias por su ayuda.
A mi me pasa lo mismo, instalo el Winpcap y nada, se queda después de seleccionar la tarjeta .... incluso no funciona ni el Wireshark por lo que postee antes .... a ver si viene alguien que le haya funcionado y nos saca de dudas .... probado en windows live messenger 2009 sobre windows xp
EliminarHola Thor, está muy bueno tu programa. Sería genial si le agregaras la función de leer los paquetes desde un archivo de captura pcap. Muchas gracias
ResponderEliminarAlguien lo ha hecho funcionar por favor ? Que diga qué sistema operativo tiene y el messenger a ver si así lo podemos hacer funcionar :S
ResponderEliminarHola Thor!! me gustaría saber como cambio la ip de thor. Por que cuando activo thor con el botón, me genera una ip nueva, pero cuando desconecto y vuelvo a conectar sigue utilizando la misma ip, quería saber si hay una forma de cambiar la ip manualmente, o si el sistema la cambia automáticamente.
ResponderEliminarno he podido descargar la GetMSNIPs la pag no carga hay otra fuente ??
ResponderEliminar¿si se usa vpn se podrá o no ver la otra ip?
ResponderEliminar