SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: joaquinrg en Martes 23 de Septiembre de 2003, 21:54

Título: Re: troyano c (server-client)
Publicado por: joaquinrg en Martes 23 de Septiembre de 2003, 21:54
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
Título: Re: troyano c (server-client)
Publicado por: chuidiang en Miércoles 24 de Septiembre de 2003, 08:46
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.
Título: Re: troyano c (server-client)
Publicado por: joaquinrg en Miércoles 24 de Septiembre de 2003, 11:20
Muchas gracias chuidiang, lo que me has puesto funciona bien en windows tambien. Este codigo funciona bien:
 
Código: Text
  1.  
  2. #include <stdio.h>
  3.  
  4. int main()
  5. {
  6. FILE *salida;
  7. salida = popen ("dir", "r");
  8. char linea[200];
  9. while( ! feof(salida) )
  10. {
  11.     fgets(linea, sizeof(linea), salida);
  12.     fputs(linea, stdout);
  13. }
  14. getchar();
  15. }
  16.  

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
Título: Re: troyano c (server-client)
Publicado por: joaquinrg en Miércoles 24 de Septiembre de 2003, 11:53
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...
Título: Re: troyano c (server-client)
Publicado por: chuidiang en Miércoles 24 de Septiembre de 2003, 14:55
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 (http://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.
Título: troyano c (server-client)
Publicado por: joaquinrg en Jueves 25 de Septiembre de 2003, 00:26
Gracias, ahora le doy un vistazo