All pastes #1555635 Raw Edit

changemac.pl

public text v1 · immutable
#1555635 ·published 2009-09-06 02:23 UTC
rendered paste body
#!/usr/bin/perl
use warnings;
use strict;

sub usage {
	"usage: $0 [device] <mac_address>\n".
	"  device       - a valid ethernet device\n".
	"  mac_address  - the MAC address to use <optional>\n".
	"               - a random MAC will be used if none is specified\n"
}

sub run_as_root { $< == 0 }
sub valid_dev   { $_ = shift; -r "/sys/class/net/$_" }
sub valid_mac   { $_ = shift; !defined || /^(?:[\da-f]{2}(?(?!$):)){6}$/i }

my $dev = shift @ARGV or die usage();
my $mac = shift @ARGV;

if (@ARGV) { die usage() };

die "Must be run as root!\n"     unless run_as_root();
die "Invalid ethernet device!\n" unless valid_dev($dev);
die "Invalid MAC address!\n"     unless valid_mac($mac);

system "ifconfig $dev down";

defined $mac
? system "macchanger -m $mac $dev"
: system "macchanger -A $dev";

system "ifconfig $dev up";