|
Mostrar Mensajes
|
Páginas: [1]
|
4
|
Programación / Programación C/C++ / Re: mostrar en cliente el resultado de execvp de servidor
|
en: 20 Marzo 2018, 19:25 pm
|
servidor: #include <stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<unistd.h> #include<netinet/in.h> #include<stdlib.h> #include<netdb.h> #include<string.h> #include<arpa/inet.h> #include<signal.h> #define PUERTO 7777 int main() { struct sockaddr_in servidor; struct sockaddr_in cliente; int sock_servidor,sock_cliente; if((sock_servidor=socket(AF_INET,SOCK_STREAM,0))<0) { return -1; } servidor.sin_family=AF_INET; servidor.sin_port=htons(PUERTO); servidor.sin_addr.s_addr=INADDR_ANY; if((bind(sock_servidor,(struct sockaddr *)&servidor,sizeof servidor))<0) { return -1; } if(listen(sock_servidor,20)<0) { return -1; } int tam_cliente; char* ip_cliente; int puerto_cliente; char mensaje_cliente[20]; signal(SIGCHLD,SIG_IGN); while(1) { tam_cliente=sizeof cliente; sock_cliente=accept(sock_servidor,(struct sockaddr *)&cliente,&tam_cliente); if(sock_cliente<0) { return -1; } ip_cliente=inet_ntoa(cliente.sin_addr); puerto_cliente=ntohs(cliente.sin_port); printf("cliente conectado:%s:%d\n",ip_cliente ,puerto_cliente ); memset(mensaje_cliente ,0,sizeof mensaje_cliente ); //read(sock_cliente,&mensaje_cliente,sizeof mensaje_cliente); //printf("mensaje cliente:%s\n",mensaje_cliente); if(!fork()) { close(sock_servidor); dup2(sock_cliente,0); dup2(sock_cliente,1); close(sock_cliente); printf("introduzca comando:\n"); fgets(mensaje_cliente ,20,stdin ); printf("mensaje_cliente=\n%s",mensaje_cliente ); char *com[]={"ls","-l",NULL}; execvp(com[0],com); } close(sock_cliente); } return 0; }
cliente: #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<netdb.h> #include<unistd.h> #include<stdlib.h> #include<string.h> #define PUERTO 7777 int main() { struct sockaddr_in cli; struct sockaddr_in serv; int s_cliente,s_servidor; s_cliente=socket(PF_INET,SOCK_STREAM,0); if (s_cliente<0) { return -1; } cli.sin_family=AF_INET; cli.sin_port=htons(0); cli.sin_addr.s_addr=htonl(INADDR_ANY); if(bind(s_cliente,(struct sockaddr *)&cli,sizeof cli)<0) { return -1; } serv.sin_family=AF_INET; serv.sin_port=htons(PUERTO); serv.sin_addr.s_addr=inet_addr("127.0.0.1"); if(connect(s_cliente,(struct sockaddr *)&serv,sizeof serv)<0) { return -1; } char cadena[30]; //printf("introduzca el comando:\n"); //scanf("%[^\n]",cadena); //fflush(stdin); //send(s_cliente,cadena,sizeof cadena,0); recv(s_cliente,cadena,sizeof cadena,0); close(s_cliente); return 0; }
|
|
|
6
|
Programación / Programación C/C++ / Re: mostrar en cliente el resultado de execvp de servidor
|
en: 20 Marzo 2018, 19:07 pm
|
while(1) { tam_cliente=sizeof cliente; sock_cliente=accept(sock_servidor,(struct sockaddr *)&cliente,&tam_cliente); if(sock_cliente<0) { perror("acceptando cliente"); return -1; } ip_cliente=inet_ntoa(cliente.sin_addr); puerto_cliente=ntohs(cliente.sin_port); printf("cliente conectado:%s:%d\n",ip_cliente,puerto_cliente); memset(mensaje_cliente,0,sizeof mensaje_cliente); //read(sock_cliente,&mensaje_cliente,sizeof mensaje_cliente); //printf("mensaje cliente:%s\n",mensaje_cliente); if(!fork()) { printf("inicio fork\n"); close(sock_servidor); dup2(sock_cliente,0); dup2(sock_cliente,1); close(sock_cliente); printf("introduzca comando:\n"); fgets(mensaje_cliente,20,stdin); printf("mensaje_cliente=\n%s",mensaje_cliente); char *com[]={"ls","-l",NULL}; execvp(com[0],com); exit(1); } close(sock_cliente); } me funciona con telnet pero no con mi programa cliente que tengo creado en c que tiene las funciones basicas de conectar con servidor
int main() { struct sockaddr_in cli; struct sockaddr_in serv; int s_cliente,s_servidor; s_cliente=socket(PF_INET,SOCK_STREAM,0); if (s_cliente<0) { perror("socket"); return -1; } cli.sin_family=AF_INET; cli.sin_port=htons(0); cli.sin_addr.s_addr=htonl(INADDR_ANY); if(bind(s_cliente,(struct sockaddr *)&cli,sizeof cli)<0) { perror("bind"); return -1; } serv.sin_family=AF_INET; serv.sin_port=htons(PUERTO); serv.sin_addr.s_addr=inet_addr("127.0.0.1"); if(connect(s_cliente,(struct sockaddr *)&serv,sizeof serv)<0) { perror("connectando"); return -1; } char cadena[30]; //printf("introduzca el comando:\n"); //scanf("%[^\n]",cadena); //fflush(stdin); //send(s_cliente,cadena,sizeof cadena,0); recv(s_cliente,cadena,sizeof cadena,0); close(s_cliente); return 0; }
este es el programa cliente
· Los códigos deben ir en etiquetas GeSHi · No se debe publicar 2 veces seguidas, usar el boton modificar >aquí las reglas del foro -Engel Lex
|
|
|
7
|
Programación / Programación C/C++ / mostrar en cliente el resultado de execvp de servidor
|
en: 20 Marzo 2018, 18:34 pm
|
tengo este codigo estandard de ejemplo no es el coidgo en si: este codigo esta en el servidor y funciona bien con telnet if(!fork()) { dup2(sockClie,0);//stdin dup2(sockclie,1);//stdout close(sockClie); fgets(arg,sizeof arg,stdin); execvp(arg,arg); }
el problema q tengo es que no me funciona en mi programa cliente q hago una conecion normal con el connect(sd,....); por ejemplo cuando ejecuto telnet ip puerto me hace peticion del comando y luego muestra el resultado en la pantalla de telnet .. quiero q mi clilene haga lo mismo pero nada porfa agradezco de antemano su ayuda gracias
|
|
|
8
|
Seguridad Informática / Análisis y Diseño de Malware / Re: Como podria hacer un backdoor
|
en: 18 Marzo 2018, 23:04 pm
|
hola bro onte preocupes sigue buscando info yo igual estoy en las mismas , encontre un par de codigos en la cual permite enviar comandos y mostrarte esos comandos ejecutados en el servidor o donde esta ejecutandose el backdoor saludos cualquier cosa me escribes pd estudiando el codigo analizando y aprendiendo los conceptos avanzaras rapido saludos!!
|
|
|
|
|
|
|