<?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>Dellanave &#187; Haxor</title>
	<atom:link href="http://www.dellanave.com/blog/category/haxor/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dellanave.com/blog</link>
	<description></description>
	<lastBuildDate>Tue, 29 Nov 2011 02:45:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Add a Power Adapter to your Withings Scale</title>
		<link>http://www.dellanave.com/blog/2010/02/19/add-a-power-adapter-to-your-withings-scale/</link>
		<comments>http://www.dellanave.com/blog/2010/02/19/add-a-power-adapter-to-your-withings-scale/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 18:00:52 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Haxor]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.dellanave.com/blog/?p=400</guid>
		<description><![CDATA[I recently picked up a Withings scale because I am tracking as much data as I possibly can while using the Perpetual Progress protocol.  It is neat and everything, but it has one massive design flaw.  It is a Wifi scale that uses AAA batteries. Suffice to say it chewed through a set of batteries [...]]]></description>
			<content:encoded><![CDATA[<p>I recently picked up a Withings scale because I am tracking as much data as I possibly can while using the <a href="http://www.adamtglass.com/biofeedback/">Perpetual Progress protocol</a>.  It is neat and everything, but it has one massive design flaw.  It is a Wifi scale that uses <strong>AAA batteries.</strong> Suffice to say it chewed through a set of batteries in 1 week.  There is no option to use a power adapter at all.  Horrible, horrible design decision.  Fortunately, it was pretty trivial to hack.</p>
<blockquote><p>UPDATE: A few hours after posting this I got an email from the CTO of Withings.  He checked out the debug logs, and determined that the batteries that shipped with the scale were defective (voltage logs at the bottom).  According to Withings, the batteries should last 6 months on a good set of alkaline batteries.</p>
<p>The prompt and thorough follow-up by the CTO just shows how well they&#8217;ve thought out this product.  I don&#8217;t want this to be a full review, just a quick hack post, but I have to say the product is <strong>exceptional</strong>.  All the setup and out-of-box stuff was fantastic.  The Withings scale is a great product.</p>
<p>Nonetheless, I am sticking with AC power.</p></blockquote>
<p>First thing you need is a <strong>power adapter </strong>or wall wart.  You&#8217;ll need something that outputs roughly 6 volts, and I&#8217;m just guessing on current requirements but 500mA should be more than enough.  I happened to have a Nokia phone charger laying around that was rated at 5.7V and 800mA.  Perfect.  If you don&#8217;t have things like that laying around, make a trip to Radio Shack and buy a 6V wall wart.</p>
<p>Next step was to determine the polarity and which of the battery contacts mattered.  The way these things work is that the metal tabs are just connect different ends of the batteries to each other in series.  So only 2 matter, the negative and the positive connected to the device.  They&#8217;re marked on this image:</p>
<p><img class="size-full wp-image-407 alignnone" title="IMG_0001.JPG (7 documents, 7 total pages)-1" src="http://www.dellanave.com/blog/wp-content/uploads/2010/02/IMG_0001.JPG-7-documents-7-total-pages-13.png" alt="IMG_0001.JPG (7 documents, 7 total pages)-1" width="306" height="296" /></p>
<p>Next up you&#8217;re going to strip the wires and determine the polarity of the wall wart.  I can&#8217;t think of any way to explain how to do this without using a voltmeter or at worst an LED.  Then again, if you don&#8217;t have a voltmeter around the house you probably aren&#8217;t trying to hack your Wifi scale to add a power adapter.</p>
<p><img class="aligncenter size-full wp-image-406" title="IMG_0003.JPG (7 documents, 7 total pages)" src="http://www.dellanave.com/blog/wp-content/uploads/2010/02/IMG_0003.JPG-7-documents-7-total-pages3.png" alt="IMG_0003.JPG (7 documents, 7 total pages)" width="538" height="318" /></p>
<p>I could have made this next part a lot more complicated, but I am a fan of getting things done, not coming up with impressive complex solutions.   All I did was strip the wires, insert them behind the batter tabs, and pop the batteries in.  This pushed the wires against the case so hard, that there is no way they are going anywhere.</p>
<p><img class="aligncenter size-full wp-image-405" title="IMG_0004.JPG (7 documents, 7 total pages)" src="http://www.dellanave.com/blog/wp-content/uploads/2010/02/IMG_0004.JPG-7-documents-7-total-pages3.png" alt="IMG_0004.JPG (7 documents, 7 total pages)" width="571" height="287" /></p>
<p>Since the batteries are there for no purpose but to hold the wires, and you&#8217;re leaving the middle 2 batteries out, they aren&#8217;t even part of the circuit.  I added a couple pieces of tape to keep everything in place, but they are very very snug anyway.</p>
<p><img class="aligncenter size-full wp-image-403" title="IMG_0006.JPG (7 documents, 7 total pages)" src="http://www.dellanave.com/blog/wp-content/uploads/2010/02/IMG_0006.JPG-7-documents-7-total-pages4.png" alt="IMG_0006.JPG (7 documents, 7 total pages)" width="327" height="330" /></p>
<p>Magic:</p>
<p><img class="aligncenter size-full wp-image-402" title="IMG_0008.JPG (7 documents, 7 total pages)" src="http://www.dellanave.com/blog/wp-content/uploads/2010/02/IMG_0008.JPG-7-documents-7-total-pages3.png" alt="IMG_0008.JPG (7 documents, 7 total pages)" width="443" height="343" /><br />
I would really hope that the rev 2 of this scale would have a jack for a power adapter.  Using batteries for something like this is inexcusable.</p>
<blockquote><p><span style="font-family: Arial; color: #0000ff; font-size: x-small;">[DBLIB] DBLIB_IE_PWR_DEBUG            : &#8220;6.49V (6.15V, 2.77Ohm)  97%&#8221;</span></p>
<p><span style="font-family: Arial; color: #0000ff; font-size: x-small;"><span><span style="font-family: Arial; color: #0000ff; font-size: x-small;">4 days after you packed out the scale</span></span></span></p>
<p><span style="font-family: Arial; color: #0000ff; font-size: x-small;"><span><span style="font-family: Arial; color: #0000ff; font-size: x-small;"><span><span style="font-family: Arial; color: #0000ff; font-size: x-small;">[DBLIB] DBLIB_IE_PWR_DEBUG            : &#8220;6.23V (5.78V, 3.89Ohm)  77%&#8221; </span></span></span></span></span></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.dellanave.com/blog/2010/02/19/add-a-power-adapter-to-your-withings-scale/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to Setup Apple Qmaster and Compressor for Cluster Rendering</title>
		<link>http://www.dellanave.com/blog/2010/02/19/how-to-setup-apple-qmaster-and-compressor-for-cluster-rendering/</link>
		<comments>http://www.dellanave.com/blog/2010/02/19/how-to-setup-apple-qmaster-and-compressor-for-cluster-rendering/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 17:44:49 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Haxor]]></category>

		<guid isPermaLink="false">http://www.dellanave.com/blog/?p=408</guid>
		<description><![CDATA[Setting up Apple Qmaster and Compressor to use as many machines as you have for rendering can save a ton of time when compressing video for the web.  You&#8217;ll need to install Compressor on each machine, and then load up the Qmaster preference pane.  Here are the settings.  One absolutely crucial thing is the Cluster [...]]]></description>
			<content:encoded><![CDATA[<p>Setting up Apple Qmaster and Compressor to use as many machines as you have for rendering can save a ton of time when compressing video for the web.  You&#8217;ll need to install Compressor on each machine, and then load up the Qmaster preference pane.  Here are the settings.  One absolutely crucial thing is the Cluster Storage path.  If all the computers can&#8217;t access this, then the render files can&#8217;t get passed around and the cluster will fail miserably.  It does NOT fail gracefully.  Here are the 2 best solutions that I can come up with:</p>
<ol>
<li>Use a shared NAS or SAN drive and set all of the paths to the exact same path.  This would work well I think if you had extremely fast network attached storage.</li>
<li>Set them like I have, and make sure that all the nodes are running under the same username and the machines can access each other.  I don&#8217;t specifically know that this is how it works, but I&#8217;m pretty sure it is.</li>
</ol>
<p>Here are the settings:</p>
<p>On your main cluster controller machine:</p>
<p><img class="alignnone" src="http://www.dellanave.com/skitch//Apple_Qmaster_%2832-bit%29-20100219-112747.png" alt="" width="599" height="558" /></p>
<p>Advanced tab:</p>
<p><img class="alignnone" src="http://www.dellanave.com/skitch//Apple_Qmaster_%2832-bit%29-20100219-112846.png" alt="" width="586" height="543" /></p>
<p>Setup tab for worker node:</p>
<p><img style="border: 0px initial initial;" src="http://www.dellanave.com/skitch//mediamini-20100219-113145.png" alt="" width="633" height="581" /></p>
<p>Advanced tab for worker nodes:</p>
<p><img style="border: 0px initial initial;" src="http://www.dellanave.com/skitch//mediamini-20100219-113032.png" alt="" width="661" height="581" /></p>
<p>Also, set this in Compressor-&gt;Preferences:</p>
<p><img class="alignnone" src="http://www.dellanave.com/skitch//Preferences-20100219-120832.png" alt="" width="335" height="229" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dellanave.com/blog/2010/02/19/how-to-setup-apple-qmaster-and-compressor-for-cluster-rendering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Split Test Your WordPress Theme (w/ Plugin)</title>
		<link>http://www.dellanave.com/blog/2009/07/15/how-to-split-test-your-wordpress-theme-w-plugin/</link>
		<comments>http://www.dellanave.com/blog/2009/07/15/how-to-split-test-your-wordpress-theme-w-plugin/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 21:12:35 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Haxor]]></category>
		<category><![CDATA[SEM]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.dellanave.com/blog/?p=271</guid>
		<description><![CDATA[Here is a rudimentary solution that allows you to split test all metrics on your WordPress blog.  If there is legitimate usage of this, I will make changes and improvements but at this point I am just throwing together a 15 minute SOLUTION not a complete idiot-proof package.  Please, give me feedback, I appreciate it.  [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a rudimentary solution that allows you to split test all metrics on your WordPress blog.  If there is legitimate usage of this, I will make changes and improvements but at this point I am just throwing together a 15 minute SOLUTION not a complete idiot-proof package.  Please, give me feedback, I appreciate it.  This was created in response to <a href="http://www.cindyalvarez.com/data-driven/how-to-ab-test-your-wordpress-blog">this</a>, so you can go there to read about why Google Website Optimizer is not the right solution for testing metrics across an entire site.</p>
<p><a title="Split Test WordPress Plugin" href="http://www.dellanave.com/blog/ddn_wp_splittest-0.2.zip ">Download plugin.</a></p>
<p>First thing you need to do is create 2 theme folders.</p>
<p>theme1 is your original theme</p>
<p>theme2 contains the same theme, but with the changes you want to test</p>
<p>Set up 2 Google Analytics accounts.  This seems easiest to do with 2 different email addresses, and 2 browsers so that you can load both at the same time, and it doesn&#8217;t complain about the URL being the same.</p>
<ol>
<li>Open theme1/footer.php and insert the GA code from one account into the footer before the &lt;/body&gt; tag.</li>
<li>Open theme2/footer.php and insert the GA code from one account into the footer before the &lt;/body&gt; tag.</li>
</ol>
<p>That&#8217;s about it.  The plugin will drop a cookie on the user telling them which theme file to load.  If you want to completely change the themes, you can edit the plugin and change the cookie name to something new.  The cookie lasts for 30 days by default.</p>
<p><strong>PS. </strong>I&#8217;m gonna admit right now that I almost always make mistakes the first time around.  If this doesn&#8217;t work for you &#8211; let me know.  If this doesn&#8217;t work for you and you figure out why &#8211; PLEASE hit me up and let me know so I can update this post.</p>
<p><strong>P.P.S</strong> This could be pretty easily made so much better, easier to install, easier to use, and more flexible.  We&#8217;ll see if the demand warrants it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dellanave.com/blog/2009/07/15/how-to-split-test-your-wordpress-theme-w-plugin/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Solution for onLoad + PNG fix defer problem in IE</title>
		<link>http://www.dellanave.com/blog/2008/05/20/solution-for-onload-png-fix-defer-problem-in-ie/</link>
		<comments>http://www.dellanave.com/blog/2008/05/20/solution-for-onload-png-fix-defer-problem-in-ie/#comments</comments>
		<pubDate>Tue, 20 May 2008 07:41:05 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Haxor]]></category>

		<guid isPermaLink="false">http://www.dellanave.com/blog/?p=147</guid>
		<description><![CDATA[I had the strangest problem today with a page not triggering an OnLoad because something was hanging the load in IE. Of all things, it was the hack to make PNG transparency work in IE. Once I figured out the problem it was easy to fix. Even more convenient, I found this modified version of [...]]]></description>
			<content:encoded><![CDATA[<p>I had the strangest problem today with a page not triggering an OnLoad because something was hanging the load in IE.  Of all things, it was the hack to make PNG transparency work in IE.</p>
<p>Once I figured out the problem it was easy to fix.  Even more convenient, I found this <a href="http://maxtoroq.wordpress.com/2007/03/23/problems-with-pngfixjs-when-using-swfobjectjs/">modified version of the pngfix</a> that solved the onload hanging problem.</p>
<p>h8 IE.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dellanave.com/blog/2008/05/20/solution-for-onload-png-fix-defer-problem-in-ie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tips on Writing a Scraper</title>
		<link>http://www.dellanave.com/blog/2008/01/11/tips-on-writing-a-scraper/</link>
		<comments>http://www.dellanave.com/blog/2008/01/11/tips-on-writing-a-scraper/#comments</comments>
		<pubDate>Fri, 11 Jan 2008 19:23:29 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Haxor]]></category>
		<category><![CDATA[SEM]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://www.dellanave.com/blog/2008/01/11/tips-on-writing-a-scraper/</guid>
		<description><![CDATA[A couple weeks ago I got an email from a friend asking for some tips on writing a scraper. As I was responding, I realized it would make a good post. I think writing scrapers is one of my specialties, and I&#8217;ve yet to come across a site I haven&#8217;t been able to pillage. Here&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>A couple weeks ago I got an email from a friend asking for some tips on writing a scraper.  As I was responding, I realized it would make a good post.   I think writing scrapers is one of my specialties, and I&#8217;ve yet to come across a site I haven&#8217;t been able to pillage.</p>
<p>Here&#8217;s a few thoughts:</p>
<p>I like Perl a lot for scraping, but PHP works too.  Since scraping is kind of a rapid-prototype situation you should just use the tool you&#8217;re most comfortable with.  The nice part about Perl for scraping is all the available modules to do various data mangling, and the ability to multi-thread it.  I rarely write a scraper in PHP, but if you&#8217;re more comfortable with PHP by all means USE IT.</p>
<p>Scrape ALL THE DATA YOU CAN.  You might think you only want one little bit of data from a site.  Take everything you can and dump it into a database.  Look, you&#8217;re pulling the page anyway, you might as well save everything in case you need it later.  Dump everything into a database, and then pull out what you want from there into whatever you&#8217;re using it for.  You&#8217;ll never regret having the full dump, but you will regret not grabbing everything when you need another bit of data and you didn&#8217;t scrape it.</p>
<p>Be smart about re-indexing it.  Say you scrape somesite.com/id=123.  Don&#8217;t put it into your database with id=123.  Some day the site owner you ripped is going to notice all the IDs are the same and could use that against you.  Re-index it.  Going back to my previous point, keep THEIR ids in a database in case you need to rip some more data, you have their keys intact.</p>
<p>A lot of people worry about rotating or proxying IPs when they&#8217;re scraping.  Don&#8217;t waste your time.  I&#8217;ve yet to find a site (other than Google) that will actually be aware enough to block you for scraping.  In the same vein, don&#8217;t piss-pound someone&#8217;s server when you&#8217;re scraping them.  Put a sleep(1) in for christs sake.</p>
<p>Distributing your scraper?  That might make sense if you&#8217;re planning on spidering or scraping a lot of sites.  Use a common database and make sure your scrapers never cross paths.  Its a waste of your resources as well as the site you&#8217;re pillaging.</p>
<p>Don&#8217;t overthink or overcode it.  This is like anything else.  I&#8217;ve literally seen people spend a week writing a scraper with a million bells and whistles.  Just make it WORK and run it.</p>
<p>Be aware of cookies.  Sometimes you&#8217;ll want your scraper to happily accept cookies, other times you want to make sure it ignores them.  Depends on the site you&#8217;re scraping.  Be aware that some sites will have interstitials or other things that will mess with your scrape.  Cookies may or may not be away around those ads.  Regardless, be aware of them and code accordingly.</p>
<p>Use Live HTTP Headers in Firefox if you&#8217;re struggling with understanding why you can access a site in a browser but your Perl script doesn&#8217;t get the same responses.</p>
<p>Don&#8217;t forget APIs.  Sometimes you don&#8217;t even need to scrape, you can pull the data with an API.  One time I wanted a database of like every CD ever made.  Amazon API for the win.</p>
<p>Finally, remember, if a browser can access it, you can scrape it.  If you can&#8217;t figure it out, you&#8217;re not trying hard enough.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dellanave.com/blog/2008/01/11/tips-on-writing-a-scraper/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>How to Hack XSilva Lightspeed to Get OpenBase Password</title>
		<link>http://www.dellanave.com/blog/2007/11/19/how-to-hack-xsilva-lightspeed-to-get-openbase-password/</link>
		<comments>http://www.dellanave.com/blog/2007/11/19/how-to-hack-xsilva-lightspeed-to-get-openbase-password/#comments</comments>
		<pubDate>Mon, 19 Nov 2007 21:35:09 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Haxor]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://www.dellanave.com/blog/2007/11/19/how-to-haxor-xsilva-lightspeed-to-get-openbase-password/</guid>
		<description><![CDATA[Having recently invested in a retail store, I had to go through the unenviable process of choosing a Point of Sale software. Doing this is NOT fun. The software is expensive, and if you don&#8217;t like it 6 months later its not exactly trivial to switch to another POS software. Once your inventory is loaded [...]]]></description>
			<content:encoded><![CDATA[<p>Having recently invested in a retail store, I had to go through the unenviable process of choosing a Point of Sale software.  Doing this is NOT fun.  The software is expensive, and if you don&#8217;t like it 6 months later its not exactly trivial to switch to another POS software.  Once your inventory is loaded in, you really don&#8217;t want to have to switch.</p>
<p>Anyway I ended up choosing <a href="http://www.xsilva.com/features.php">XSilva Lightspeed</a>.  For the most part we are very happy with it so far.  The only thing I don&#8217;t like is that it doesn&#8217;t have a way to automatically email out reports.  I&#8217;d like to see what kind of sales the store is doing on a daily basis.  Since the whole thing is based on OpenBase/SQL, I figured it would be trivial to write some tools to generate and email my own reports.  I did a quick search, and came to find out that XSilva keeps the database password a secret.  Lame.  Granted, I didn&#8217;t try to call their tech support and insist that I wanted it but it seems like from responses on their forum that they won&#8217;t give it up.</p>
<p>So here&#8217;s how to hack it:</p>
<p>On the machine that has Lightspeed and the server, fire up Lightspeed but don&#8217;t login.  Open up a terminal, and I&#8217;m assuming you already have tcpdump installed.</p>
<p><code>/usr/sbin/tcpdump -i lo0 -s0 -c 1000 -x -w dump</code></p>
<p>Run that tcpdump, and then login to lightspeed.  Once LS has logged in, you can Ctl-C the tcpdump.</p>
<p>Now use ngrep to pull out the login information from the dump file:<br />
<code><br />
ngrep -wi "dbpassword" -I dump<br />
</code></p>
<p>The output of this looks like:<br />
<code><br />
input: dump<br />
match: ((^dbpassword\W)|(\Wdbpassword$)|(\Wdbpassword\W))<br />
##################################<br />
######################<br />
#########################<br />
T 127.0.0.1:56526 -> 127.0.0.1:20223 [AP]<br />
  ....|dict|....action....call_register....usersAllowed....1000<br />
....dblogin....lightspeed....dbpassword....adminXXXXX....userlogin....light<br />
  speed....hostName....192.168.3.180....databaseName.<br />
...xsilva_db_217demo....softwareId....Lig<br />
htSpeed:REALbasicCM....processId....0016CB08<br />
  4925_21777781....<br />
########################<br />
</code></p>
<p>See the adminXXXXX?  That&#8217;s the db admin password.  I redacted the actual string.  I&#8217;m HOPING that they actually use a random string for every LS install.  I didn&#8217;t verify on another install that its different.  If not, I don&#8217;t really want to publish the password for every LS SQL database.  However, they are retards if they don&#8217;t use a random secret.</p>
<p>Now you can go nuts on the database.</p>
<p><strong>Update: I&#8217;ve verified on 2 installs that the admin password for the SQL is the same.  Lesson here: firewall off your POS or anyone can modify your store database.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dellanave.com/blog/2007/11/19/how-to-hack-xsilva-lightspeed-to-get-openbase-password/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

