Advertisement
Benlahbib_Abdessamad

Untitled

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