<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9205721746908768127</id><updated>2011-09-12T08:14:10.004-07:00</updated><category term='linux'/><category term='code'/><category term='ubuntu'/><category term='python'/><title type='text'>Bryan's Geek Stuff</title><subtitle type='html'>This is a blog about my hobby of open source software.  I like to understand how computers work.  To that end, I love the way open source software allows me to see, understand, and change things.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://randommusingsofarealgeek.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://randommusingsofarealgeek.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bryan</name><uri>http://www.blogger.com/profile/09073168571056515665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_yHilkNlNqrs/SetleTjYMSI/AAAAAAAAAAM/nATmv8YVh_I/S220/bryan.face.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9205721746908768127.post-4212060228404418497</id><published>2010-12-15T21:35:00.000-08:00</published><updated>2010-12-15T21:45:42.072-08:00</updated><title type='text'>Firesheep Presentation at Linux SIG</title><content type='html'>&lt;span style="font-size: large;"&gt;I'll be giving a presentation on Firesheep and cookies:&lt;/span&gt;&lt;br /&gt;&lt;h2 align="center"&gt;7pm Thur., December 16, 2010 at &lt;b&gt;&lt;u&gt;Wright State University, Russ Engineering, RC146&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Here are my presentation slides:&lt;/span&gt;&lt;br /&gt;&lt;a href="https://docs.google.com/present/view?id=dtv8cxf_20x2xhpvg2"&gt;&lt;i&gt;https://docs.google.com/present/view?id=dtv8cxf_20x2xhpvg&lt;/i&gt;2&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9205721746908768127-4212060228404418497?l=randommusingsofarealgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/4212060228404418497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/4212060228404418497'/><link rel='alternate' type='text/html' href='http://randommusingsofarealgeek.blogspot.com/2010/12/firesheep-presentation-at-linux-sig.html' title='Firesheep Presentation at Linux SIG'/><author><name>Bryan</name><uri>http://www.blogger.com/profile/09073168571056515665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_yHilkNlNqrs/SetleTjYMSI/AAAAAAAAAAM/nATmv8YVh_I/S220/bryan.face.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9205721746908768127.post-8785344447400375564</id><published>2010-11-06T08:44:00.000-07:00</published><updated>2010-12-14T21:22:08.750-08:00</updated><title type='text'>Firesheep on Linux! Update 1</title><content type='html'>As of the current git release you too can get firesheep goodness on linux:&lt;br /&gt;&lt;br /&gt;&amp;gt;git clone git://github.com/mickflemm/firesheep.git&lt;br /&gt;&amp;gt;cd firesheep&lt;br /&gt;&amp;gt;git submodule update --init&lt;br /&gt;&amp;gt;./autogen.sh --with-xulrunner-sdk=/usr/lib/xulrunner-devel-1.9.2.13&lt;br /&gt;&lt;br /&gt;Now you have to pretend you know what you're doing...&amp;nbsp; add dependencies it complains about, and hack a makefile&lt;br /&gt;&lt;br /&gt;For dependencies, look for what it complains about using apt-cache:&lt;br /&gt;&amp;gt;apt-cache search '[missing dependency name]'&lt;insert dependency="" missing="" name=""&gt;&lt;/insert&gt;&lt;br /&gt;&amp;gt;sudo apt-get install '[package from list]'&lt;dependency from="" list="" package=""&gt;&lt;/dependency&gt;&lt;br /&gt;&lt;dependency from="" list="" package=""&gt;&lt;/dependency&gt;&lt;br /&gt;&lt;dependency from="" list="" package=""&gt;On my netbook I needed the following, but you may need more:&lt;/dependency&gt;&lt;br /&gt;&lt;dependency from="" list="" package=""&gt;sudo apt-get install libhal-dev&lt;br /&gt;&amp;nbsp;&lt;/dependency&gt;&lt;br /&gt;&lt;dependency from="" list="" package=""&gt; &lt;/dependency&gt;&lt;br /&gt;&lt;dependency from="" list="" package=""&gt;Once all the dependencies are happy type: &lt;/dependency&gt;&lt;br /&gt;&amp;gt;make&lt;br /&gt;&lt;br /&gt;The installer gets built in:&lt;span class="gI"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="gI"&gt;./firesheep/build/&lt;/span&gt;&lt;br /&gt;&lt;span class="gI"&gt;&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;span class="gI"&gt;Just fire up firefox and browse to it.&amp;nbsp; Double click.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="gI"&gt;Alternately, type:&lt;/span&gt;&lt;br /&gt;&amp;gt;&lt;span class="gI"&gt; &lt;/span&gt;firefox build/firesheep.xpi&lt;br /&gt;&lt;br /&gt;At this point, if you go into preferences, there's nothing in the interface list.&amp;nbsp; There's one last step:&lt;br /&gt;&amp;gt; cd ~/.mozilla/firefox/*.default/extensions/firesheep@codebutler.com/platform/*gcc3&lt;br /&gt;&amp;gt; sudo ./firesheep-backend --fix-permissions&lt;br /&gt;&lt;br /&gt;On my eeepc, the interface needs to be in monitor mode to capture cookies:&lt;br /&gt;&amp;gt;ifconfig wlan0 down&lt;br /&gt;&amp;gt;iwconfig wlan0 mode monitor&lt;br /&gt;&amp;gt;ifconfig wlan0 up&lt;br /&gt;&lt;br /&gt;This allows firesheep to capture cookies, but you can't connect to the internet.&amp;nbsp; You need a second connection, or else you can just switch back once a cookie gets captured:&lt;br /&gt;&amp;gt;ifconfig wlan0 down&lt;br /&gt;&amp;gt;iwconfig wlan0 mode managed&lt;br /&gt;&amp;gt;ifconfig wlan0 up&lt;br /&gt;&lt;br /&gt;It's not quite as automatic as on the other platforms, but it works!&amp;nbsp; I tried it by logging into my facebook on my Mac in Safari.&amp;nbsp; Up popped my facebook entry, but the icon was broken because my interface&amp;nbsp; was in monitor mode.&amp;nbsp; I switched to managed mode and then clicked on the entry in the firesheep tab and viola! I'm logged in without a password!&lt;br /&gt;&lt;br /&gt;I next added a second wireless interface and put my wireless in monitor mode.&amp;nbsp; Then everything works pionty clicky, including icons.&amp;nbsp; I click on my smiling mug and up pops my facebook page, logged in as me.&lt;br /&gt;&lt;br /&gt;But it needs two wireless cards to work seamlessly...&amp;nbsp; :-(&amp;nbsp; Not ideal.&amp;nbsp; It works though.&amp;nbsp; Coool stuff.&lt;br /&gt;&lt;br /&gt;PS.&amp;nbsp; Here's a link to the plugin, in case you're lazy.&amp;nbsp; (It works for me on Ubuntu 10.04 on an EEEPC 701)&lt;br /&gt;&lt;a href="http://www.mediafire.com/?6n0v23oc8cccbkr"&gt;http://www.mediafire.com/?6n0v23oc8cccbkr&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9205721746908768127-8785344447400375564?l=randommusingsofarealgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/8785344447400375564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/8785344447400375564'/><link rel='alternate' type='text/html' href='http://randommusingsofarealgeek.blogspot.com/2010/11/firesheep-on-linux.html' title='Firesheep on Linux! Update 1'/><author><name>Bryan</name><uri>http://www.blogger.com/profile/09073168571056515665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_yHilkNlNqrs/SetleTjYMSI/AAAAAAAAAAM/nATmv8YVh_I/S220/bryan.face.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9205721746908768127.post-2406946259300148621</id><published>2009-12-30T19:30:00.000-08:00</published><updated>2010-02-24T18:56:50.641-08:00</updated><title type='text'>U3 Howto #1</title><content type='html'>So here's how you do it:&amp;nbsp; &lt;br /&gt;&lt;br /&gt;First, I run linux.&amp;nbsp; These commands are all available under Windows, but I don't care.&amp;nbsp; If you are looking for a Windows how-to, go here first: &lt;a href="http://wubi-installer.org/latest.php"&gt;WUBI&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now once you have a nice sane Ubuntu install here's how you do it:&lt;br /&gt;&lt;br /&gt;Supplies:&lt;br /&gt;1 U3 crapware thumb drive (preferably with nothing important on it)&lt;br /&gt;1 bootable iso (Anything will do, but if you want to point and click, &lt;a href="http://distro.ibiblio.org/pub/linux/distributions/tinycorelinux/2.x/release/tinycore-current.iso"&gt;HERE YOU GO&lt;/a&gt;.)&lt;br /&gt;1 copy of &lt;a href="http://sourceforge.net/projects/u3-tool/files/u3-tool/0.3/u3-tool-0.3.tar.gz/download"&gt;u3-tool&lt;/a&gt;&amp;nbsp; (It builds just fine on Ubuntu 9.10.&amp;nbsp; Follow the directions.&amp;nbsp; I'll probably throw it in my PPA for people who are lazy.)&lt;br /&gt;&lt;br /&gt;Syntax:&lt;br /&gt;&amp;gt;&amp;gt; A command you can copy and paste&lt;br /&gt;[something you need to fill in for yourself]&lt;br /&gt;&lt;br /&gt;Howto:&lt;br /&gt;Insert your thumb drive.&lt;br /&gt;&lt;br /&gt;Keep things clean:&lt;br /&gt;&lt;blockquote&gt;&amp;gt;&amp;gt;mkdir customu3&lt;br /&gt;&amp;gt;&amp;gt;cd customu3&lt;/blockquote&gt;Figure out what drive letter it was:&lt;br /&gt;&lt;blockquote&gt;&amp;gt;&amp;gt; sudo fdisk -l&lt;/blockquote&gt;&lt;blockquote&gt;&amp;nbsp;...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Device Boot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blocks&amp;nbsp;&amp;nbsp; Id&amp;nbsp; System&lt;br /&gt;/dev/md0p1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 122095984&amp;nbsp;&amp;nbsp; 488383934&amp;nbsp;&amp;nbsp; 83&amp;nbsp; Linux&lt;br /&gt;&lt;br /&gt;Disk /dev/sdd: &lt;span style="background-color: #e06666;"&gt;7605 MB&lt;/span&gt;, 7605321216 bytes&lt;br /&gt;255 heads, 63 sectors/track, 924 cylinders&lt;br /&gt;Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;Disk identifier: 0x00000000&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Device Boot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blocks&amp;nbsp;&amp;nbsp; Id&amp;nbsp; System&lt;br /&gt;&lt;span style="background-color: yellow;"&gt;/dev/sdd1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 976&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7839698&amp;nbsp;&amp;nbsp;&amp;nbsp; b&amp;nbsp; W95 FAT32&lt;/blockquote&gt;If you just plugged it in, chances are it's the last thing in the list.&amp;nbsp; Also, quickly verify that the size is about right.&amp;nbsp; My drive is an 8GB drive do 7605MB is about right.&amp;nbsp; If you have trouble remembering /dev/sdd1, write it down, but beware that it may change in subsequent steps.&lt;br /&gt;&lt;br /&gt;If you want the small iso I recommended above (for a first try) you can run this:&lt;br /&gt;&lt;blockquote&gt;&amp;gt;&amp;gt; wget -c http://distro.ibiblio.org/pub/linux/distributions/tinycorelinux/2.x/release/tinycore_2.7.iso&lt;/blockquote&gt;or &lt;br /&gt;&lt;blockquote&gt;&amp;gt;&amp;gt;cp [../myiso.iso] .&lt;/blockquote&gt;Next, find out how big the iso is:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;gt;&amp;gt; ls -l *.iso&lt;/blockquote&gt;&lt;blockquote&gt;-rw-r--r-- 1 myuser myuser &lt;span style="background-color: yellow;"&gt;10614784&lt;/span&gt; 2009-12-30 22:09 tinycore_2.7.iso &lt;/blockquote&gt;The tinycore 2.7 iso is &lt;span style="background-color: white;"&gt;10614784 bytes.&amp;nbsp; I typically add 1000 bytes just to be on the safe side.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;Next, make room for the custom iso image:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="background-color: white;"&gt;&amp;gt;&amp;gt;sudo [path to]/u3-tool -p&amp;nbsp; &lt;/span&gt;&lt;span style="background-color: white;"&gt;10615784 /dev/[sdd1]&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="background-color: white;"&gt;Ubuntu will remount things for you.&amp;nbsp; Make sure the drive location didn't change.&amp;nbsp; Notice that my thumb drive changed size slightly.&amp;nbsp; Yours should have too or else something didn't work.&lt;/span&gt;&lt;span style="background-color: white;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="background-color: white;"&gt;&amp;gt;&amp;gt;sudo fdisk -l&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="background-color: white;"&gt;...&lt;br /&gt;Disk /dev/sdd: &lt;span style="background-color: #e06666;"&gt;8055 MB&lt;/span&gt;, 8055029248 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;255 heads, 63 sectors/track, 979 cylinders&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;Units = cylinders of 16065 * 512 = 8225280 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;Disk identifier: 0x00000000&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;&amp;nbsp; Device Boot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blocks&amp;nbsp;&amp;nbsp; Id&amp;nbsp; System&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;&lt;span style="background-color: yellow;"&gt;/dev/sdd1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 976&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7839698&amp;nbsp;&amp;nbsp;&amp;nbsp; b&amp;nbsp; W95 FAT32&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="background-color: white;"&gt;Now write the new image and you're done.&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="background-color: white;"&gt;&amp;gt;&amp;gt; sudo &lt;/span&gt;&lt;span style="background-color: white;"&gt;[path to]&lt;/span&gt;&lt;span style="background-color: white;"&gt;/u3-tool -l tinycore_2.7.iso /dev/[sdd1]&lt;/span&gt;&lt;/blockquote&gt;That's it.&amp;nbsp; You should have a new virtual cdrom:&lt;br /&gt;&lt;blockquote&gt;&amp;gt;&amp;gt; ls -l /dev/scd*&lt;br /&gt;lrwxrwxrwx 1 root root 3 2009-12-27 15:04 /dev/scd0 -&amp;gt; sr0&lt;br /&gt;lrwxrwxrwx 1 root root 3 2009-12-30 22:16 /dev/scd1 -&amp;gt; sr1&lt;/blockquote&gt;I like to then check that it worked right using a virtual machine.&amp;nbsp; It's faster than rebooting.&amp;nbsp; If this works, you have a bootable, virtual CDROM running from your thumb drive.&amp;nbsp; Congratulations!&lt;br /&gt;&lt;blockquote&gt;&amp;gt;&amp;gt;kvm -cdrom /dev/scd1&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yHilkNlNqrs/SzwZ1yLEs-I/AAAAAAAAACQ/giz-q8CC_u4/s1600-h/Screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_yHilkNlNqrs/SzwZ1yLEs-I/AAAAAAAAACQ/giz-q8CC_u4/s320/Screenshot.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9205721746908768127-2406946259300148621?l=randommusingsofarealgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/2406946259300148621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/2406946259300148621'/><link rel='alternate' type='text/html' href='http://randommusingsofarealgeek.blogspot.com/2009/12/u3-howto-1.html' title='U3 Howto #1'/><author><name>Bryan</name><uri>http://www.blogger.com/profile/09073168571056515665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_yHilkNlNqrs/SetleTjYMSI/AAAAAAAAAAM/nATmv8YVh_I/S220/bryan.face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_yHilkNlNqrs/SzwZ1yLEs-I/AAAAAAAAACQ/giz-q8CC_u4/s72-c/Screenshot.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-9205721746908768127.post-37135196930832688</id><published>2009-12-24T17:43:00.000-08:00</published><updated>2009-12-24T18:33:06.832-08:00</updated><title type='text'>I used to hate U3...</title><content type='html'>&lt;a href="http://www.u3.com/default.aspx"&gt;U3&lt;/a&gt; is that annoying software that comes pre-installed on your Sandisk thumb drives.&amp;nbsp; It mounts a virtual CD on your PC when you plug it in and auto-runs a piece of crappy software when all you want is to drag and drop files onto your thumb drive.&amp;nbsp; &lt;i&gt;I hate that.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;But wait -  I USED to hate U3.  U3 was a closed, windows-only, back-door, auto-run, BS that Sandisk &lt;a href="http://www.u3.com/support/default.aspx#CQ3"&gt;forced me to borrow a Microsoft PC&lt;/a&gt; to rip out of my thumb-drive...  &lt;br /&gt;&lt;br /&gt;&lt;i&gt;I was so wrong.&amp;nbsp; &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I discovered I could &lt;a href="http://u3-tool.sourceforge.net/"&gt;hack it&lt;/a&gt;.  And that CD partition on the U3 drive...  looks like a real CD to the computer...  and it's bootable!  The CD acts like a separate device on an USB hub!&lt;br /&gt;&lt;br /&gt;I now have a &lt;i&gt;bootable&lt;/i&gt;, 8GB Sandisk Cruzer thumbdrive with all the useful boot CD's I use - all selectable from a little menu.   I haven't perfected it yet, but I have half a dozen of them already on there.  I want to work on it some more and then post it so all zero of you can easily do this too.  :-p&lt;br /&gt;&lt;br /&gt;For now, here are some links to the bits and pieces I used (both are cross platform Windows-Linux-Mac-&lt;span style="font-style: italic;"&gt;whatever&lt;/span&gt; &lt;span style="font-style: italic;"&gt;that has mkisofs&lt;/span&gt;):&lt;br /&gt;&lt;a href="http://u3-tool.sourceforge.net/"&gt;u3-tool&lt;/a&gt; - Allows customization of the u3 partition.&lt;br /&gt;&lt;a href="http://www.ultimatebootcd.com/"&gt;UBCD&lt;/a&gt; - Has a bunch of boot images pre-installed and &lt;a href="http://http//www.ultimatebootcd.com/customize.html"&gt;easy directions for customizing.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So far, I left all the stuff that came on the UBCD with a few tweaks:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I upgraded to the latest &lt;a href="http://www.memtest.org/"&gt;memtest86+&lt;/a&gt;, and &lt;a href="http://www.dban.org/"&gt;DBAN&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;I added &lt;a href="http://www.grc.com/sr/spinrite.htm"&gt;SpinRite&lt;/a&gt;. (The only piece of software I've bought in a decade.)&lt;/li&gt;&lt;li&gt;I added the following Live CD's:&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.tinycorelinux.com/"&gt;TinyCore v2.7&lt;/a&gt;  -  10MB, runs almost everything useful, boots into ram 5-10 seconds.  Enough said.&lt;/li&gt;&lt;li&gt;&lt;a href="http://puppylinux.org/main/index.php?file=Overview%20and%20Getting%20Started.htm"&gt;Puppy Linux v4.3.1&lt;/a&gt;  -  A little bigger, also runs in RAM, less customization needed.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.slax.org/"&gt;Slax 6.3.1&lt;/a&gt;  -  Most polished Live CD I ever used.  Only 200 MB base image.&lt;a href="http://www.slax.org/build.php"&gt;  Online customization.&lt;/a&gt;  Check it out.&lt;/li&gt;&lt;li&gt;    &lt;a href="http://www.remote-exploit.org/backtrack.html"&gt;BackTrack 4&lt;/a&gt;  -  1.3GB of &lt;del&gt;evil hacker tools&lt;br /&gt;&lt;/del&gt; "computer security tools".  &lt;del&gt;Mwahahaha.&lt;br /&gt;&lt;/del&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Really this was mostly a no-brainer with just the two links above.  I had to do some &lt;strike&gt;hacking&lt;del&gt;&lt;/del&gt;&lt;/strike&gt; editing of the isolinux configs (which requires a bit more than monkey skills) to get things just right, but it was really pretty easy. &lt;br /&gt;&lt;br /&gt;The coolest thing is that the live CD's are read only and behave just like a giant CD.  The thumb-drive still shows up as a thumb-drive too.  It acts like a separate device to the PC.  (An U3 thumb-drive acts like a hub with two devices plugged into it.)  This has some really cool implications.&lt;br /&gt;&lt;br /&gt;Now I say...  U3 ROCKS!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9205721746908768127-37135196930832688?l=randommusingsofarealgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommusingsofarealgeek.blogspot.com/feeds/37135196930832688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://randommusingsofarealgeek.blogspot.com/2009/12/i-used-to-hate-u3.html#comment-form' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/37135196930832688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/37135196930832688'/><link rel='alternate' type='text/html' href='http://randommusingsofarealgeek.blogspot.com/2009/12/i-used-to-hate-u3.html' title='I used to hate U3...'/><author><name>Bryan</name><uri>http://www.blogger.com/profile/09073168571056515665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_yHilkNlNqrs/SetleTjYMSI/AAAAAAAAAAM/nATmv8YVh_I/S220/bryan.face.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9205721746908768127.post-2284223702999689068</id><published>2009-05-12T17:29:00.000-07:00</published><updated>2009-05-12T17:36:17.902-07:00</updated><title type='text'>Didier Stevens Tools</title><content type='html'>I have created a little branch for Didier Stevens programs.  He makes some really useful little gadgets like XORSearch.  XORSearch parses a file for plain strings, but also trivially scrambled strings such as ROT13 et al.  It's neat.&lt;br /&gt;&lt;br /&gt;Anyway, you can get the code like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;bzr branch lp:ds-tools &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I have added a makefile that builds all the tools I could get to work on Linux and copies them into the base directory.  From there ./&lt;command-name&gt;&lt;command-name&gt; --help should be enough to get you going.  Have fun.&lt;/command-name&gt;&lt;/command-name&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9205721746908768127-2284223702999689068?l=randommusingsofarealgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommusingsofarealgeek.blogspot.com/feeds/2284223702999689068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://randommusingsofarealgeek.blogspot.com/2009/05/didier-stevens-tools.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/2284223702999689068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/2284223702999689068'/><link rel='alternate' type='text/html' href='http://randommusingsofarealgeek.blogspot.com/2009/05/didier-stevens-tools.html' title='Didier Stevens Tools'/><author><name>Bryan</name><uri>http://www.blogger.com/profile/09073168571056515665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_yHilkNlNqrs/SetleTjYMSI/AAAAAAAAAAM/nATmv8YVh_I/S220/bryan.face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9205721746908768127.post-490085948426481276</id><published>2009-04-24T06:17:00.001-07:00</published><updated>2009-04-29T20:57:09.889-07:00</updated><title type='text'>Defrag for Linux!!!</title><content type='html'>So I've heard that we don't have a defrag for linux because we don't need it.  I understand that the ext filesystem leaves a litte bit of room at the end of files and does other bits of magic that keep fragmentation down.  However, a 90% full volume is going to get fragmented.  And there's no good way in linux to undo that, even if you unfill that volume.  That's a bummmer.  Also, windows power users switching to Linux aren't going to buy the whole "you don't need defrag" bit.&lt;br /&gt;&lt;br /&gt;In comes John Dong's python based defrag utility.  It uses the rather simple method of creating a copy of the file and then renaming the new file to the old filename.  This allows the filesystem to put the entire file in the best possible location and then frees the old file.  In theory it will work on any file system.&lt;br /&gt;&lt;br /&gt;I have defraged my home directory and it made a noticable difference in performance.  (I have had this same volume in continuous use for about 4 years.  I have added this utility as a jaunty package to my PPA repository so everyone else can have linux defragmenter goodness without building the package themselves.  &lt;br /&gt;&lt;br /&gt;PPA:&lt;br /&gt;https://edge.launchpad.net/~brywilharris/+archive/ppa&lt;br /&gt;&lt;br /&gt;I plan to clean up the code a bit and then begin work on a GUI.  (It's a work in progress so please don't sue me if this trashes your data!  However, it worked for me.)&lt;br /&gt;&lt;br /&gt;I will post some benchmarks once I've done a little more testing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9205721746908768127-490085948426481276?l=randommusingsofarealgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommusingsofarealgeek.blogspot.com/feeds/490085948426481276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://randommusingsofarealgeek.blogspot.com/2009/04/defrag-fo-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/490085948426481276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/490085948426481276'/><link rel='alternate' type='text/html' href='http://randommusingsofarealgeek.blogspot.com/2009/04/defrag-fo-linux.html' title='Defrag for Linux!!!'/><author><name>Bryan</name><uri>http://www.blogger.com/profile/09073168571056515665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_yHilkNlNqrs/SetleTjYMSI/AAAAAAAAAAM/nATmv8YVh_I/S220/bryan.face.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9205721746908768127.post-2716926053360930319</id><published>2009-04-22T20:02:00.000-07:00</published><updated>2009-04-22T21:09:39.258-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>bmpfs</title><content type='html'>This is really cool!  File systems you can SEE!&lt;br /&gt;&lt;br /&gt;Python code:&lt;br /&gt;&lt;code&gt;#!/usr/bin/python &lt;br /&gt;# create_image.py&lt;br /&gt;import Image&lt;br /&gt;im = Image.new('RGB', (8192,8192),(255,255,255))&lt;br /&gt;im.save('new.bmp', 'BMP')&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Put the above in a file and run:&lt;br /&gt;&lt;code&gt;python create_image.py&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This creates a blank, white bitmap.  Nothing special yet.&lt;br /&gt;&lt;br /&gt;Next do this:&lt;br /&gt;&lt;code&gt;sudo losetup /dev/loop0 new.bmp -o 100&lt;br /&gt;sudo mkfs.ext2 /dev/loop0&lt;br /&gt;sudo losetup /dev/loop0 -d&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now look at the bitmap.  There's a thin bar along the bottom.  That's your file allocation table!  You now have an ~190 MB combination disk image-bitmap image!&lt;br /&gt;&lt;br /&gt;Now lets stick something in our new "disk image":&lt;br /&gt;&lt;code&gt;mkdir temp&lt;br /&gt;sudo mount -o loop,offset=100,user new.bmp temp&lt;br /&gt;sudo chown 1000:1000 temp  &lt;/code&gt;# replace 1000 with you user and group id respectively&lt;br /&gt;&lt;br /&gt;Now copy something respectably sized into temp.  I copied a 32mb video into there.&lt;br /&gt;&lt;br /&gt;Unmount the image and you can look at it:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo umount temp&lt;br /&gt;eog new.bmp&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;also try this (imagemagick required):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;convert new.bmp new.png&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Note the size of the file(s) you put in there.  I put a 33799296 byte video in there and the png came out to 33939231 bytes.  (Videos are basically not compressible.)  Not bad.  Since png uses lossless compression, you can convert back and the bitmap still mounts!  Try it!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_yHilkNlNqrs/Se_hGcWflQI/AAAAAAAAABQ/LVCEZyftVXs/s1600-h/new.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://2.bp.blogspot.com/_yHilkNlNqrs/Se_hGcWflQI/AAAAAAAAABQ/LVCEZyftVXs/s320/new.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5327724385008588034" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9205721746908768127-2716926053360930319?l=randommusingsofarealgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommusingsofarealgeek.blogspot.com/feeds/2716926053360930319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://randommusingsofarealgeek.blogspot.com/2009/04/bmpfs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/2716926053360930319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/2716926053360930319'/><link rel='alternate' type='text/html' href='http://randommusingsofarealgeek.blogspot.com/2009/04/bmpfs.html' title='bmpfs'/><author><name>Bryan</name><uri>http://www.blogger.com/profile/09073168571056515665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_yHilkNlNqrs/SetleTjYMSI/AAAAAAAAAAM/nATmv8YVh_I/S220/bryan.face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_yHilkNlNqrs/Se_hGcWflQI/AAAAAAAAABQ/LVCEZyftVXs/s72-c/new.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9205721746908768127.post-258481629471033143</id><published>2009-04-21T06:13:00.000-07:00</published><updated>2009-04-21T06:49:51.615-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Why are windows executables so big?</title><content type='html'>So I found a cool search tool by Didier Stevens:  &lt;a href='http://blog.didierstevens.com/programs/xorsearch/'&gt;http://blog.didierstevens.com/programs/xorsearch/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I goes through a file and searches for a string, and also several common transpositions of that word.  It included a windows executable :-(, but it built fine with gcc and appears to work! :-)  I will definitely use this.&lt;br /&gt;&lt;br /&gt;But, it got me thinking.  I could use my new tool! I could look at the difference gross between a Windows a Linux executable with bin2bmp.  (Cut me some slack, I like pictures...)  Here are the results:&lt;br /&gt;&lt;br /&gt;Linux Binary (gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_yHilkNlNqrs/Se3Hx4dCkVI/AAAAAAAAAAw/u4G2dHfn97U/s1600-h/XORSearch.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 128px; height: 29px;" src="http://1.bp.blogspot.com/_yHilkNlNqrs/Se3Hx4dCkVI/AAAAAAAAAAw/u4G2dHfn97U/s320/XORSearch.jpg" alt="" id="BLOGGER_PHOTO_ID_5327133594030870866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Windows Binary (Borland C++ - Copyright 1999 Inprise Corporation):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_yHilkNlNqrs/Se3ITQBGiXI/AAAAAAAAABA/XvaWKpLQCz0/s1600-h/XORSearch.exe.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 128px; height: 138px;" src="http://3.bp.blogspot.com/_yHilkNlNqrs/Se3ITQBGiXI/AAAAAAAAABA/XvaWKpLQCz0/s320/XORSearch.exe.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5327134167291824498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To be fair, his windows binary is digitally signed, but that can't be all the difference?  Is it statically linked maybe?&lt;br /&gt;&lt;br /&gt;Linux Statically Linked Binary (gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_yHilkNlNqrs/Se3KWuiEBCI/AAAAAAAAABI/fNSVFpv-VOo/s1600-h/XORSearch-static.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 182px;" src="http://2.bp.blogspot.com/_yHilkNlNqrs/Se3KWuiEBCI/AAAAAAAAABI/fNSVFpv-VOo/s320/XORSearch-static.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5327136426045998114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Maybe not.  I don't have a way to generate a Windows statically linked binary for comparison though... anyway this was mostly just an excuse to play with my new tool.  But I am curious.  &lt;br /&gt;&lt;br /&gt;BTW, Latest version of bin2bmp here:  &lt;a href='http://sourceforge.net/projects/bin2bmp/'&gt;http://sourceforge.net/projects/bin2bmp/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9205721746908768127-258481629471033143?l=randommusingsofarealgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://randommusingsofarealgeek.blogspot.com/feeds/258481629471033143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://randommusingsofarealgeek.blogspot.com/2009/04/why-are-windows-executables-so-big.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/258481629471033143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/258481629471033143'/><link rel='alternate' type='text/html' href='http://randommusingsofarealgeek.blogspot.com/2009/04/why-are-windows-executables-so-big.html' title='Why are windows executables so big?'/><author><name>Bryan</name><uri>http://www.blogger.com/profile/09073168571056515665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_yHilkNlNqrs/SetleTjYMSI/AAAAAAAAAAM/nATmv8YVh_I/S220/bryan.face.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_yHilkNlNqrs/Se3Hx4dCkVI/AAAAAAAAAAw/u4G2dHfn97U/s72-c/XORSearch.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9205721746908768127.post-6277291921221761513</id><published>2009-04-18T11:56:00.000-07:00</published><updated>2009-04-19T11:48:45.895-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Making pictures of files</title><content type='html'>Hello world!&lt;br /&gt;&lt;br /&gt;I made a little python tool and wanted to share it.  It's a neat little tool to visualize binary data in a graphical form. It's really interesting to look at different types of files.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#!/usr/bin/python&lt;br /&gt;#"Copyright 2009 Bryan Harris"&lt;br /&gt;#&lt;br /&gt;#This file is part of bin2bmp.py.&lt;br /&gt;#&lt;br /&gt;#    bin2bmp.py is free software; you can redistribute it and/or modify&lt;br /&gt;#    it under the terms of the GNU General Public License as published by&lt;br /&gt;#    the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;#    (at your option) any later version.&lt;br /&gt;#&lt;br /&gt;#    bin2bmp.py is distributed in the hope that it will be useful,&lt;br /&gt;#    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;#    GNU General Public License for more details.&lt;br /&gt;#&lt;br /&gt;#    You should have received a copy of the GNU General Public License&lt;br /&gt;#    along with bin2bmp.py; if not, write to the Free Software&lt;br /&gt;#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA&lt;br /&gt;&lt;br /&gt;import Image&lt;br /&gt;import os&lt;br /&gt;import sys&lt;br /&gt;import array&lt;br /&gt;&lt;br /&gt;if len(sys.argv)&lt;3:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print "usage:", sys.argv[0], "filename width"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(-1)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;try:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width=int(sys.argv[2])&lt;br /&gt;except:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print "The second argument, "+sys.argv[2]+", does not appear to be an integer!"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;tmpfile = sys.argv[1]&lt;br /&gt;filename = os.path.split(sys.argv[1])[1]&lt;br /&gt;try:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fileobj = open(tmpfile, mode='rb')&lt;br /&gt;except:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print "Can't open "+sys.argv[1]+" for some reason."&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(-1)&lt;br /&gt;&lt;br /&gt;size=os.path.getsize(tmpfile)&lt;br /&gt;buffer=array.array('B',fileobj.read())&lt;br /&gt;buffer.reverse()&lt;br /&gt;print filename+':',size,"bytes"&lt;br /&gt;chunks=size/3&lt;br /&gt;black=(0,0,0)&lt;br /&gt;white=(255,255,255)&lt;br /&gt;im = Image.new("RGB",(width,int(chunks/width)+1),black)&lt;br /&gt;for i in range(chunks):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x=i%(width)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y=i/(width)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RGB=(buffer.pop(),buffer.pop(),buffer.pop())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#if i&lt;20:print RGB&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;im.putpixel((x,y),RGB)&lt;br /&gt;im.save(filename+'.bmp',"BMP")&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9205721746908768127-6277291921221761513?l=randommusingsofarealgeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='' href='http://bazaar.launchpad.net/~brywilharris/+junk/bin2bmp/annotate/head:/bin2bmp.py' length='0'/><link rel='replies' type='application/atom+xml' href='http://randommusingsofarealgeek.blogspot.com/feeds/6277291921221761513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://randommusingsofarealgeek.blogspot.com/2009/04/making-pictures-of-files.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/6277291921221761513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205721746908768127/posts/default/6277291921221761513'/><link rel='alternate' type='text/html' href='http://randommusingsofarealgeek.blogspot.com/2009/04/making-pictures-of-files.html' title='Making pictures of files'/><author><name>Bryan</name><uri>http://www.blogger.com/profile/09073168571056515665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_yHilkNlNqrs/SetleTjYMSI/AAAAAAAAAAM/nATmv8YVh_I/S220/bryan.face.jpg'/></author><thr:total>0</thr:total></entry></feed>
