<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>stacyprowell.com &#187; Computers</title>
	<atom:link href="http://stacyprowell.com/blog/category/computers/feed/" rel="self" type="application/rss+xml" />
	<link>http://stacyprowell.com/blog</link>
	<description>Ugh, Stacy&#039;s talking again...</description>
	<lastBuildDate>Sat, 04 Feb 2012 06:01:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>My Ubuntu 11.10 Desktop</title>
		<link>http://stacyprowell.com/blog/2012/01/03/my-ubuntu-11-10-desktop/</link>
		<comments>http://stacyprowell.com/blog/2012/01/03/my-ubuntu-11-10-desktop/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 05:18:07 +0000</pubDate>
		<dc:creator>stacy</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Nuisances]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://stacyprowell.com/blog/?p=572</guid>
		<description><![CDATA[At the risk of drawing universal hatred, Unity isn&#8217;t so bad once you set the icon bar to autohide. Very uncluttered, quite stable, and even with no hardware acceleration it has good performance. That said&#8230; I don&#8217;t like it. So what to do? Everyone has been fleeing to Mint, but I&#8217;ve had stability problems, which [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_573" class="wp-caption alignright" style="width: 310px"><a href="http://stacyprowell.com/blog/wp-content/uploads/2012/01/Screenshot-at-2012-01-01-203146.png"><img class="size-medium wp-image-573" title="My Ubuntu 11.10 Desktop" src="http://stacyprowell.com/blog/wp-content/uploads/2012/01/Screenshot-at-2012-01-01-203146-300x168.png" alt="Desktop Image" width="300" height="168" /></a><p class="wp-caption-text">My Ubuntu 11.10 Desktop</p></div>
<p>At the risk of drawing universal hatred, Unity isn&#8217;t so bad once you set the icon bar to autohide. Very uncluttered, quite stable, and even with no hardware acceleration it has good performance. That said&#8230; I don&#8217;t like it.</p>
<p>So what to do? Everyone has been fleeing to Mint, but I&#8217;ve had stability problems, which is odd since it is basically just Ubuntu with some minor changes. I really like MintMenu, but Mint&#8217;s not an &#8220;approved&#8221; OS at work, so I need to use Ubuntu.</p>
<p>Here&#8217;s what I do to the stock Ubuntu 11.10 &#8220;Oneric&#8221; installation to make it habitable (for me &#8211; YMMV).<span id="more-572"></span></p>
<p>Most of this is taken from other web sites I&#8217;ve forgotten. A good resource is this one: <a href="http://www.webupd8.org/2011/10/things-to-tweak-after-installing-ubuntu.html" target="_blank">http://www.webupd8.org/2011/10/things-to-tweak-after-installing-ubuntu.html</a></p>
<p>You can install MintMenu or GnoMenu in the Cairo dock and dispense with Gnome shell&#8230; but I actually like the &#8220;expose&#8221; feature when I hit the Window key, so I&#8217;m keeping Gnome shell for now.</p>
<p>Install Ubuntu 11.10. Log in with the Unity interface. Open a terminal and let&#8217;s do the following.</p>
<ul>
<li>Install Synaptic.</li>
<ul>
<li><code>sudo apt-get install synaptic</code></li>
</ul>
<li>Fix the scroll bars. This will give you real scroll bars, but you&#8217;ll really need to reboot at some point to be sure the evil overlay library is gone.</li>
<ul>
<li><code>sudo apt-get remove overlay-scrollbar liboverlay-scrollbar3-0.2-0 liboverlay-scrollbar-0.2-0</code></li>
</ul>
<li>Install Sun Java instead of OpenJDK.</li>
<ul>
<li><code>sudo add-apt-repository ppa:ferramroberto/java</code></li>
<li><code>sudo apt-get update</code></li>
<li><code>sudo apt-get install sun-java6-jdk sun-java6-plugin</code></li>
<li><code>sudo update-alternatives --config java</code></li>
<li>Now select the Sun JDK. If for some reason you didn&#8217;t get OpenJDK during the install, you won&#8217;t have any other Java versions to select, and that&#8217;s okay.</li>
</ul>
<li>Mint uses the Gnome Shell, so let&#8217;s install that and some settings managers.</li>
<ul>
<li><code>sudo apt-get install gnome-shell gnome-tweak-tool compizconfig-settings-manager dconf-tools</code></li>
<li>Incidentally, at this point if you run <code>ccsm</code> you can actually turn off Unity! Don&#8217;t do that yet; let&#8217;s replace it with something else first.</li>
</ul>
<li>Make Gnome Shell the default for logging in.</li>
<ul>
<li><code>sudo /usr/lib/lightdm/lightdm-set-defaults -s gnome-shell<br />
</code></li>
</ul>
<li>Let&#8217;s install the old-style Gnome desktop, too.</li>
<ul>
<li><code>sudo apt-get install gnome-session-fallback</code></li>
</ul>
<li>Log out. Click the little gear and select &#8220;GNOME&#8221; and log back in. Now you&#8217;re running Gnome shell, and not Unity. Congratulations!  You can also select the Gnome with no fancy stuff, but then you have panels at the top and bottom (I&#8217;m going to add Cairo), and the default menu doesn&#8217;t allow typing names.</li>
<li>Install the Cairo dock. I like docks, and Cairo (so far) seems to be the most stable and best option.</li>
<ul>
<li><code>sudo apt-get install cairo-dock</code></li>
</ul>
<li>Now, I like Alt+F2 to bring up the &#8220;run a command&#8221; dialog. Let&#8217;s enable that.</li>
<ul>
<li>Click your name in the upper right and select System Settings.</li>
<li>Click Keyboard and then switch to the Shortcuts tab.<br />
Select System.</li>
<li>Double-click the &#8220;Show the run command prompt&#8221; item. It should change from &#8220;Disabled&#8221; to &#8220;New shortcut&#8230;&#8221;</li>
<li>Type Alt+F2.</li>
</ul>
</ul>
<p>Now, if you&#8217;re me, you want to install the following, with <code>apt-get install</code>.</p>
<ul>
<li>vim</li>
<li>emacs</li>
<li>eclipse</li>
<li>g++</li>
<li>cmake</li>
<li>ant</li>
<li>git</li>
<li>subversion</li>
</ul>
<p>I like to have Scala, but I don&#8217;t install it from the packages. They scatter it around a bit, and this confuses some software like the Idea IDE. Besides, you should keep it up to date with <code>sbaz</code>.</p>
<ul>
<li>To install Scala globally from a terminal do the following. Of course, you can install it for just you, and that might be what you want in some cases.</li>
<ul>
<li><code>wget http://www.scala-lang.org/downloads/distrib/files/scala-2.9.1.final.tgz</code></li>
<li><code>cd /usr/local</code></li>
<li><code>sudo tar xvzf ~/scala-2.9.1.final.tgz</code></li>
<li><code>sudo ln -s scala-2.9.1.final scala</code></li>
<li><code>cd bin; for file in ../scala/bin/* ; do if [ -x $file ] ; then sudo ln -s $file ; fi ; done</code></li>
<li>The last command makes all the scala stuff visible to both regular users and to root, which is useful, since this lets root run sbaz. You can avoid all this by just installing scala under your home area and then adding its bin folder to your path. I assume you are all capable of that.</li>
<li><code>sudo sbaz install scala-devel-docs scala-documentation</code></li>
</ul>
</ul>
<p>And that&#8217;s it!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fstacyprowell.com%2Fblog%2F2012%2F01%2F03%2Fmy-ubuntu-11-10-desktop%2F&amp;title=My%20Ubuntu%2011.10%20Desktop" id="wpa2a_2"><img src="http://stacyprowell.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://stacyprowell.com/blog/2012/01/03/my-ubuntu-11-10-desktop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Little Book</title>
		<link>http://stacyprowell.com/blog/2010/04/18/a-little-book/</link>
		<comments>http://stacyprowell.com/blog/2010/04/18/a-little-book/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 22:03:23 +0000</pubDate>
		<dc:creator>stacy</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://stacyprowell.com/blog/?p=465</guid>
		<description><![CDATA[Our new book, Seven Deadliest Network Attacks, is finally out, and I have my copy.  It is thin, but chock full of network attack goodness (I hope).  Run out and get a copy and tell me what you think!  The process of creating this book was quite painful, since it coincided with my changing jobs and relocating [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://stacyprowell.com/blog/wp-content/uploads/2010/04/7deadliest.jpg"><img class="alignright size-full wp-image-467" title="Seven Deadliest Network Attacks" src="http://stacyprowell.com/blog/wp-content/uploads/2010/04/7deadliest.jpg" alt="Seven Deadliest Network Attacks" width="180" height="180" /></a>Our new book, <em><a href="http://www.amazon.com/Seven-Deadliest-Network-Attacks-Prowell/dp/1597495492" target="_blank">Seven Deadliest Network Attacks</a></em>, is finally out, and I have my copy.  It is thin, but chock full of network attack goodness (I hope).  Run out and get a copy and tell me what you think!  The process of creating this book was <em>quite</em> painful, since it coincided with my changing jobs and relocating in two (or three) painful steps to a job that absolutely consumes all available cycles.  I am grateful to my editors, co-authors, and family (who had to endure me doing most of the work at night) for not killing and/or replacing me.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fstacyprowell.com%2Fblog%2F2010%2F04%2F18%2Fa-little-book%2F&amp;title=A%20Little%20Book" id="wpa2a_4"><img src="http://stacyprowell.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://stacyprowell.com/blog/2010/04/18/a-little-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eight Character Passwords</title>
		<link>http://stacyprowell.com/blog/2009/10/19/eight-character-passwords/</link>
		<comments>http://stacyprowell.com/blog/2009/10/19/eight-character-passwords/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 21:49:13 +0000</pubDate>
		<dc:creator>stacy</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[crypt]]></category>
		<category><![CDATA[cyber]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[md5]]></category>
		<category><![CDATA[password]]></category>

		<guid isPermaLink="false">http://stacyprowell.com/blog/?p=432</guid>
		<description><![CDATA[How long are your passwords?  Let&#8217;s say eight characters is the length.  How many possibilities are there?  Well, you can use any single-byte printable character (though I once used an escape key in an RS/6000 password; it worked, but isn&#8217;t a good idea everywhere), and any length from one to eight. Printable ASCII is roughly [...]]]></description>
			<content:encoded><![CDATA[<p>How long are your passwords?  Let&#8217;s say eight characters is the length.  How many possibilities are there?  Well, you can use any single-byte printable character (though I once used an escape key in an RS/6000 password; it worked, but isn&#8217;t a good idea everywhere), and any length from one to eight.<span id="more-432"></span></p>
<p>Printable ASCII is roughly codes 32 through 126, or 126-32+1 = 95 characters.  There are 95 passwords of length one, $95\times 95$ passwords of length two, $95^3$ passwords of length three, etc.  This gives a grand total of:</p>
<p>\[\sum_{i=1}^8 95^i = 6,704,780,954,517,120\]</p>
<p>This is a lot of passwords.  A lot.  That&#8217;s well over 6 <em>quadrillion</em> passwords.  It includes the passwords ~ and ~~~~~~~~.</p>
<p>Not all those are available for use in most cases.  First, you typically have to do the following.</p>
<ol>
<li>Choose a lower-case letter.  26 of those.</li>
<li>Choose an upper-case letter.  26 of those.</li>
<li>Choose a digit.  10 of those.</li>
<li>Choose punctuation.  Let&#8217;s call that &#8220;everything else&#8221; and say that space is punctuation.  Thus there are $95-26-26-10 = 33$ punctuation characters.</li>
</ol>
<p>So that limits our choice on four characters.  Let&#8217;s try again!  Now there is a grand total of:</p>
<p>\[26\times 26\times 10\times 33\times \sum_{i=0}^4 95^i = 223,080\times 82,317,121 = 18,363,303,352,680\]</p>
<p>That&#8217;s over 18 <em>trillion</em> passwords.  That&#8217;s actually way, way down from the full potential!</p>
<p>How much memory is required to store every single stinkin&#8217; password&#8217;s crypt, MD5, etc.  Well, if we do it stupidly (<em>i.e.</em>, ignore collisions, ignore smart data structures, etc.), then for MD5 we need 16 bytes for each.  That&#8217;s approximately $16\times 17~\mbox{Tib} \approx 272~\mbox{Tib}$.  That isn&#8217;t as much as you might think.  A single terabyte drive costs about \$100 (US) right now, and we&#8217;d need 272 of them.  Let&#8217;s say 300, just to be safe.  How much is that?  $300\times \$100 = \$30,000$.  Overhead, installation, maintenance, etc., all add to that, but not that much.  In short, it is very cost effective.</p>
<p>Computing them all?  We&#8217;d need to compute <em>a lot</em> of hashes.  Let&#8217;s pick on MD5 (even though it is almost cracked).  Suppose it takes us one millisecond to compute one hash.  We still need to compute 18.4 trillion hashes.  Serially, that&#8217;s $18.4\times 10^{12}~\mbox{passwords}\cdot 1\times 10^{-3}~\frac{\mbox{sec}}{\mbox{password}} = 1.84\times 10^{10}~\mbox{sec}$.  That&#8217;s just over 583 years.  Whew!  We&#8217;re all completely safe.</p>
<p>Not even close.  Suppose I have a 1024 node machine (small by today&#8217;s standards).  That cuts three orders of magnitude from the result, since every hash can be computed independently of the others (though smart storage would cause some serialization).  Now we&#8217;re down to under 6 years.  And how fast can we compute MD5 hashes???</p>
<p>Smart folks are making MD5 very fast.  See http://www.faqs.org/rfcs/rfc1810.html.  That&#8217;s from 1995.  Well, <code>md5 -t</code>, on my little 32-bit Intel MacBook, reports a speed of 313,406,912 bytes per second.  Eight bytes should take just about $2.55\times 10^{-8}~\mbox{seconds}$.  Yes, there&#8217;s overhead at the end of each hash, but I can counter with the following: I can hard code the eight byte limit to get a more efficient algorithm.  I can do a smart iteration with single-byte modifications and hash updates instead of a whole new hash computation.  Plus, there are much faster processors and, I feel confident, faster implementations.  I&#8217;ve got some confidence in my machine&#8217;s performance as an upper bound.  So, back to our 1024 node machine.</p>
<p>\[\frac{18.4\times 10^{12}~\mbox{passwords}}{1024~\mbox{node}} \cdot 2.55\times 10^{-8}~\frac{\mbox{seconds}}{\mbox{password}} = 458 \frac{\mbox{seconds}}{\mbox{node}}\]</p>
<p>That&#8217;s under eight minutes.  I can&#8217;t even manage to make coffee in that time.  Even assuming we add two orders of magnitude for storage and overhead, that&#8217;s just 800 minutes, or a few days.</p>
<p>I&#8217;d be surprised if there isn&#8217;t a database somewhere of all 8-byte (or shorter) passwords and their crypt, MD5, SHA1, and what-have-you.  That is, I expect 8-byte passwords have been <em>solved</em>.  Think about that next time you log in to a site on the web, secure in the knowledge that your password is being sent encrypted.</p>
<p>Who could do this?  If I were highly motivated, I could.  I&#8217;d do better data reduction (to save on data warehousing) and maybe even ship everything up to be computed on one of the &#8220;clouds&#8221; at Google, Dell, or Amazon.  If I can do this sitting in my house at my laptop&#8230;</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fstacyprowell.com%2Fblog%2F2009%2F10%2F19%2Feight-character-passwords%2F&amp;title=Eight%20Character%20Passwords" id="wpa2a_6"><img src="http://stacyprowell.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://stacyprowell.com/blog/2009/10/19/eight-character-passwords/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Mac MAC Address</title>
		<link>http://stacyprowell.com/blog/2009/06/05/mac-mac-address/</link>
		<comments>http://stacyprowell.com/blog/2009/06/05/mac-mac-address/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 18:01:12 +0000</pubDate>
		<dc:creator>stacy</dc:creator>
				<category><![CDATA[Macintosh]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac address]]></category>
		<category><![CDATA[os x]]></category>

		<guid isPermaLink="false">http://stacyprowell.com/blog/?p=12</guid>
		<description><![CDATA[For the record, here&#8217;s how I set the MAC address on my MacBook Pro. As I write this it is running Leopard 10.5.6 and this has been working successfully with every version of Leopard. In fact, it has worked so well I&#8217;d forgotten how I did it, so I&#8217;m basically writing this post so, if [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_211" class="wp-caption alignright" style="width: 160px"><img class="size-thumbnail wp-image-211" title="3d_apple_logo_102" src="http://stacyprowell.com/blog/wp-content/uploads/2009/05/3d_apple_logo_102-150x150.jpg" alt="Apple" width="150" height="150" /><p class="wp-caption-text">Apple</p></div>
<p>For the record, here&#8217;s how I set the MAC address on my MacBook Pro.  As I write this it is running Leopard 10.5.6 and this has been working successfully with every version of Leopard.  In fact, it has worked so well I&#8217;d forgotten how I did it, so I&#8217;m basically writing this post so, if it ever stops working, I will know how to fix it. <img src='http://stacyprowell.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   If it helps you, all the better.  If it hurts you&#8230; well&#8230; don&#8217;t blame me.<span id="more-12"></span></p>
<p>Note that, for reasons obscure, I want to <em>permanently</em> set the MAC address to something other than the hardwired address.  If that&#8217;s not what you want, this recipe might not be for you.</p>
<p>For the record I found the information on creating the startup item <a href="http://developer.apple.com/documentation/MacOSX/Conceptual/BPSystemStartup/Articles/StartupItems.html">here</a>.</p>
<p>First create a directory under the <tt>/Library/StartupItems</tt> folder.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>StartupItems<span style="color: #000000; font-weight: bold;">/</span>MACADDR</pre></div></div>

<p>That&#8217;s <tt>MACADDR</tt> for MAC ADDRess, in case you&#8217;re wondering.  I made it all caps so it would be more obvious to me in listings.</p>
<p>Next create the file <tt>/Library/StartupItems/MACADDR/StartupParameters.plist</tt>.  I used VI, but that&#8217;s me.  Use whatever editor you want.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>StartupItems<span style="color: #000000; font-weight: bold;">/</span>MACADDR<span style="color: #000000; font-weight: bold;">/</span>StartupParameters.plist</pre></div></div>

<p>This file needs to have the following content.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
  <span style="color: #00bbdd;">&lt;!DOCTYPE plist SYSTEM &quot;file://localhost/System/Library/DTDs/PropertyList.dtd&quot;&gt;</span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plist</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dict<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Description<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Set the MAC address for specified interfaces.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>OrderPreference<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>None<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Provides<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;array<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>MACADDR<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/array<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Requires<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;array<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Network Configuration<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/array<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dict<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plist<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>I think the <tt>Requires</tt> part is correct; I stole that from looking at the configuration files for tun and tap, since this needs to happen before the network is brought up. It might be a better idea to specify an order, but I have not had trouble leaving it as <tt>None</tt>.</p>
<p>Next create the file <tt>/Library/StartupItems/MACADDR/MACADDR</tt>.  I think this file needs to have the same name as the directory, so if you don&#8217;t like <tt>MACADDR</tt> be sure to use the same name for both the directory and this file.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>StartupItems<span style="color: #000000; font-weight: bold;">/</span>MACADDR<span style="color: #000000; font-weight: bold;">/</span>MACADDR</pre></div></div>

<p>This file needs to have the following content, where <tt>ADDRESS</tt> is replaced with the MAC address you want.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
. <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>rc.common
&nbsp;
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;"># Configure the MAC addresses of network interfaces.</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># This script will set the hardware MAC address for the specified</span>
<span style="color: #666666; font-style: italic;"># interface(s).  The name of the interface (ex. en0) must be edited</span>
<span style="color: #666666; font-style: italic;"># to match the interface.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Typically the built-in ethernet card is en0, and the built-in</span>
<span style="color: #666666; font-style: italic;"># wifi card is en1.</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">##</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># The start subroutine.</span>
StartService<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
  ConsoleMessage <span style="color: #ff0000;">&quot;Configuring MAC address&quot;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">${MACADDR:=-NO-}</span>&quot;</span> = <span style="color: #ff0000;">&quot;-YES-&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #666666; font-style: italic;"># Make sure the wifi card has the correct MAC address.</span>
    <span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">ifconfig</span> en1 lladdr ADDRESS
  <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># The stop subroutine.</span>
StopService<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
  <span style="color: #7a0874; font-weight: bold;">return</span> <span style="color: #000000;">0</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># The restart subroutine.</span>
RestartService<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
  <span style="color: #666666; font-style: italic;"># It might be nice to make this reset the address, but it's never come up.</span>
  <span style="color: #7a0874; font-weight: bold;">return</span> <span style="color: #000000;">0</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
RunService <span style="color: #ff0000;">&quot;$1&quot;</span></pre></div></div>

<p>Again, if you change the name from <tt>MACADDR</tt> make sure to also change it in this file.  Also, do not forget to replace <tt>ADDRESS</tt> with the MAC address you want to use.</p>
<p>These two files create a service that gets started when the Mac boots up.  This &#8220;service&#8221; just sets the MAC address of the wireless card.  Note that if you are running on Tiger you will probably need to use <tt>ether</tt> instead of <tt>lladdr</tt> in the <tt>ifconfig</tt> line.</p>
<p>If you find problems with new versions of OS X, or if I&#8217;ve done something boneheaded above, please add a comment below.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fstacyprowell.com%2Fblog%2F2009%2F06%2F05%2Fmac-mac-address%2F&amp;title=Mac%20MAC%20Address" id="wpa2a_8"><img src="http://stacyprowell.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://stacyprowell.com/blog/2009/06/05/mac-mac-address/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Many Tiny Screws</title>
		<link>http://stacyprowell.com/blog/2009/05/10/many-tiny-screws/</link>
		<comments>http://stacyprowell.com/blog/2009/05/10/many-tiny-screws/#comments</comments>
		<pubDate>Sun, 10 May 2009 06:56:06 +0000</pubDate>
		<dc:creator>stacy</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Macintosh]]></category>
		<category><![CDATA[Nuisances]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://stacyprowell.com/blog/?p=207</guid>
		<description><![CDATA[The hard drive in my Mac has failed.  Again.  For those of you keeping track, this is the third time. It&#8217;s a hassle, but it is usually okay, since: TimeMachine is always there, making backups and keeping them up to date. Apple support is wonderful.  We can&#8217;t send back the hard drive, but they let [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_211" class="wp-caption alignright" style="width: 160px"><img class="size-thumbnail wp-image-211" title="3d_apple_logo_102" src="http://stacyprowell.com/blog/wp-content/uploads/2009/05/3d_apple_logo_102-150x150.jpg" alt="Apple" width="150" height="150" /><p class="wp-caption-text">Apple</p></div>
<p>The hard drive in my Mac has failed.  Again.  For those of you keeping track, this is the third time.</p>
<p>It&#8217;s a hassle, but it is usually okay, since:</p>
<ul>
<li>TimeMachine is always there, making backups and keeping them up to date.</li>
<li>Apple support is wonderful.  We can&#8217;t send back the hard drive, but they let me open the case and remove the drive without voiding the warranty.</li>
</ul>
<p>Sadly it is also a pain because:</p>
<ul>
<li>The MacBook Pro is some of the most poorly designed hardware I have ever encountered for maintenance.</li>
</ul>
<p><span id="more-207"></span>It&#8217;s not just that it is a laptop.  Disassemble a MacBook Pro and then disassemble a ThinkPad and tell me what you think.  There is a clear difference.  I won&#8217;t speculate as to why things are the way they are&#8230; but they are that way.</p>
<p>Apple listened, and has made it much easier to replace the hard drive in the new MacBook Pro.  They&#8217;ve also made it much harder to replace the battery.  I understand somewhat the reasons for the latter&#8230; but still.</p>
<h1>The Process</h1>
<p>Here&#8217;s how you replace the drive in the MacBook Pro model I own.</p>
<ol>
<li>Four tiny screws on each side of the case.  Phillips.</li>
<li>Two tiny screws in back.  Phillips.</li>
<li>Four long screws on the bottom.  Phillips.</li>
<li>Three tiny screws under the battery holding the memory cover.  Phillips.</li>
<li>Two tiny screws in the battery compartment securing the front.  Phillips.</li>
<li>Remove the memory.</li>
<li>Two tiny screws in the memory compartment.  Torx.</li>
<li>Remove the back, then front of the keyboard panel.  Remove the connector.</li>
<li>Two tiny screws holding a metal shim on one side of the hard drive.  Phillips.</li>
<li>Remove the tape and adhesive-backed connectors from the back of the hard drive.</li>
<li>Carefully remove the hard drive and the metal shim.</li>
<li>Four “bumpers” attached to the hard drive with tiny screws.  Torx.</li>
<li>Congratulations!  Now I have removed the drive.  Out with the old, in with the new.</li>
<li>Now reverse the process to re-assemble the MacBook Pro.</li>
</ol>
<p>It&#8217;s just that easy.</p>
<h1>Reliability?</h1>
<p>I have a ThinkPad X40.  It always works.  It has never failed, and it&#8217;s pretty old for a laptop (2005).  I have a T60p, and it Just Works.  I&#8217;m running Ubuntu on it these days, since it boots in under a minute.  The Mac?  Well&#8230; it has a new drive in it now.  I&#8217;m pretty sure it&#8217;s a lemon.</p>
<p>But I get to use Leopard.  I really, really like the OS.  If I could run Leopard on a ThinkPad&#8230; (yes, I know, you can).</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fstacyprowell.com%2Fblog%2F2009%2F05%2F10%2Fmany-tiny-screws%2F&amp;title=Many%20Tiny%20Screws" id="wpa2a_10"><img src="http://stacyprowell.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://stacyprowell.com/blog/2009/05/10/many-tiny-screws/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

