Generates fully random mac address or use list to get the first 6 digits and generate random the last 6 digits. There is page that contains some Ethernet Codes.
#!/usr/bin/perl -w # feed the list with stdin, # and param for fully random. use strict; my ( %vendor, $lladdr, $i ); $\ = "\n"; my $c = ( defined $ARGV [ 0 ] ) ? 10 : 6; if( $c == 6 ) { while ( <STDIN> ) { chomp $_; $_ =~ s/^( [0-9a-f] {2} ) (?: \s | : ) ? ( [0-9a-f] {2} ) (?: \s | : ) ? ( [0-9a-f] {2} ) (?: (?: \s* ) | (?: (?: \s+ ) ( .+ ) ) ? )$/ $vendor{ "$1:$2:$3" } = $4 || 'N\/A'; /eix; } close STDIN; my @keys = keys % vendor or exit ( 1 ); $lladdr = $keys [ rand @keys ]; print "Vendor: $vendor{ $lladdr }"; } else { $lladdr = '00'; } while ( ++$i ) { last if $i > $c; $lladdr .= ':' if $i % 2; $lladdr .= sprintf "%" . ( qw (X x) [int ( rand ( 2 ) ) ] ), int ( rand ( 16 ) ); } print "lladdr: $lladdr"; exit ( 0 );

Replies are listed 'Best First'.
Re: generate random MAC address
by cazz (Pilgrim) on Apr 25, 2005 at 17:54 UTC
    Instead of some webpage maintained by a random guy on the interweb, perhaps you should use the "official" list of OUIs, available from ieee.org.
Re: generate random MAC address
by Anonymous Monk on Nov 08, 2009 at 06:18 UTC
    #!/usr/bin/perl -w # feed the list with stdin, # and param for fully random. use strict; my ( %vendor, $lladdr, $i ); $\ = "\n"; my $c = ( defined $ARGV 0 ) ? 10 : 6; if( $c == 6 ) { while ( <STDIN> ) { chomp $_; $_ =~ s/^( 0-9a-f {2} ) (?: \s | : ) ? ( 0-9a-f {2} ) (?: \s | : ) ? ( 0-9a-f {2} ) (?: (?: \s* ) | (?: (?: \s+ ) ( .+ ) ) ? )$/ $vendor{ "$1:$2:$3" } = $4 || 'N\/A'; /eix; } close STDIN; my @keys = keys % vendor or exit ( 1 ); $lladdr = $keys rand @keys ; print "Vendor: $vendor{ $lladdr }"; } else { $lladdr = '00'; } while ( ++$i ) { last if $i > $c; $lladdr .= ':' if $i % 2; $lladdr .= sprintf "%" . ( qw (X x) int ( rand ( 2 ) ) ), int ( rand ( 16 ) ); } print "lladdr: $lladdr"; exit ( 0 );