Advertisement
Benlahbib_Abdessamad

Untitled

May 21st, 2015
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.71 KB | None | 0 0
  1. #include <sys/socket.h>
  2. #include <netinet/in.h>
  3. #include <arpa/inet.h>
  4. #include <stdlib.h>
  5. #include <errno.h>
  6. #include <stdio.h>
  7. #include <unistd.h>
  8. #include <string.h>
  9.  
  10. void printconnerror()
  11. {
  12.   switch (errno) {
  13.   case ETIMEDOUT : printf("Connection timed out.\n"); break;
  14.   case ECONNREFUSED : printf("Connection refused.\n"); break;
  15.   case EHOSTDOWN : printf("Host down.\n"); break;
  16.   case EHOSTUNREACH : printf("No route to the host.\n"); break;
  17.   case ENETUNREACH : printf("Network unreachable.\n"); break;
  18.   default: printf("errno = %d\n", errno);
  19.   }
  20. }
  21.  
  22.  
  23. int main(int argc, char * argv[])
  24. {
  25.   int sockfd, i,new_socket,rec_socket,randp;
  26.   struct sockaddr_in addr,addr_new;
  27.   char buf[100];
  28.  
  29.   if (argc < 3) {
  30.     printf("Usage: %s ip_addr port.\n",argv[0]);
  31.     exit(0);
  32.   }
  33.  
  34.   if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
  35.     perror(": Can't get socket");
  36.     exit(1);
  37.   }
  38.  
  39.   memset(&addr, 0, sizeof(struct sockaddr_in));
  40.   addr.sin_family = AF_INET;
  41.   addr.sin_port = htons(atoi(argv[2]));
  42.   addr.sin_addr.s_addr = inet_addr(argv[1]);
  43.  
  44.   if (connect(sockfd, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
  45.     printconnerror();
  46.     perror(": connect");
  47.     exit(1);
  48.   }
  49.  
  50.   for (i=0; i<100; i++)
  51.   buf[i] = '\0';
  52.   read(sockfd, buf, 99);
  53.   printf("string read = %s\n", buf);
  54.  
  55.  
  56.   randp=randP();
  57.   char str[6];
  58.   sprintf(str,"%d",randp);
  59.   write(sockfd,randp, 5);
  60.  
  61.  
  62.  
  63.   write(sockfd,randp, 5);
  64.  
  65.  
  66.  
  67.   if ((new_socket = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
  68.     perror(": Can't get socket");
  69.     exit(1);
  70.   }
  71.  
  72.   memset(&addr_new, 0, sizeof(struct sockaddr_in));
  73.   addr_new.sin_addr.s_addr = INADDR_ANY;
  74.   addr_new.sin_family = AF_INET;
  75.   addr_new.sin_port = htons(randp);
  76.  
  77.   if (bind(new_socket, (struct sockaddr *)&addr_new, sizeof(addr_new)) < 0) {
  78.     perror(": bind");
  79.     exit(1);
  80.   }
  81.  
  82.  
  83.  
  84.   if (listen(new_socket, 5) < 0) {
  85.     perror(": bind");
  86.     exit(1);
  87.   }
  88.  
  89.  
  90.  
  91.  
  92.        rec_socket = accept(new_socket, (struct sockaddr *)(&addr_new), sizeof(struct sockaddr_in));
  93.        
  94.   if (rec_socket < 0) {
  95.     perror(": accept");
  96.     exit(1);
  97.   }
  98.  
  99.     printf("remote machine = %s, port = %x, %x.\n", inet_ntoa(addr_new.sin_addr), addr_new.sin_port, ntohs(addr_new.sin_port));
  100.     memset(&addr_new, 0, sizeof(addr_new));
  101.     write(rec_socket, "Give me a command to execute", 40);
  102.    
  103.     for (i=0; i<100; i++)
  104.     buf[i] = '\0';
  105.     read(rec_socket, buf, 99);
  106.    
  107. //Vous deviez ajouter execv  .
  108. //Le Syntaxe est le suivant
  109. //execv("/bin/commande a executer","nom de commande", NULL);
  110. //Un petit exemple
  111. //execv("/bin/ls","ls" NULL);
  112.    
  113.  
  114.  
  115.   return 0;
  116. }
  117.  
  118.  
  119. int randP()
  120.     {
  121.     srand(time(NULL));
  122.     int rm = rand();
  123.     rm = rand()*10;
  124. return rm;
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement