Jugando con netcat me he preguntado si es posible que dos procesos estén a la escucha del mismo puerto.
Creo que no es posible y las pruebas que he hecho dicen que no es posible, pero tengo mis dudas.
Creo que no :S, puedes hacer la prueba con un troyano, y escuchas el mismo puerto. Pero por si acaso qe alguien mas te confirme. Pero creo que no ;D
En windows:
Citar
netstat -a -b
Proto Dirección local Dirección remota Estado
TCP 0.0.0.0:135 dato000-PC:0 LISTENING
RpcSs
[svchost.exe]
TCP 0.0.0.0:445 dato000-PC:0 LISTENING
No se puede obtener información de propiedad
TCP 0.0.0.0:554 dato000-PC:0 LISTENING
[wmpnetwk.exe]
TCP 0.0.0.0:2869 dato000-PC:0 LISTENING
No se puede obtener información de propiedad
TCP 0.0.0.0:10243 dato000-PC:0 LISTENING
No se puede obtener información de propiedad
TCP 0.0.0.0:49152 dato000-PC:0 LISTENING
[wininit.exe]
TCP 0.0.0.0:49153 dato000-PC:0 LISTENING
eventlog
[svchost.exe]
TCP 0.0.0.0:49154 dato000-PC:0 LISTENING
[lsass.exe]
TCP 0.0.0.0:49155 dato000-PC:0 LISTENING
Schedule
[svchost.exe]
TCP 0.0.0.0:49156 dato000-PC:0 LISTENING
[services.exe]
TCP 0.0.0.0:49158 dato000-PC:0 LISTENING
[spoolsv.exe]
TCP 127.0.0.1:49157 dato000-PC:0 LISTENING
[ccSvcHst.exe]
TCP 127.0.0.1:49183 validation:49184 ESTABLISHED
[thunderbird.exe]
TCP 127.0.0.1:49184 validation:49183 ESTABLISHED
[thunderbird.exe]
TCP 127.0.0.1:49341 validation:49342 ESTABLISHED
[firefox.exe]
TCP 127.0.0.1:49342 validation:49341 ESTABLISHED
[firefox.exe]
TCP 192.168.0.4:139 dato000-PC:0 LISTENING
No se puede obtener información de propiedad
TCP 192.168.0.4:49207 gg-in-f16:imaps ESTABLISHED
[thunderbird.exe]
TCP 192.168.0.4:49234 gg-in-f16:imaps ESTABLISHED
[thunderbird.exe]
TCP 192.168.0.4:49235 gg-in-f16:imaps ESTABLISHED
[thunderbird.exe]
TCP 192.168.0.4:49237 gg-in-f16:imaps ESTABLISHED
[thunderbird.exe]
TCP 192.168.0.4:49238 gg-in-f16:imaps ESTABLISHED
[thunderbird.exe]
TCP 192.168.0.4:49525 mia04s04-in-f0:http ESTABLISHED
[opera.exe]
TCP 192.168.0.4:49526 mia04s04-in-f0:http TIME_WAIT
TCP 192.168.0.4:49529 mia04s04-in-f0:http TIME_WAIT
TCP 192.168.0.4:49531 ns93:http TIME_WAIT
TCP 192.168.0.4:49535 mia04s05-in-f0:http TIME_WAIT
TCP 192.168.56.1:139 dato000-PC:0 LISTENING
No se puede obtener información de propiedad
TCP [::]:135 dato000-PC:0 LISTENING
RpcSs
[svchost.exe]
TCP [::]:445 dato000-PC:0 LISTENING
No se puede obtener información de propiedad
TCP [::]:554 dato000-PC:0 LISTENING
[wmpnetwk.exe]
TCP [::]:2869 dato000-PC:0 LISTENING
No se puede obtener información de propiedad
TCP [::]:10243 dato000-PC:0 LISTENING
No se puede obtener información de propiedad
TCP [::]:49152 dato000-PC:0 LISTENING
[wininit.exe]
TCP [::]:49153 dato000-PC:0 LISTENING
eventlog
[svchost.exe]
TCP [::]:49154 dato000-PC:0 LISTENING
[lsass.exe]
TCP [::]:49155 dato000-PC:0 LISTENING
Schedule
[svchost.exe]
TCP [::]:49156 dato000-PC:0 LISTENING
[services.exe]
TCP [::]:49158 dato000-PC:0 LISTENING
[spoolsv.exe]
TCP [::1]:49159 dato000-PC:0 LISTENING
[ccSvcHst.exe]
UDP 0.0.0.0:500 *:*
IKEEXT
[svchost.exe]
UDP 0.0.0.0:4500 *:*
IKEEXT
[svchost.exe]
UDP 0.0.0.0:5004 *:*
[wmpnetwk.exe]
UDP 0.0.0.0:5005 *:*
[wmpnetwk.exe]
UDP 0.0.0.0:5355 *:*
Dnscache
[svchost.exe]
UDP 127.0.0.1:1900 *:*
SSDPSRV
[svchost.exe]
UDP 127.0.0.1:44301 *:*
[PnkBstrA.exe]
UDP 127.0.0.1:52146 *:*
SSDPSRV
[svchost.exe]
UDP 127.0.0.1:60325 *:*
[wmplayer.exe]
UDP 192.168.0.4:137 *:*
No se puede obtener información de propiedad
UDP 192.168.0.4:138 *:*
No se puede obtener información de propiedad
UDP 192.168.0.4:1900 *:*
SSDPSRV
[svchost.exe]
UDP 192.168.0.4:52144 *:*
SSDPSRV
[svchost.exe]
UDP 192.168.56.1:137 *:*
No se puede obtener información de propiedad
UDP 192.168.56.1:138 *:*
No se puede obtener información de propiedad
UDP 192.168.56.1:1900 *:*
SSDPSRV
[svchost.exe]
UDP 192.168.56.1:52145 *:*
SSDPSRV
[svchost.exe]
UDP [::]:500 *:*
IKEEXT
[svchost.exe]
UDP [::]:4500 *:*
IKEEXT
[svchost.exe]
UDP [::]:5004 *:*
[wmpnetwk.exe]
UDP [::]:5005 *:*
[wmpnetwk.exe]
UDP [::]:5355 *:*
Dnscache
[svchost.exe]
UDP [::1]:1900 *:*
SSDPSRV
[svchost.exe]
UDP [::1]:52143 *:*
SSDPSRV
[svchost.exe]
UDP [fe80::14e8:1a0d:e7c4:8e32%12]:546 *:*
Dhcp
[svchost.exe]
UDP [fe80::14e8:1a0d:e7c4:8e32%12]:546 *:*
Dhcp
[svchost.exe]
UDP [fe80::14e8:1a0d:e7c4:8e32%12]:1900 *:*
SSDPSRV
[svchost.exe]
UDP [fe80::14e8:1a0d:e7c4:8e32%12]:52141 *:*
SSDPSRV
[svchost.exe]
UDP [fe80::8424:de70:5044:9fc2%19]:546 *:*
Dhcp
[svchost.exe]
UDP [fe80::8424:de70:5044:9fc2%19]:1900 *:*
SSDPSRV
[svchost.exe]
UDP [fe80::8424:de70:5044:9fc2%19]:52142 *:*
SSDPSRV
[svchost.exe]
Tanto en localhost, como en loopback, como en direcciónes salientes y entrantes en la red, cada aplicación tiene asignado un puerto diferente.
Buenas,
No se si estoy mal, pero en un servidor tengo instalado ssh, y en el router abierto el puerto del ssh, de ahi abro un tunnel ssh desde "casa" y me conecto a la aplicacion que me interesa. ok.
Abro otro tunnel ssh para otra aplicacion, evidentemente, con otro puerto local, pero usando el mismo ssh.
en definitiva, tengos 2 tuneles creados con el mismo puerto, y 2 aplicaciones funcionando bien, con diferentes puertos locales.
No se si la pregunta era esta.
saludos
Cita de: annubis en 23 Septiembre 2012, 21:37 PM
en definitiva, tengos 2 tuneles creados con el mismo puerto, y 2 aplicaciones funcionando bien, con diferentes puertos locales.
Dices que usas dos tuneles con el mismo puerto. Y tienes dos aplicaciones en 2 puertos locales diferentes.... :¬¬
no, esas instancias son diferentes una de otra, para establecer una conexión con un pc usas un tunel, y para otro pc usas otro.
Creo que si que se puede usar el mismo puerto para dos conexiones y se puede conseguir con una variante del netcat mucho mas moderna y compleja, el socat. No puedo aseguraros que se puede hacer, porque no lo he probado, pero me suena de haber visto algún tutorial donde creaban dos conexiones en el mismo puerto con dos aplicaciones distintas con el socat, por ejemplo podias usar un navegador por el puerto 80 y a la vez una consola en el puerto 80.
Yo creo que se podría hacer siempre que ambas aplicaciones no utilizasen el mismo protocolo (una por UDP y otra por TCP).
EDIT: Rectifico. Creo que no se puede hacer. He puesto dos app a escuchar en el mismo puerto, una por TCP y la otra por UDP. Cuando se lanza una, estando ya la otra a la escucha, avisa que el puerto ya está en uso.
Cita de: moikano→@ en 23 Septiembre 2012, 22:47 PM
Creo que si que se puede usar el mismo puerto para dos conexiones y se puede conseguir con una variante del netcat mucho mas moderna y compleja, el socat. No puedo aseguraros que se puede hacer, porque no lo he probado, pero me suena de haber visto algún tutorial donde creaban dos conexiones en el mismo puerto con dos aplicaciones distintas con el socat, por ejemplo podias usar un navegador por el puerto 80 y a la vez una consola en el puerto 80.
claro pero, el navegador usa un protocolo html, y transporta paquetes con cabeceras IP creo yo. Y una aplicación pues, puede usar cualquier otra cosa.
Citarclaro pero, el navegador usa un protocolo html, y transporta paquetes con cabeceras IP creo yo. Y una aplicación pues, puede usar cualquier otra cosa.
Supongo que será algo así. Además las aplicaciones, aunque estén escuchando por un puerto si les llega un paquete que desconocen su compresión lo descartan, así que supongo (siempre supongo, alguna vez aseguro) que dos aplicaciones escuchando en un mismo puerto recibirán los mismos paquetes las dos, pero una rechazará un paquete que no tenga que ver con su conexión y aceptará el paquete que esté esperando, digo yo.
He hecho una prueba y parece ser que dos procesos no pueden escuchar por el mismo puerto.
Prueba:
Arranco el servidor web Apache escuchando por el puerto 80.
Intento poner netcat a escuchar en el mismo puerto
ncat -l -p 80
Retorna error:
ncat: bind to 0.0.0.0:80: Address already in use. QUITTING.
ó tmb:
ncat localhost -l -p 80
ncat: bind to 127.0.0.1:80: Address already in use. QUITTING.
Mirando documentacion de TCP/IP tmb parece que el standard no lo permite por definicion.
Solo se me ocurre que sea posible saltarse el standard buscando algun bug en el s.o.
He hecho una prueba y parece ser que dos procesos no pueden escuchar por el mismo puerto.
Prueba:
Arranco el servidor web Apache escuchando por el puerto 80.
Intento poner netcat a escuchar en el mismo puerto
ncat -l -p 80
Retorna error:
ncat: bind to 0.0.0.0:80: Address already in use. QUITTING.
ó tmb:
ncat localhost -l -p 80
ncat: bind to 127.0.0.1:80: Address already in use. QUITTING.
Mirando documentacion de TCP/IP tmb parece que el standard no lo permite por definicion.
Solo se me ocurre que sea posible saltarse el standard buscando algun bug en el s.o.
Has probado con el socat? con esa variante del netcat creo que si que se puede, pero los parametros no son tan sencillos como en el netcat original.
He probado con socat y tmb da error:
En una consola pongo a la escucha nc en el puerto 80 ejecutando:
nc -l -p 80
En otra consola ejecuto socat a ver que ocurre:
socat TCP4-LISTEN:80 TCP4:www.google.com:80
(este comando pone a la escucha al pc en el puerto 80 y el trafico que reciba lo redirige al server www.google.com por el puerto 80)
Y el resultado es:
2012/11/02 03:57:07 socat[2177] E bind(3, {AF=2 0.0.0.0:80}, 16): Address already in use
Segun dice el error, el puerto ya esta en uso y por tanto no puede hacer bind.
Hago la misma prueba pero usando solamente socat:
Me pongo a la escucha del puerto 80 redirigiendo a www.google.com:80:
socat TCP4-LISTEN:80 TCP4:www.google.com:80
Intento ponerme a la escucha otra vez por el puerto 80 pero redirigiendo a www.bing.com:
socat TCP4-LISTEN:80 TCP4:www.bing.com:80
Y de nuevo obtengo el mismo error:
2012/11/02 04:03:01 socat[2187] E bind(3, {AF=2 0.0.0.0:80}, 16): Address already in use
Por lo que parece, segun disegno de TCP/IP no es posible poner dos procesos a escuchar por el mismo puerto.
Curioso programa socat; dejo unos links para el que quiera saber mas de socat; es un netcat avanzado, con posibilidades de ssl, sockets, proxy, ...
http://www.netsecure.com.ar/2010/11/26/socat-con-ejemplos/
http://thehackerway.com/2011/08/10/herramientas-para-hacking-en-entornos-de-red-%E2%80%93-tipos-de-conexiones-avanzadas-con-socat-ssl-sockets-proxy-parte-iv/
http://thehackerway.com/2011/08/08/herramientas-para-hacking-en-entornos-de-red-%E2%80%93-conectividad-con-socat-parte-iii/
www.dest-unreach.org/socat/ (ing)