elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  enviar paquetes por socket que ya existe
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: enviar paquetes por socket que ya existe  (Leído 3,349 veces)
while

Desconectado Desconectado

Mensajes: 24


Ver Perfil
enviar paquetes por socket que ya existe
« en: 30 Septiembre 2010, 20:46 pm »

Hola, expongo mi caso:
Tengo un ejecutable (hace de cliente)(no dispongo del código fuente).
Para añadirle funcionalidades al mismo, uso una dll que inyecto al propio ejecutable.
Tengo un servidor.

Entonces:
(Desde la DLL) Quiero enviar un paquete al servidor, por un socket ya existente.
Ese socket lo crea el propio cliente en el momento que el usuario escribe su usuario y contraseña y le da a enviar. (y se establece la conexión con el servidor)

Entonces,
para enviar el paquete, primero debo saber cuando se ha establecido la conexión.
Deberia hacer un hook a recv?
una vez pillo que se ha enviado el paquete 0x01, como envio yo el buf "hola" por el mismo socket?
Deberia hacer: ?

int bytesSent;
char sendbuf[32] = "hola";

bytesSent = send( ConnectSocket, sendbuf, strlen(sendbuf), 0 );
ahora bien, necesito sacar el ConnectSocket ya existente, ya que si hiciese SOCKET ConnectSocket; estaria creando uno nuevo y no es lo que busco.
Busco usar uno ya existente. (y como siempre cambia, no se como podria pillarlo ¿algun ejemplo?)

Saludos y muchas gracias.


« Última modificación: 30 Septiembre 2010, 20:49 pm por while » En línea

bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: enviar paquetes por socket que ya existe
« Respuesta #1 en: 30 Septiembre 2010, 22:16 pm »

lo mejor es que depures el programa y veas donde guarda el descriptor del socket, despues solo tienes que enviar los datos.


En línea

while

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Re: enviar paquetes por socket que ya existe
« Respuesta #2 en: 30 Septiembre 2010, 23:07 pm »

hola ctlon, muchas gracias por responder.

Edito:
Bueno, he programado un cliente y un servidor sencillos para comprobar comportamientos, y asi poder entender mejor si me explicais:

Comun en el cliente y el servidor:
Código:
static char bufrecibir[2048];
char *bufenviar;


Servidor:
Código:
// enviar bienvenida.
bufenviar = "bienvenido al servidor";
send (comunicacion,bufenviar, strlen(bufenviar), 0);

// recibir gracias.
recv(comunicacion,bufrecibir,sizeof(bufrecibir), 0);
memset (bufrecibir, 0, sizeof (bufrecibir));

// enviar de nada.
bufenviar = "de nada";
send (comunicacion,bufenviar, strlen(bufenviar), 0);


Cliente:
Código:
// recibir bienvenida.
recv(comunicacion,bufrecibir,sizeof(bufrecibir), 0);
memset (bufrecibir, 0, sizeof (bufrecibir));

// enviar gracias.
bufenviar = "gracias";
send (comunicacion,bufenviar, strlen(bufenviar), 0);

// recibir de nada.
recv(comunicacion,bufrecibir,sizeof(bufrecibir), 0);
memset (bufrecibir, 0, sizeof (bufrecibir));

Aqui por ejemplo haciendo un cout << comunicacion;
este me devuelve 120, por lo este es el decriptor (rectificarme si me equivoco)

Ahora bien, y si yo quito del cliente la parte 2 (enviar gracias)
// enviar gracias.
bufenviar = "gracias";
send (comunicacion,bufenviar, strlen(bufenviar), 0);

como hago para que esto, lo envie la dll inyectada?
quizas con:
send (120,"gracias", strlen("gracias"), 0);
?
y como puedo saber en la dll, que el cliente ha recibido la bienvenida? (para saber en que momento ha de enviar la dll claro)


Edito de nuevo:

he puesto en el cliente:
// enviar gracias.
LoadLibrary( "dll.dll" );

y en la dll tengo:
send (112,"gracias desde la dll", strlen("gracias desde la dll"), 0);
printf("Mensaje enviado\n");
y se envia.

Ahora, como puedo cargar el LoadLibrary( "dll.dll" );
al inicio del programa, y hacer que el dll sepa cuando enviar las gracias?

Edito otra vez:
Como podria ver el descriptor con wireshark?
« Última modificación: 2 Octubre 2010, 01:55 am por while » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Enviar paquetes TCP/IP
Programación C/C++
soyloqbuskas 8 11,046 Último mensaje 15 Enero 2013, 10:36 am
por Eternal Idol
Ayuda error al enviar imagen por socket C#
.NET (C#, VB.NET, ASP)
boy-ka 3 4,232 Último mensaje 25 Junio 2015, 06:54 am
por El Benjo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines