123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #!/usr/bin/perl
-
- use strict;
- use warnings;
-
-
- my($maccnt, $pps, $src, $dest) = @ARGV;
-
- usage() if !defined $dest;
-
- if ( $maccnt !~ /^\d+$/ || $maccnt < 1 ) {
- print STDERR "MAC count must be a positive integer\n";
- exit 1;
- }
-
- if ( $pps !~ /^\d+$/ || $pps < 1 ) {
- print STDERR "packets/sec must be a positive integer\n";
- exit 1;
- }
-
- if ( $src !~ /^(\d+\.\d+\.\d+\.\d+)$/ ) {
- print STDERR "source IP must be a valid IPv4 address\n";
- exit 1;
- }
-
- if ( $dest !~ /^(\d+\.\d+\.\d+\.\d+)$/ ) {
- print STDERR "destination IP must be a valid IPv4 address\n";
- exit 1;
- }
-
- main($maccnt, $pps, $src, $dest);
-
- sub usage {
- print STDERR "DHCP Flood using option 82\n";
- print STDERR "This is only to test dhcp_protect, the DHCP packets aren't really valid\n";
- print STDERR "DO NOT SEND THIS TO YOUR DHCP SERVER !!!!\n";
- print STDERR "\n";
- print STDERR "Usage: $0 <MAC count> <packets/sec> <source IPv4> <destination IPv4>\n";
- print STDERR "Dependency: nemesis must be installed\n";
- print STDERR "https://ftp.troglobit.com/nemesis/\n";
- print STDERR "\n";
- exit 1;
- }
-
-
- sub main {
- my($maccnt, $pps, $src, $dest)=@_;
- my $hdr = "";
-
- $hdr .= "010106010c02385600010000000000000000000000000000c16e5f43409c28db";
- $hdr .= "d56c000000000000000000000000000000000000000000000000000000000000";
- $hdr .= "0000000000000000000000000000000000000000000000000000000000000000";
- $hdr .= "0000000000000000000000000000000000000000000000000000000000000000";
- $hdr .= "0000000000000000000000000000000000000000000000000000000000000000";
- $hdr .= "0000000000000000000000000000000000000000000000000000000000000000";
- $hdr .= "0000000000000000000000000000000000000000000000000000000000000000";
- $hdr .= "000000000000000000000000638253633501013707017903060f77fc390205dc";
- $hdr .= "3d0701409c28dbd56c33040076a7000c097370616c6569666f6e000000000000";
- $hdr .= "0000000000000000000000520e0104000000000206XXXXXXXXXXXXff00000000";
-
- my $int = 1/$pps;
-
- while(1) {
- for(my $i=0; $i<$maccnt; $i++) {
- my $mac = sprintf("000000%06x", $i);
- my $pkt = $hdr;
- $pkt =~ s/XXXXXXXXXXXX/$mac/;
-
- open(N,"| nemesis udp -S $src -D $dest -x 67 -y 666 -i $int -P -") || die "install nemesis!";
- print N pack("H*",$pkt);
- print N "";
- close(N);
- }
- }
- }
|