Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <stdlib.h>
- #include <errno.h>
- #include <stdio.h>
- #include <unistd.h>
- #include <string.h>
- void printconnerror()
- {
- switch (errno) {
- case ETIMEDOUT : printf("Connection timed out.\n"); break;
- case ECONNREFUSED : printf("Connection refused.\n"); break;
- case EHOSTDOWN : printf("Host down.\n"); break;
- case EHOSTUNREACH : printf("No route to the host.\n"); break;
- case ENETUNREACH : printf("Network unreachable.\n"); break;
- default: printf("errno = %d\n", errno);
- }
- }
- int main(int argc, char * argv[])
- {
- int sockfd, i,new_socket,rec_socket,randp;
- struct sockaddr_in addr,addr_new;
- char buf[100];
- if (argc < 3) {
- printf("Usage: %s ip_addr port.\n",argv[0]);
- exit(0);
- }
- if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
- perror(": Can't get socket");
- exit(1);
- }
- memset(&addr, 0, sizeof(struct sockaddr_in));
- addr.sin_family = AF_INET;
- addr.sin_port = htons(atoi(argv[2]));
- addr.sin_addr.s_addr = inet_addr(argv[1]);
- if (connect(sockfd, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
- printconnerror();
- perror(": connect");
- exit(1);
- }
- for (i=0; i<100; i++)
- buf[i] = '\0';
- read(sockfd, buf, 99);
- printf("string read = %s\n", buf);
- randp=randP();
- char str[6];
- sprintf(str,"%d",randp);
- write(sockfd,randp, 5);
- write(sockfd,randp, 5);
- if ((new_socket = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
- perror(": Can't get socket");
- exit(1);
- }
- memset(&addr_new, 0, sizeof(struct sockaddr_in));
- addr_new.sin_addr.s_addr = INADDR_ANY;
- addr_new.sin_family = AF_INET;
- addr_new.sin_port = htons(randp);
- if (bind(new_socket, (struct sockaddr *)&addr_new, sizeof(addr_new)) < 0) {
- perror(": bind");
- exit(1);
- }
- if (listen(new_socket, 5) < 0) {
- perror(": bind");
- exit(1);
- }
- rec_socket = accept(new_socket, (struct sockaddr *)(&addr_new), sizeof(struct sockaddr_in));
- if (rec_socket < 0) {
- perror(": accept");
- exit(1);
- }
- printf("remote machine = %s, port = %x, %x.\n", inet_ntoa(addr_new.sin_addr), addr_new.sin_port, ntohs(addr_new.sin_port));
- memset(&addr_new, 0, sizeof(addr_new));
- write(rec_socket, "Give me a command to execute", 40);
- for (i=0; i<100; i++)
- buf[i] = '\0';
- read(rec_socket, buf, 99);
- //Vous deviez ajouter execv .
- //Le Syntaxe est le suivant
- //execv("/bin/commande a executer","nom de commande", NULL);
- //Un petit exemple
- //execv("/bin/ls","ls" NULL);
- return 0;
- }
- int randP()
- {
- srand(time(NULL));
- int rm = rand();
- rm = rand()*10;
- return rm;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement