-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMACARAN.pl
49 lines (39 loc) · 983 Bytes
/
MACARAN.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/perl
use warnings;
# use strict;
# print mac();
# sub mac {
# for ($i=0;$i<6;$i++) {
# $foo.=sprintf("%02X",int(rand(255))).(($i<5)?'-':'');
# }
# return $foo;
# }
#!/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 );