Programación General > C/C++

 Re: troyano c (server-client)

(1/2) > >>

joaquinrg:
Hola, q tal? Alguien ha visto por ahi algun tutorial sobre como programar un pequeño troyano en c? lo he visto en vb pero no en c. Hace poco aprendi algo de programar con sockets programas cliente/servidor. Hice un programa que ejecutaba el comando q escribieras (en el cliente) en el server, pero no se como ver  el resultado de dicho comando en el cliente. Me dijeron q tengo q utilizar pipes o algo asi, pero no he encontrado informacion buena para windows. Alguien tiene algo? Gracias

chuidiang:
Mira a ver si tienes la funcion popen() (esta en C de linux, no se si windows la tiene.)

Esta funcion ejecuta un programa y te permite leer su salida. Algo asi como esto

FILE *salida;
salida = popen ("ejecutable.exe parametros", "r");

leyendo salida, lees la salida del ejecutable.

Esa salida tendrias que enviarsela al cliente a través del socket.

Se bueno.

joaquinrg:
Muchas gracias chuidiang, lo que me has puesto funciona bien en windows tambien. Este codigo funciona bien:
 
--- Código: Text --- #include <stdio.h> int main(){FILE *salida;salida = popen ("dir", "r");char linea[200];while( ! feof(salida) ){    fgets(linea, sizeof(linea), salida);    fputs(linea, stdout);}getchar();} 
Ahora que tendria q hacer?enviar salida al cliente por sockets,no? como? la forma que yo conozco es

send(socket, cadena, strlen(cadena), 0);
recv(socketcliente, cadena, 100, 0);

como puedo enviar salida, puesto q no es una cadena verdad? Gracias

joaquinrg:
Bueno, ya lo he conseguido, aunque un poco chapucero. He ido enviando y recibiendo cada linea cada vez q se escribia. Lo q pasa q antes de enviarlo tengo q saber cuantas lineas son para q el cliente sepa cuantas lineas tiene q recibir...

chuidiang:
Hay varias formas de hacerlo, como enviar una cadena especial que signifique fin de fichero.

Si quieres algo más serio, mira en www.geocities.com/chuidiang un apartado de cómo hacer mensajes para enviar por sockets. Deberías hacerte un mensaje de ida "ejecuta_comando" y un par de vuelta "toma_linea" y "fin_fichero".

Se bueno.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa