<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: spoofing code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Thu, 24 Jul 2008 22:20:25 GMT</pubDate>
    <description>DZone Snippets: spoofing code</description>
    <item>
      <title>Mac Wifi MAC spoofing</title>
      <link>http://snippets.dzone.com/posts/show/5417</link>
      <description>A certain unnamed national provider of bagels has seen fit to limit free wifi during lunch hours. They do this based on MAC address. I never liked my MAC address anyways.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Update -- My previous code had two considerable bugs when I posted it. Caius Durling (http://caius.name/) made a considerable improvement with his own script. I've deleted my old code and just placed his here.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/env ruby&lt;br /&gt;# &lt;br /&gt;# USAGE: Turn off wireless, run this, then turn it back on.&lt;br /&gt;# ./random_mac.rb &lt;nothing&gt; # =&gt;  random mac address&lt;br /&gt;# ./random_mac.rb --reset # =&gt;  original mac address&lt;br /&gt;&lt;br /&gt;# Set this to your Original MAC Address&lt;br /&gt;original_mac = ""&lt;br /&gt;&lt;br /&gt;# Just a little warning&lt;br /&gt;puts "Warning: You haven't set your original Mac Address in the script yet." if original_mac.empty?&lt;br /&gt;&lt;br /&gt;# Generates a 2 digit code&lt;br /&gt;def generate_pair&lt;br /&gt;  a = rand(255).to_s(16)&lt;br /&gt;  return (a.length &lt; 2 ? generate_pair : a)&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;# Sets the mac address to the passed value&lt;br /&gt;def set_mac_address( mac_addr )&lt;br /&gt;  raise "MacAddressFormatError" if mac_addr.scan(/^(?:[\w\d]{2}\:){5}[\w\d]{2}$/).empty?&lt;br /&gt;  puts "Old MAC address: #{`ifconfig en1 | grep ether`.match(/ether\s(.+)/)[1]}"&lt;br /&gt;  `sudo ifconfig en1 ether #{mac_addr}`&lt;br /&gt;  puts "New MAC address: #{`ifconfig en1 | grep ether`.match(/ether\s(.+)/)[1]}"&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;case ARGV.first&lt;br /&gt;when "--reset"&lt;br /&gt;  # Try to reset to old mac address&lt;br /&gt;  if original_mac.empty?&lt;br /&gt;    puts "ERROR - You need to set the old mac address in the script"&lt;br /&gt;    exit(1)&lt;br /&gt;  end&lt;br /&gt;  puts "Resetting to old mac address"&lt;br /&gt;  set_mac_address( original_mac )&lt;br /&gt;  &lt;br /&gt;when nil&lt;br /&gt;  # Generate &amp; set a random mac address&lt;br /&gt;  random_mac = (0..5).map { |x| generate_pair }.join(":")&lt;br /&gt;  set_mac_address( random_mac )&lt;br /&gt;  &lt;br /&gt;when "--help"&lt;br /&gt;  # Show some help I guess&lt;br /&gt;  puts [&lt;br /&gt;    "USAGE: Turn off wireless, run this, then turn it back on.",&lt;br /&gt;    "./random_mac.rb &lt;nothing&gt; # =&gt;  random mac address",&lt;br /&gt;    "./random_mac.rb --reset # =&gt;  original mac address"&lt;br /&gt;    ].join("\n")&lt;br /&gt;  &lt;br /&gt;else&lt;br /&gt;  # Who knows?&lt;br /&gt;  puts "Unknown Flag, try --help"&lt;br /&gt;  exit(2)&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 21 Apr 2008 18:03:44 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5417</guid>
      <author>markpercival (Mark Percival)</author>
    </item>
  </channel>
</rss>
