Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Sockets abiertos

Estas en el tema de Sockets abiertos en el foro de C/C++ en Foros del Web. Hola me gustaría saber como podría leer, escribir y editar mensajes de un programa antes de que el los reciba o envié al destinatario en ...
  #1 (permalink)  
Antiguo 30/12/2015, 18:49
 
Fecha de Ingreso: diciembre-2015
Mensajes: 67
Antigüedad: 8 años, 4 meses
Puntos: 2
Sockets abiertos

Hola me gustaría saber como podría leer, escribir y editar mensajes de un programa antes de que el los reciba o envié al destinatario en C tanto en Windows como en Linux.
  #2 (permalink)  
Antiguo 30/12/2015, 19:05
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Sockets abiertos

Pues para empezar el procedimiento es diferente en Windows y en Linux.

Después te comento que hay paquetes, como los HTTP que tienen un tratamiento especial en Windows.

Además la gestión de los paquetes (insisto, en Windows) varía según la versión del SO.

Por otro lado en Linux la forma de hacerlo dependerá de la distro elegida.

¿Por donde quieres que empecemos?

Un consejo: Busca esta información en Internet que como has podido ver no es algo que se pueda explicar de forma decente en un foro.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.
  #3 (permalink)  
Antiguo 31/12/2015, 07:36
 
Fecha de Ingreso: diciembre-2015
Mensajes: 67
Antigüedad: 8 años, 4 meses
Puntos: 2
Respuesta: Sockets abiertos

En cunato a los paquetes HTTP no es para eso, quisiera hacerlo con el puerto 5451 para un pequeño programa que traduzca un chat bidireccionalmente antes de ser enviado.
  #4 (permalink)  
Antiguo 31/12/2015, 16:34
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: Sockets abiertos

¿Y si haces un hook a las funciones del api encargadas de gestionar eso? Como yo lo veo quizás sea lo mejor, o sea que todo el tráfico que entre por ese puerto para tu programa lo lees primero en el código del hook y luego ejecutas el código normal de las funciones pero con las cadenas ya traducido.
Si el chat lo has hecho tu podrías modificar el código para preprocesar los mensajes antes de mostrarlos.
Mira esto: http://www.binarytides.com/winsock-s...ming-tutorial/
Cómo ves usa send para enviar y recv para recibir así que con un hook a cada una podrías enviar los parámetros que quisieras.
Puedes ver esto: http://stackoverflow.com/questions/3...king-send-recv
Y solo necesitarías crear esa dll e inyectarla y ya casi lo tendrías listo a falta de lo que quieras cambiar o añadir.

Última edición por aguml; 31/12/2015 a las 17:20
  #5 (permalink)  
Antiguo 01/01/2016, 12:38
 
Fecha de Ingreso: diciembre-2015
Mensajes: 67
Antigüedad: 8 años, 4 meses
Puntos: 2
Respuesta: Sockets abiertos

Alguien tendrá un ejemplo para linux.
  #6 (permalink)  
Antiguo 01/01/2016, 16:57
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Sockets abiertos

Cita:
Iniciado por sanandresm Ver Mensaje
Alguien tendrá un ejemplo para linux.
Has probado a buscar en Google??
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.
  #7 (permalink)  
Antiguo 01/01/2016, 19:35
 
Fecha de Ingreso: diciembre-2015
Mensajes: 67
Antigüedad: 8 años, 4 meses
Puntos: 2
Respuesta: Sockets abiertos

E buscado en todas las paginas que salieron y con diferentes palabras claves y no e podido encontrar para linux.
  #8 (permalink)  
Antiguo 02/01/2016, 04:25
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: Sockets abiertos

Yo en Linux ya no te puedo ayudar ya que los hocks que he hecho son todos en windows y, menos el de teclado, todos han sido usando una dll inyectada y, hasta donde yo se, las dll son cosa de Windows y en Linux se deberá usar algo similar pero no se. Debes buscar información sobre cómo crearte una librería en Linux y como inyectarla en esa plataforma y sobre el api usada por linux para enviar y recibir datos a través de sockets.
En 5 minutos encontré esto: https://youtu.be/ItAH3-xImXk
Seguro que con más tiempo y lo que se ve en el video te ayuda a ir desenreda do la madeja y lo consigues y espero que cuando lo consigas compartas un tutorial de como lo conseguiste para poder ayudar a otros.

Última edición por aguml; 02/01/2016 a las 04:51
  #9 (permalink)  
Antiguo 02/01/2016, 05:53
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 2 meses
Puntos: 27
Respuesta: Sockets abiertos

Cita:
Iniciado por sanandresm Ver Mensaje
E buscado en todas las paginas que salieron y con diferentes palabras claves y no e podido encontrar para linux.
Es escribir "tutorial socket linux" en Google y te salen una burrada de ejemplos similares que te pueden ayudar y por regla general la mayoría de distros de linux traen la propia documentación sobre esto incorporada, es cuestión de pararse 5 segundos a buscar. Para mí (hablo de Ubuntu) es abrir un terminal y escribir:

Código Terminal:
Ver original
  1. man 7 socket

Y puedo ver una explicación general de la API para socket de Linux. Y si quiero profundizar en una de las funciones nombrefuncion(2) tan simple como escribir

Código Terminal:
Ver original
  1. man 2 nombrefuncion

El único problema que puedes llegar a tener es que no comprendas inglés, pero si te dedicas a la programación, definitivamente necesitas aprender inglés. Como puedes ver no hace falta ni buscar por internet... Es cuestión de pararse a buscar 5 segundos simple y llanamente.
  #10 (permalink)  
Antiguo 02/01/2016, 11:39
 
Fecha de Ingreso: diciembre-2015
Mensajes: 67
Antigüedad: 8 años, 4 meses
Puntos: 2
Respuesta: Sockets abiertos

Si pero es que yo quiero que sea un programa aparte y no una librería y que mientras este ejecutado el espere a que se abra el puerto determinado y que mientras este abierto el proceso todos los mensajes de salida o entrada como un cortafuegos.

Etiquetas: sockets
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:33.