class Amnesie::MAC

Public Class Methods

new(card) click to toggle source
# File lib/amnesie/mac.rb, line 5
def initialize(card)
  @card = card
  @ip = Helpers::Exec.new("ip")
  save_origin
  new_mac
end

Public Instance Methods

down() click to toggle source
# File lib/amnesie/mac.rb, line 16
def down
  @ip.run("link set dev #{@card} down")
end
set_addr() click to toggle source
# File lib/amnesie/mac.rb, line 12
def set_addr
  @ip.run("link set dev #{@card} address #{@mac}")
end
to_s() click to toggle source
# File lib/amnesie/mac.rb, line 24
def to_s
  @card + " " + @mac
end
up() click to toggle source
# File lib/amnesie/mac.rb, line 20
def up
  @ip.run("link set dev #{@card} up")
end

Private Instance Methods

new_mac() click to toggle source
# File lib/amnesie/mac.rb, line 30
def new_mac
  first = SecureRandom.hex(1)
  last = SecureRandom.hex(5)
  lastfive = last.split(//).each_slice(2).to_a.map(&:join).join(':')
  firstbyte = `printf '%02X' $(( 0x#{first} & 254 | 2))`
  @mac = "#{firstbyte}:#{lastfive}".downcase
end
save_origin() click to toggle source
# File lib/amnesie/mac.rb, line 42
def save_origin
  return if File.exist? "/tmp/mac_#{@card}"
  search_curr_mac
  filename="/tmp/mac_#{@card}"
  File.write(filename, @curr)
  puts "Origin saved"
end
search_curr_mac() click to toggle source
# File lib/amnesie/mac.rb, line 38
def search_curr_mac
  @curr = `ip addr show dev #{@card} | grep -i ether | awk '{print $2}'`.chomp
end