<?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>ForestMist &#187; Software</title>
	<atom:link href="http://forestmist.org/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://forestmist.org</link>
	<description></description>
	<lastBuildDate>Mon, 30 Apr 2012 20:25:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>PHP 5 &#8211; Sort by Folder</title>
		<link>http://forestmist.org/2011/06/php-5-sort-by-folder/</link>
		<comments>http://forestmist.org/2011/06/php-5-sort-by-folder/#comments</comments>
		<pubDate>Sun, 26 Jun 2011 23:01:50 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 5]]></category>

		<guid isPermaLink="false">http://forestmist.org/?p=1295</guid>
		<description><![CDATA[Recently, I needed to display a list of files with PHP. My only caveat was that I wanted to do so using newer methods of PHP 5 where possible. I was delighted to find scandir. Problem was, scandir returns files mixed with folders and that would upset my flock of easily frightened Windows users. So a quick&#8230; er [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I needed to display a list of files with PHP. My only caveat was that I wanted to do so using newer methods of PHP 5 where possible.</p>
<p>I was delighted to find <a href="http://php.net/manual/en/function.scandir.php">scandir</a>. Problem was, scandir returns files mixed with folders and that would upset my flock of easily frightened Windows users.</p>
<p>So a quick&#8230; er medium&#8230; ok fine,  an exasperating search on Google and only outdated, complex and inefficient samples were to be found. <a href="http://www.youtube.com/watch?v=1Lr_TVZnuxs">PUFF</a>!</p>
<p>So, here is the version I came up with.</p>
<div style="text-align: center"><a class="css3-button" href="http://forestmist.org/share/code/php-sort-by-folder/demo/">Demo<span></span></a></div>
<h2>Downloads</h2>
<ul>
<li><a href="/share/code/php-sort-by-folder/Sort%20by%20Folder.zip"><strong>Sort by Folder</strong></a> is optimized for easier PHP comprehension.</li>
<li><a href="http://forestmist.org/share/code/php-sort-by-folder/Sort%20by%20Folder%20(with%20HTML).zip"><strong>Sort by Folder (with HTML)</strong></a> contains extra code which adds more information and cleaner formatting to the generated HTML.</li>
</ul>
<h2>How it works</h2>
<p>The most crucial part of all the code you will see inside the demo is the PHP getObjects() function. Without this everything else would be moot so lets go over it in a bit more detail.</p>
<pre class="brush: php; title: ; notranslate">
function getObjects($path) {
    $path .= '/';
    $array = scandir($path); // returns an array of files and folders sorted alphabetically
    $array = array_diff($array, array('.', '..', '.DS_Store', 'Thumbs.db')); // filter out things we don't want

    $return_array = array();

    foreach($array as $item) {
        if(is_dir($path . $item)) {
            $return_array[$item] = getObjects($path . '/' . $item);
        }
    }

    $count = 0;
    foreach($array as $item) {
        if(!is_dir($path . $item)) {
            $return_array[$item] = $item;
            $count++;
        }
    }
    if($count == 0) {
        $return_array[''] = '';
    }

    return $return_array;
}
</pre>
<p><strong>Line 3</strong><br />
Scandir returns an array of mixed folders and files for the path requested. This does not include sub directories.</p>
<p><strong>Line 4</strong><br />
Filter out any undesirables. That means the current &#8216;.&#8217; and parent directory &#8216;..&#8217; although we don&#8217;t want any Mac &#8216;.DS_Store&#8217; or WIndows &#8216;Thumbs.db&#8217; files either.</p>
<p><strong>Line 6</strong><br />
We create a new array called $return_array which will be built up with all the folders and files in the order we want them. Folders first, then files. Both alphabetically.</p>
<p><strong>Line 8-12</strong><br />
Here we loop through each item in our filtered results from scandir. If the item is a directory we set the results of $return_array[$item] to a recursive call of the very same function we are already in. Traveling deeper each recursive call, that means we can handle seemingly infinite directory structures. Neat.</p>
<p>This first loop through <em>only</em> cares about directories which is exactly what puts them first in our $return_array. Files will come next.</p>
<p><strong>Line 14</strong><br />
We set a variable $count to 0 to keep track of how many files we find in the next foreach loop.</p>
<p><strong>Line 15-19</strong><br />
In this second loop we check to make sure the items are not directories and if so return those items while incrementing the $count variable.</p>
<p><strong>Line 21-23</strong><br />
Now that we are finished looping for files we can check our $count variable. If 0 then set $return_array to &#8221;. This can useful later in case we want to do something special for directories without files.</p>
<p><strong>Line 25</strong><br />
Finally, we return whatever we have found. In most cases this means returning an $array to another instance of the function although ultimately the original one will return a completed array to the PHP call outside our function that started it all.</p>
<p>In the demo we can now loop through this nicely ordered array and write out some HTML and CSS, add a sprinkle of JavaScript and we have a real working web app.</p>
<div style="position: absolute; margin-left: -96px;"><a href="http://www.flickr.com/search/?q=elephpant&#038;s=rec"><img src="http://forestmisty.org/wp-content/uploads/2011/06/php-elephant.png" width="65" height="88" style="border-width: 0px; moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none;"><img src="http://forestmisty.org/wp-content/uploads/2011/06/php-elephant-nose.png" width="95" height="89" style="border-width: 0px; moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; position: absolute; margin-left: -66px;"></a></div>
<h2>Epilogue</h2>
<p>Once you get your head around recursive loops things become much simpler. Plus you get to worry more about optimizing your code since each loop can be run so many times. It&#8217;s a good problem to have, really.</p>
<p>Anyway, I certainly hope this helps you in your next endeavor. I know I certainly would be lost without all the wonderful code and tutorials shared by others.</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://forestmist.org/2011/06/php-5-sort-by-folder/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Add a password reset feature to Halogen eAppraisal</title>
		<link>http://forestmist.org/2010/04/add-a-password-reset-feature-to-halogen-eappraisal/</link>
		<comments>http://forestmist.org/2010/04/add-a-password-reset-feature-to-halogen-eappraisal/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 05:45:19 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[Encryption]]></category>

		<guid isPermaLink="false">http://forestmist.org/?p=1058</guid>
		<description><![CDATA[One really important feature missing from Halogen eAppraisal is the ability for users to reset their own passwords. Seems like such a basic feature but even their friendly support folks confirmed that there was no addon or plan to release the feature in a future version. Weird! No matter though, let&#8217;s make our own. Investigation I spent [...]]]></description>
			<content:encoded><![CDATA[<p>One really important feature missing from Halogen eAppraisal is the ability for users to reset their own passwords.</p>
<p>Seems like such a basic feature but even their friendly support folks confirmed that there was no addon or plan to release the feature in a future version. Weird!</p>
<p>No matter though, let&#8217;s make our own.</p>
<h2>Investigation</h2>
<p>I spent untold amounts of time clawing through unfamiliar Java code. A occasional scrap was enough to forge my determination but nothing really made sense yet. Too many files, too many directories but maybe if I just kept trying&#8230;</p>
<p><a href="http://www.youtube.com/watch?v=8HE9OQ4FnkQ">A-ha</a>!</p>
<p>Hidden deep within the lair of &lt;Tomcat&gt;\webapps\Halogen\WEB-INF\classes\com\halogensoftware\common\security\ is a file called &#8216;Utility.class&#8217;. Inside, a string that resembles the worst regular expression ever created.</p>
<p style="padding-left: 30px;">^a`Z{b1Y}c2X[d3W]e4V|f5U\g6T:h7S;i8R&#8221;j9Q&#8217;k0P&lt;l-O&gt;m=N?n~M,o!L.p@K/q#Jr$Is%Ht^Gu&amp;Fv*Ew(Dx)Cy_Bz+A</p>
<p>I was sure this string was used to encrypt the passwords stored in the database but I needed a way to confirm that so&#8230;</p>
<p>Using a test account I set the password to the number 1 which was encrypted as the letter Y. Password 11 became Y}. Password 111 became Y}c.</p>
<p>Ah, so simple!</p>
<p>If your password was the ^ symbol it would find it in the string above and then move right one space and choose the letter &#8220;a&#8221; as your encrypted password. If your password was ^^ then the the first encrypted character would be &#8220;a&#8221; again but the second one would shift two places to the right and store the ` symbol</p>
<p>Here are a few more example conversions.</p>
<ul>
<li>^^^ becomes a`Z</li>
<li>wT7w becomes (hi)</li>
<li>A+z becomes ^^^</li>
</ul>
<p>Notice that in the last example we&#8217;ve simply looped around once we hit the right side of the hash string.</p>
<p>Now that we know how it works let&#8217;s build our own utility in ASP that we can use to reset anyone&#8217;s password.</p>
<h2>The Solution</h2>
<p>Besides the obvious DSN string, you&#8217;ll want to carefully consider how you validate your users.</p>
<p>The setup I used at work talked to a Human Resources database and would validate no less than three pieces of information before even attempting a reset. I urge you dear reader to do the same.</p>
<pre class="brush: vb; title: ; notranslate">
sID = Request.Form(&quot;id&quot;)
sPassword = Request.Form(&quot;password&quot;)

Set oConn = Server.CreateObject(&quot;ADODB.Connection&quot;)
oConn.Open &quot;DSN String for the Halogen eAppraisal Database&quot;

Set oRS = Server.CreateObject(&quot;ADODB.Recordset&quot;)
oRS.Open &quot;SELECT TOP 1 * FROM [view-user_info] WHERE username = '&quot; &amp; sID &amp; &quot;'&quot;, oConn, 0, 3 'adOpenForwardOnly, adLockOptimistic

If not oRS.EOF then
	sKeyCode = &quot;a`Z{b1Y}c2X[d3W]e4V|f5U\g6T:h7S;i8R&quot;&quot;j9Q'k0P&lt;l-O&gt;m=N?n~M,o!L.p@K/q#Jr$Is%Ht^Gu&amp;Fv*Ew(Dx)Cy_Bz+A&quot;
	sKeyCodeLength = Len(sKeyCode)
	x = 1
	sBadChar = 0
	Do until x &gt; Len(sPassword)
		sChar = Mid(sPassword, x, 1)

		If InStr(sKeyCode, sChar) then
			sKeyCodePos = InStr(sKeyCode, sChar) + x
			If sKeyCodePos &gt; sKeyCodeLength then
				'Need to loop around the beginning
				Do until sKeyCodePos &lt;= sKeyCodeLength
					sKeyCodePos = sKeyCodePos - sKeyCodeLength
				loop
			End If
			sEncodeChar = Mid(sKeyCode, sKeyCodePos, 1)
			sEncodePassword = sEncodePassword + sEncodeChar
		Else
			'Could not find a character in sKeyCode
			sBadChar = sBadChar + 1
		End If
		x = x + 1
	loop

	If sBadChar &gt; 0 then
		Response.Write &quot;&lt;p&gt;&lt;strong&gt;Unsupported characters were used to try to set the encrypted password. New password was not saved.&lt;/strong&gt;&lt;/p&gt;&quot;
	Else
		oRS(&quot;password&quot;) = sEncodePassword
		oRS(&quot;password_change_date&quot;) = NULL
		oRS.Update
		Response.Write &quot;&lt;p&gt;The password for your account &quot; &amp; sID &amp; &quot; has been reset.&lt;/p&gt;&quot;
	End If
Else
	Response.Write &quot;&lt;p&gt;&lt;strong&gt;A corresponding account for the user &quot; &amp; sID &amp; &quot; does not exist. Please contact support.&lt;/strong&gt;&lt;/p&gt;&quot;
End If

oRS.Close
oConn.Close
Set oRS = nothing
Set oConn = nothing
</pre>
<p>Questions welcome so feel free to comment below.</p>
<p>See ya later, space cowboy.</p>
]]></content:encoded>
			<wfw:commentRss>http://forestmist.org/2010/04/add-a-password-reset-feature-to-halogen-eappraisal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disable right clicking on images only</title>
		<link>http://forestmist.org/2010/03/disable-right-clicking-on-images-only/</link>
		<comments>http://forestmist.org/2010/03/disable-right-clicking-on-images-only/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 03:53:04 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[MooTools]]></category>
		<category><![CDATA[Web Browser]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://forestmist.org/?p=161</guid>
		<description><![CDATA[There are few instances where disabling someone&#8217;s context menu is appropriate. In most cases it&#8217;s unnecessary and can even lead to infuriating your visitors. Here are some ways to target all the image elements on a page while leaving the rest of the hypertext in peace. JavaScript Lightweight, no framework required and works well in [...]]]></description>
			<content:encoded><![CDATA[<p>There are few instances where disabling someone&#8217;s context menu is appropriate. In most cases it&#8217;s unnecessary and can even lead to infuriating your visitors.</p>
<p>Here are some ways to target all the image elements on a page while leaving the rest of the hypertext in peace.</p>
<h2>JavaScript</h2>
<p>Lightweight, no framework required and works well in IE 6, 7, 8, Chrome, FireFox and Safari. <a href="/wp-content/uploads/2010/03/Protect-Images-with-JavaScript.html">Demo »</a></p>
<pre class="brush: jscript; title: ; notranslate">
document.oncontextmenu = context_menu;

function context_menu(e) {
if (!e) var e = window.event;
	var eTarget = (window.event) ? e.srcElement : e.target;

	if (eTarget.nodeName == &quot;IMG&quot;) {
		//context menu attempt on top of an image element
		return false;
	}
}
</pre>
<hr />
<h2>jQuery</h2>
<p>Perhaps the prettiest code of the three. <a href="/wp-content/uploads/2010/03/Protect-Images-with-jQuery.html">Demo »</a></p>
<pre class="brush: jscript; title: ; notranslate">
$(document).ready(function(){
	$(document).bind(&quot;contextmenu&quot;,function(e){
		if(e.target.nodeName == 'IMG'){
			//context menu attempt on top of an image element
			return false;
		}
	});
});
</pre>
<hr />
<h2>MooTools</h2>
<p>Moo&#8230; <a href="/wp-content/uploads/2010/03/Protect-Images-with-MooTools.html">Demo »</a></p>
<pre class="brush: jscript; title: ; notranslate">
window.addEvent('domready', function() {
	$(document.body).addEvent('contextmenu', function(e) {
		if(e.target.nodeName == 'IMG') {
			//context menu attempt on top of an image element
			return false;
		}
	});
});
</pre>
<hr />
<h2>Final Thoughts</h2>
<p>With a bit more code you can target specific IDs, class names or any number of elemental combinations. Doing so will limit your context menu friendly fire and keep both you and your users in a happy balance.</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://forestmist.org/2010/03/disable-right-clicking-on-images-only/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mass Effect 2 Soundtrack</title>
		<link>http://forestmist.org/2010/02/mass-effect-2-soundtrack/</link>
		<comments>http://forestmist.org/2010/02/mass-effect-2-soundtrack/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 22:17:53 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Mass Effect]]></category>
		<category><![CDATA[Mass Effect 2]]></category>

		<guid isPermaLink="false">http://forestmist.org/?p=813</guid>
		<description><![CDATA[Tali&#39;Zorah knows that even in the future, corded headphones are the way to go. I really enjoyed Mass Effect 2, so much so that I like to imagine talking to people with a choice selector near the bottom of my vision. I usually choose paragon options but I know the usefulness of a well placed [...]]]></description>
			<content:encoded><![CDATA[<div class="story-image" style="background-image: url('http://forestmisty.org/wp-content/uploads/2010/02/Tali-Tunes-700x463.jpg')"><a href="http://forestmisty.org/wp-content/uploads/2010/02/Tali-Tunes.jpg"></a></div>
<p><em>Tali&#39;Zorah knows that even in the future, corded headphones are the way to go.</em></p>
<p>I really enjoyed Mass Effect 2, so much so that I like to imagine talking to people with a choice selector near the bottom of my vision. I usually choose paragon options but I know the usefulness of a well placed renegade response. Be careful with the interrupts though!</p>
<p>Like many good games, I find myself drawn to the soundtrack as a way of reliving our times together. I went searching for it but unfortunately they only released it in <a href="http://www.amazon.com/gp/product/B0031CSCS6">MP3</a> and <a href="http://itunes.apple.com/album/mass-effect-2/id347714861">M4A</a> formats so far.</p>
<p>Call me a snob but I think our future should be filled with upgrades and that means something better than or equal to the sound quality of a Compact Disc.</p>
<p>No worries though because with a bit of patience you too can&#8230;</p>
<h2>Make your own Mass Effect 2 Soundtrack</h2>
<p>These instructions assume you are using the PC version of the game.</p>
<ul>
<li>Download
<ul>
<li><a href="http://ctpax-cheater.narod.ru/personal/afcextr.zip">Mass Effect 2 .AFC extractor</a> | <a href="http://forestmisty.org/wp-content/uploads/2010/02/ME2-AFC-Extractor.zip">mirror</a></li>
<li><a href="http://hcs64.com/files/ww2ogg08.zip">Audiokinetic Wwise RIFF/RIFX Vorbis to Ogg Vorbis converter</a> | <a href="http://forestmisty.org/wp-content/uploads/2010/02/ME2-Audiokinetic-Converter.zip">mirror</a></li>
<li><a href="http://forestmisty.org/wp-content/uploads/2010/02/ME2-Extract-Convert-and-Rename-Scripts.zip">Extract, Convert and Rename scripts</a>.</li>
</ul>
</li>
<li>Unzip everything into a new folder.</li>
<li>Copy &#8220;C:\Games\Mass Effect 2\BioGame\CookedPC\*Music.afc &#8221; to the new folder.
<ul>
<li>Your path may be slightly different depending on where you installed the game.</li>
</ul>
</li>
<li>Run &#8220;Extract, Convert.bat&#8221;</li>
<li>Run &#8220;Rename.vbs&#8221;</li>
</ul>
<h2>Epilogue</h2>
<p>Now you can enjoy 508 pieces of Ogg Vorbis encoded music while you wait for EA to release a proper Compact Disc.</p>
<p>Oh and special thanks to <a href="http://www.furious-angels.com/showpost.php?p=285397&amp;postcount=57">Extirpator</a> for the original instructions on how to accomplish this.</p>
]]></content:encoded>
			<wfw:commentRss>http://forestmist.org/2010/02/mass-effect-2-soundtrack/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Forgotten Memory</title>
		<link>http://forestmist.org/2009/10/forgotten-memory/</link>
		<comments>http://forestmist.org/2009/10/forgotten-memory/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 17:57:45 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Windows Server]]></category>

		<guid isPermaLink="false">http://forestmist.org/?p=255</guid>
		<description><![CDATA[A server with more than 4 GB of memory is usually a beautiful thing. Unless that extra hardware is going to waste that is. *cry* Allow me to explain. A 32-bit system can&#8217;t use more than 4 GB of memory without the help from something called Physical Address Extension (PAE). PAE allows for extra breathing [...]]]></description>
			<content:encoded><![CDATA[<p>A server with more than 4 GB of memory is usually a beautiful thing. Unless that extra hardware is going to waste that is. *cry*</p>
<p><a href="http://forestmisty.org/wp-content/uploads/2009/10/ForgottenMemory-Boot-up-with-6-GB.png"><img class="alignnone size-full wp-image-258" title="Boot up with 6 GB without PAE" src="http://forestmisty.org/wp-content/uploads/2009/10/ForgottenMemory-Boot-up-with-6-GB.png" alt="Boot up with 6 GB without PAE" width="400" height="300" /></a></p>
<p>Allow me to explain.</p>
<p>A 32-bit system can&#8217;t use more than 4 GB of memory without the help from something called <a href="http://en.wikipedia.org/wiki/Physical_Address_Extension">Physical Address Extension</a> (PAE).</p>
<p>PAE allows for extra breathing room through a special mapping area. Up to 64 GB in fact. All you need need is a CPU purchased in the last 8 years along with Microsoft Windows Server 2000 and above.</p>
<p>Of course, if you are already running the 64-bit <a href="http://en.wikipedia.org/wiki/Windows_Server_2008_R2">Windows Server 2008 R2</a> then please go enjoy your 2 TB of memory, 256 processors and lack of female companionship elsewhere please.</p>
<p>For the rest of us, let&#8217;s get our memory back!</p>
<h2>Enabling PAE</h2>
<p><em>These instructions are for Windows Server 2003 although they can easily apply to other versions.</em></p>
<p>Right click on &#8220;My Computer&#8221; and choose properties.</p>
<p>Click on the &#8220;Advanced&#8221; tab.</p>
<p>Click on &#8220;Settings&#8221; within the &#8220;Startup and Recovery&#8221; section.</p>
<p>Click &#8220;Edit&#8221;.</p>
<p>Add the option &#8220;/pae&#8221; to the end of the line for your particular OS under &#8220;[operating systems]&#8220;.</p>
<p>Save the boot.ini file.</p>
<p>Reboot.</p>
<h2>Success</h2>
<p>After the reboot, right click on &#8220;My Computer&#8221; and choose properties again. You should see more memory and the term &#8220;Physical Address Extension&#8221; undernearth your CPU and RAM metrics.</p>
<p>Enjoy!</p>
<p><a href="http://forestmisty.org/wp-content/uploads/2009/10/ForgottenMemory-Boot-up-with-6-GB-with-PAE-enabled.png"><img class="alignnone size-full wp-image-257" title="Boot up with 6 GB with PAE enabled" src="http://forestmisty.org/wp-content/uploads/2009/10/ForgottenMemory-Boot-up-with-6-GB-with-PAE-enabled.png" alt="Boot up with 6 GB with PAE enabled" width="400" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://forestmist.org/2009/10/forgotten-memory/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Asus G1-S Hackintosh</title>
		<link>http://forestmist.org/2009/09/asus-g1-s-hackintosh/</link>
		<comments>http://forestmist.org/2009/09/asus-g1-s-hackintosh/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 01:16:55 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Hackintosh]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://forestmist.org/?p=165</guid>
		<description><![CDATA[For me, the iPhone was the gateway to all things Apple. So much so that I became interested in programming for it and that meant procuring a Macintosh. Doing so would mean parting with 17 Benjamin Franklins though. So, while my mild mannered wallet hid, my mentat mind went to work on a solution. I [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://forestmisty.org/wp-content/uploads/2009/09/Asus-and-Apple.png"><img class="alignnone size-full wp-image-210" title="Asus and Apple Logo" src="http://forestmisty.org/wp-content/uploads/2009/09/Asus-and-Apple.png" alt="Asus and Apple Logo" width="400" height="109" /></a></p>
<p>For me, the iPhone was the gateway to all things Apple. So much so that I became interested in programming for it and that meant procuring a Macintosh. Doing so would mean parting with 17 Benjamin Franklins though. So, while my mild mannered wallet hid, my mentat mind went to work on a solution.</p>
<p>I already owned a very capable <a href="http://www.newegg.com/product/product.aspx?Item=N82E16834220182">Asus G1-S</a> laptop so buying a new <a href="http://www.apple.com/macbookpro/">Macbook Pro</a> was out of the question. I could however consider it expendable and try to hack it&#8230;</p>
<p>With a bit of luck I&#8217;d make a <a href="http://en.wikipedia.org/wiki/Hackintosh">hackintosh</a> although a fried machine, temporarily upset wife and new Macbook wouldn&#8217;t be so bad either.</p>
<h2><span style="font-weight: normal;">The Journey</span></h2>
<p>I was unsure of how to even proceed until the kindly <a href="http://twitter.com/jeffreed">@jeffreed</a> guided me to light side of hackintoshing . This entailed using real retail discs which maintains software update functionality unlike some pirate flavoured distros. A big relief to me too since I&#8217;ve worked hard to leave my pirate skills where they belong, in the 1990s.</p>
<p>After intial course guidance came hours of research and painstaking trial and error. Incremental progress was very slow at first but persistance payed off eventually and I reinstalled (only <a href="http://en.wikipedia.org/wiki/Crom_(fictional_deity)">crom</a> knows how many times) my way to success.</p>
<p>I couldn&#8217;t have accomplished any of this without <a href="http://warp101.blogspot.com/2009/02/ipc-osx86-1056-driver-list.html">oodles</a> of <a href="http://ideneb-1-3-10-5-5-asus-g1-s.wikidot.com/">helpful</a> <a href="http://www.ihackintosh.com/2009/01/install-mac-leopard-os-x-retail-dvd-on-a-ordinary-pc-with-boot-132-hack/">guides</a> and the fine forum folks of <a href="http://www.insanelymac.com/">InsanelyMac</a>.</p>
<h2><span style="font-weight: normal;">Instructions</span></h2>
<ul>
<li>Remove any existing partitions on your hard disk by using <a href="http://gparted.sourceforge.net/">GParted</a>.</li>
<li>Flash your motherboard using the modded <a href="http://forestmisty.org/wp-content/uploads/2009/08/ASUS-G1S-Modded-Bios-for-running-Mac-OS-X-G1Sas.300.zip">ASUS G1S BIOS</a> for better Mac OS X support.</li>
<li>Load BIOS manufacturer defaults and then customize to your liking.</li>
<li>Boot up with the <a href="http://forestmisty.org/wp-content/uploads/2009/08/grub-dfe.iso">GRUB-DFE.iso</a> disc.
<ul>
<li>This disc combines a <a href="http://www.gnu.org/software/grub/">GNU GRUB</a> boot loader with a <a href="http://en.wikipedia.org/wiki/OSx86#Boot-132">Boot-132</a> method to allow installation of  non-hacked, retail copies of Mac OS X.</li>
</ul>
</li>
<li>At the Darwin/x86 command prompt press enter.</li>
<li>Switch your GRUB-DFE disc with a Mac OS X 10.5 Retail DVD.</li>
<li>Wait for the drive indicator light on your DVD drive to stop flashing and then press enter to choose the default boot device.
<ul>
<li>In my case, default was the hexadecimal code [ef] also known as the dvd drive.</li>
</ul>
</li>
<li>Plug in a USB mouse.</li>
<li>Install Mac OS X.
<ul>
<li>If your only see a blank screen or the system becomes unresponsive for several minutes, reboot with the GRUB-DFE disc and try again. In my experience it always seemed to work the second time.</li>
</ul>
</li>
<li>Reboot with the GRUB-DFE disc and choose hex code 80 to boot to first HD.</li>
<li>Press enter at the next Darwin prompt to boot to the hard disk.</li>
<li>Plug in a USB keyboard.</li>
<li>Plug in an ethernet cable for internet access.</li>
<li>Finish the Mac OS X install.</li>
<li>Download <a href="http://www.mediafire.com/?nzrbuzjnyum">Chameleon DFE for HD</a>.</li>
<li>Open the grub-dfe.iso disc and copy the <strong>Extensions</strong> folder under /boot/initrd.img/Library/Application Support/DarwinBoot/Extra/ to the &#8220;Extra Contents&#8221; folder within the mounted Chameleon DFE for HD.</li>
<li>Run Chameleon DFE for HD.</li>
<li>Reboot without any helper discs.</li>
<li>Install the <a href="http://www.apple.com/downloads/macosx/apple/macosx_updates/macosx1058comboupdate.html">Mac OS X 10.5.8 Combo Update</a>.</li>
<li>Reboot.</li>
<li>Download and uncompress the <a href="http://forestmisty.org/wp-content/uploads/2009/09/NVinjectGo.0.2.0.zip">NVinjectGo 0.2.0</a> video driver.</li>
<li>Run <a href="http://osx86tools.googlecode.com/files/OSX86Tools_1.0.150.zip">OSX86 Tools 1.0.150</a> and use the &#8220;Install Kexts&#8221; feature to install the NVinjectGo.kext video driver.</li>
<li>Reboot.</li>
<li>Download and run <a href="http://pcwizcomputer.com/index.php?option=com_docman&amp;task=doc_download&amp;gid=84&amp;Itemid=74">PS2FixKeyboard</a> (<a href="http://forestmisty.org/wp-content/uploads/2009/09/PS2FixKeyboard.zip">mirror</a>) to enable the built-in keyboard and trackpad.</li>
<li>Reboot.</li>
<li>Download and uncompress <a href="http://www.insanelymac.com/forum/index.php?act=attach&amp;type=post&amp;id=42389">Apple HDA Patcher 1.20</a> (<a href="http://forestmisty.org/wp-content/uploads/2009/09/AppleHDAPatcher1.20.zip">mirror</a>).</li>
<li>Download <a href="http://psykopat.free.fr/apple/AppleHDA/realtek/ALC660.txt">ALC660.txt</a> (<a href="http://forestmisty.org/wp-content/uploads/2009/09/ALC660.txt">mirror</a>) and drag it on top of the Apple HDA Patcher.</li>
<li>Download the <a href="http://www.insanelymac.com/forum/index.php?showtopic=129485&amp;pid=930332&amp;mode=threaded&amp;start=">ALC660_660VD.mpkg.zip</a> (<a href="http://forestmisty.org/wp-content/uploads/2009/09/ALC660_660VD.mpkg.zip">mirror</a>) audio drivers, uncompress and run.</li>
<li>Choose the second driver option and install.</li>
<li>Reboot.</li>
<li>Go to Apple &gt; System Preferences &gt; Sound &gt; Output and choose &#8220;Internal Speakers&#8221;.</li>
<li>Bask in the warm glow of success. <img src='http://forestmist.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<h2><span style="font-weight: normal;">Limitations</span></h2>
<p>Everything seems to works except eSata, the memory card reader and wireless. Of these I only miss the wireless but I&#8217;m sure a compatible USB device could remedy that.</p>
<h2><span style="font-weight: normal;">Epilogue</span></h2>
<p>While many of my previous computer endeavors were based simply on the joy of discovery, I find that I&#8217;m now drawn to challenges that require tenacity. A migration from simple pleasures to the greater rewards of delayed gratification perhaps?</p>
<p>Either way&#8230; confidence gained is a wonderful currency for future ventures. <img src='http://forestmist.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://forestmist.org/2009/09/asus-g1-s-hackintosh/feed/</wfw:commentRss>
		<slash:comments>45</slash:comments>
		</item>
		<item>
		<title>Creating a new .htaccess file in Windows 7</title>
		<link>http://forestmist.org/2009/08/creating-a-new-htaccess-file-in-windows-7/</link>
		<comments>http://forestmist.org/2009/08/creating-a-new-htaccess-file-in-windows-7/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 17:16:04 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://forestmist.org/?p=148</guid>
		<description><![CDATA[Have you ever tried to create a new .htaccess file in Windows 7 (or Vista) via windows explorer? If so, this error will probably look familiar. Luckily there are a few easy ways around this annoying behavior. Fix 1 Open Windows Explorer. Right click &#62; New &#62; Text Document. Enter &#8220;.htaccess.&#8221; as your file name [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever tried to create a new <a href="http://en.wikipedia.org/wiki/Htaccess">.htaccess</a> file in Windows 7 (or Vista) via windows explorer? If so, this error will probably look familiar.</p>
<p><a href="http://forestmisty.org/wp-content/uploads/2009/08/Rename-Error.png"><img class="size-full wp-image-149 alignnone" title="Rename-Error" src="http://forestmisty.org/wp-content/uploads/2009/08/Rename-Error.png" alt="Rename-Error" width="364" height="129" /></a></p>
<p>Luckily there are a few easy ways around this annoying behavior.</p>
<p><strong>Fix 1</strong></p>
<p style="padding-left: 30px;">Open Windows Explorer.</p>
<p style="padding-left: 30px;">Right click &gt; New &gt; Text Document.</p>
<p style="padding-left: 30px;">Enter &#8220;.htaccess.&#8221; as your file name and say yes to the warning.</p>
<p><strong>Fix 2</strong></p>
<p style="padding-left: 30px;">Open Notepad and hit go to File &gt; Save As.</p>
<p style="padding-left: 30px;">Change the save as type to &#8220;All Files&#8221;.</p>
<p style="padding-left: 30px;">Enter &#8220;.htaccess&#8221; as the file name and hit save.</p>
<p><strong>Fix 3</strong></p>
<p style="padding-left: 30px;">Open a Command Prompt.</p>
<p style="padding-left: 30px;">Type &#8220;copy con .htaccess&#8221; and press enter.</p>
<p style="padding-left: 30px;">Press CTRL+Z then enter to save and exit your file.</p>
]]></content:encoded>
			<wfw:commentRss>http://forestmist.org/2009/08/creating-a-new-htaccess-file-in-windows-7/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Automatically backup FireFox 3 bookmarks</title>
		<link>http://forestmist.org/2009/08/automatically-backup-firefox-3-bookmarks/</link>
		<comments>http://forestmist.org/2009/08/automatically-backup-firefox-3-bookmarks/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 05:45:51 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[FireFox 3]]></category>
		<category><![CDATA[Web Browser]]></category>

		<guid isPermaLink="false">http://forestmist.org/?p=131</guid>
		<description><![CDATA[I like to format my computer fairly often which means having all my data in one easy to find location. Not only does this make backing up easy but it also removes that dreadful feeling you get when you realize your new OS install overwrote your irreplacable bookmarks, precious emails and/or accumulated works of Bettie Page. [...]]]></description>
			<content:encoded><![CDATA[<p>I like to format my computer fairly often which means having all my data in one easy to find location. Not only does this make backing up easy but it also removes that dreadful feeling you get when you realize your new OS install overwrote your irreplacable bookmarks, precious emails and/or accumulated works of <a href="http://en.wikipedia.org/wiki/Bettie_Page">Bettie Page</a>.</p>
<p>Bookmarks are easily forgotten but with a few tweaks <a href="http://www.mozilla.com/en-US/firefox/firefox.html">FireFox 3</a> can back them up for you.</p>
<h2>Customize your bookmark backup settings</h2>
<p>Open FireFox 3.</p>
<p>Go to <strong>about:config</strong> in your location bar.</p>
<p>Specify <strong>browser.bookmarks</strong> as your filter.</p>
<p>Set <strong>browser.bookmarks.autoExportHTML</strong> to <strong>true</strong>.</p>
<p>Create a new string titled <strong>browser.bookmarks.file</strong> and set its value to the location you want to backup all your bookmarks to.</p>
<p style="padding-left: 30px;"><em>In my case I entered &#8220;D:\ForestMist\Personal\bookmarks.html&#8221;.</em></p>
<p style="padding-left: 30px;"><a href="http://forestmisty.org/wp-content/uploads/2009/08/firefox-3-about-config.png"><img class="size-medium wp-image-138 alignnone" title="firefox 3 about:config example" src="http://forestmisty.org/wp-content/uploads/2009/08/firefox-3-about-config-300x94.png" alt="firefox 3 about:config example" width="300" height="94" /></a></p>
<p>Restart FireFox.</p>
<h2>Epilogue</h2>
<p>Everytime you close FireFox it will export a fresh copy of all your bookmarks to the file you specified. There may a slight performance hit for doing this but I think the benefits far outweigh the cost.</p>
<p>Now you can mirror your bookmarks with services like <a href="https://www.sugarsync.com/">SugarSync</a>, share them easily with friends or just have peace of mind in case the new JSON database FireFox 3 uses behind the scenes explodes in a spectacular example of <a href="http://en.wikipedia.org/wiki/Murphy%27s_law">Murphy&#8217;s Law</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://forestmist.org/2009/08/automatically-backup-firefox-3-bookmarks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Mo&#8217;bile</title>
		<link>http://forestmist.org/2009/07/windows-mobile/</link>
		<comments>http://forestmist.org/2009/07/windows-mobile/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 04:02:07 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://forestmist.org/?p=69</guid>
		<description><![CDATA[The Samsung Blackjack is the best Windows Mobile phone I&#8217;ve ever owned. It crashes daily, drops calls and is as sluggish as Pizza the Hut is delicious. I upgraded my particular phone from Windows Mobile 5 to 6 mostly to enable fuzzy positioning in Google Maps. Overall, each OS had a similar issues so you [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://forestmisty.org/wp-content/uploads/2009/07/Samsung-Blackjack.gif"><img class="alignright size-full wp-image-86" title="Samsung-Blackjack" src="http://forestmisty.org/wp-content/uploads/2009/07/Samsung-Blackjack.gif" alt="Samsung-Blackjack" width="166" height="312" /></a>The <a href="http://en.wikipedia.org/wiki/Samsung_Blackjack">Samsung Blackjack</a> is the best Windows Mobile  phone I&#8217;ve ever owned.</p>
<p>It crashes daily, drops calls and is as sluggish as <a href="http://www.youtube.com/watch?v=33n-IS8a1S4">Pizza the Hut</a> is delicious.</p>
<p>I upgraded my particular phone from Windows Mobile 5 to 6 mostly to enable fuzzy positioning in Google Maps.</p>
<p>Overall, each OS had a similar issues so you can choose either faster performance in version 5 or prettier interfaces in 6.</p>
<p>Living with my aging phone was becoming a hassle but I wanted to keep using it for maximum monetary efficiency. I thought the best way to do this would be to customize the phone and make it more pleasurable to use. Adding various sound effects and backgrounds was easy but I needed something a bit more custom. I needed something that I could be amused by while restarting for the umpteenth time. I needed a startup animation&#8230; with sound!</p>
<p>The device already had an AT&amp;T animation with a swooshy sound effect so it seemed I would just need to track down the file format and replace. Easy yes?</p>
<p>Actually&#8230; no. It turns out that the animation is obfuscated within a file called &#8220;OemAnimationDll.dll&#8221;. The sound effects are at least in the open as &#8220;start.wav&#8221; and &#8220;stop.wav&#8221;. They are each 4 seconds long and easy to replace if you are using Windows XP with Active Sync 4.5. Vista is a bit more complicated.</p>
<p><a href="http://forestmisty.org/wp-content/uploads/2009/07/Windows-Mobile-Device-Center-in-Vista.jpg"><img class="size-medium wp-image-71 alignright" title="Windows Mobile Device Center in Vista" src="http://forestmisty.org/wp-content/uploads/2009/07/Windows-Mobile-Device-Center-in-Vista-300x224.jpg" alt="Windows Mobile Device Center in Vista" width="300" height="224" /></a>Using Vista means you will have to deal with the  Windows Mobile Device Center. A shiny product which mostly complicates accessing dialogs which are much easier to find in Active Sync. It also means you won&#8217;t be able to overwrite protected files in your smartphone\windows directory. To get around this issue we can edit the registry to change the pointers to both the animation and sound effects to  files with new unique names.</p>
<h2>Moding the Startup</h2>
<p>Make a copy of  smartphone\windows\OemAnimationDll.dll and then open the cloned file with <a href="http://angusj.com/resourcehacker">Resource Hacker</a>. Each folder is a frame of animation, 40 total, stored in PNG format. The first 20 images are for starting up and the last 20 are for shutting down.</p>
<p><a href="http://forestmisty.org/wp-content/uploads/2009/07/Resource-Hacker.jpg"><img class="size-medium wp-image-72 alignnone" title="Resource Hacker" src="http://forestmisty.org/wp-content/uploads/2009/07/Resource-Hacker-300x144.jpg" alt="Resource Hacker" width="300" height="144" /></a></p>
<p>Select the first of the PNG items (titled 1033 within any folder) and then choose Action &gt; Save Resource as Binary File. Name it 1.png then open up the image to see the first frame of animation that your phone uses. The dimensions of these files are 320 by 240.</p>
<p>To replace an animation frame simply right click the image in question, choose &#8220;Replace Resource&#8230;&#8221; select the new PNG you want then enter anything in the Resource Type and Name fields. Press &#8220;Replace&#8221;.</p>
<p>If you try to copy the updated OemAnimationDll.dll to your phone now you may get an error like this.</p>
<p><a href="http://forestmisty.org/wp-content/uploads/2009/07/Error-Cannot-Copy-File.jpg"><img class="size-medium wp-image-74 alignnone" title="Error Cannot Copy File" src="http://forestmisty.org/wp-content/uploads/2009/07/Error-Cannot-Copy-File-300x122.jpg" alt="Error Cannot Copy File" width="300" height="122" /></a></p>
<p>Unfortunately many system files on your Windows Mobile device are protected in this manner. To get around this issue we&#8217;ll have to edit the registry on your phone.</p>
<p>To make sure registry changes persist, download and run <a href="http://forestmisty.org/wp-content/uploads/2009/07/SDA-Application-Unlock.zip">SDA Application Unlock</a>. This will also grant also your device the ability to run unsigned code and supposedly overwrite system files although that part didn&#8217;t work for me.</p>
<p>Next, install and run <a href="http://forestmisty.org/wp-content/uploads/2009/07/MobileRegistryEditor-1.2.zip">MobileRegistryEditor 1.2</a>.</p>
<p><a href="http://forestmisty.org/wp-content/uploads/2009/07/Mobile-Registry-Editor.jpg"><img class="size-medium wp-image-75 alignnone" title="Mobile Registry Editor" src="http://forestmisty.org/wp-content/uploads/2009/07/Mobile-Registry-Editor-300x117.jpg" alt="Mobile Registry Editor" width="300" height="117" /></a></p>
<p>Navigate to HKEY_LOCAL_MACHINE\System\Startup\1 and then change the value of Dll to &#8220;CustomAnimationDll.dll&#8221; or whatever you named your file to.</p>
<div>
<p>Copy the file to your smartphone\windows directory and then restart your device.</p>
<h2>Frak!</h2>
<p>Up to this point I was very hopeful but to my dismay, no animation played. <img src='http://forestmist.org/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>I proceed to go through a soul crushing amount of technological incantations. Different resource editors, image formats, digital signatures and more esoteric experiments but nothing worked.  It&#8217;s a damn shame too because I had the perfect TV static animation to go along with the following soundbite from Max Headroom.</p>
<p>Perfect for a communication device that goes down more often than a narcoleptic nymphomaniac at a romance novel convention!</p>
<p>I console myself with the idea that sharing my experience may help someone else in the same situation. Hopefully they will be able to take the process to completion and make this particular Windows Mobile phone a little easier to live with.</p>
<h2>Epilogue</h2>
<p>A minor car dismounting accident cracked the screen of my Samsung Blackjack. This led me to the phone I had been secretly lusting after all this time, <a href="http://www.apple.com/iphone/specs-3g.html">le perfection</a>.</p>
<p>*Nuzzle*</p></div>
]]></content:encoded>
			<wfw:commentRss>http://forestmist.org/2009/07/windows-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://forestmisty.org/wp-content/uploads/2009/07/Max-Headroom-Static.mp3" length="91062" type="audio/mpeg" />
		</item>
		<item>
		<title>Virus Detected</title>
		<link>http://forestmist.org/2008/11/virus-detected/</link>
		<comments>http://forestmist.org/2008/11/virus-detected/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 22:24:01 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Virus]]></category>

		<guid isPermaLink="false">http://forestmist.org/wordpress/?p=40</guid>
		<description><![CDATA[I&#8217;ve been running my personal computers without an active antivirus scanner for more than a year without issue. Downloaded files are scanned manually and once a month I do a full scan just in case. Sounds reasonable for someone who wants to maximize performance ya? Trouble is&#8230; something got in while I wasn&#8217;t looking. My [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been running my personal computers without an active antivirus scanner for more than a year without issue. Downloaded files are scanned manually and once a month I do a full scan just in case. Sounds reasonable for someone who wants to maximize performance ya?</p>
<p>Trouble is&#8230; something got in while I wasn&#8217;t looking.</p>
<p>My monthly AVG Anti-Virus scan revealed a Trojan Horse within a file &#8220;update.cab&#8221; in my Internet Explorer cache. The file was downloaded from 60.28.209.126 which is an official update server used by the download manager <a href="http://www.flashget.com/en/download.htm">FlashGet</a>. Other cache files confirmed a FlashGet update was attempted at the same exact time.</p>
<p>The rest of my evening was spent researching, scanning and coroborating AVG&#8217;s findings. A task I may not have finished if it were not for my security minded wife&#8217;s help right when I was on the verge of giving up.</p>
<p>Embrazened, I was able to figure out the following.</p>
<ul>
<li>The cab contained a single file called &#8220;update.exe&#8221;</li>
<li>Symantec AV thought the cab file and exe inside it was clean although it did catch a Trojan inside a file called &#8220;msbios.dll&#8221; once I attempted to install it via sacrificial VMware sandbox.</li>
<li>At least two others have experienced this same issue and even posted about it in the <a href="http://bbs.flashget.com/en/viewthread.php?tid=117&amp;extra=page%3D1">FlashGet Forums</a>. Searches on google reveal even more reportings and from different time periods too.</li>
<li><a href="http://research.sunbelt-software.com/ViewMalware.aspx?id=5954043">Sunbelt Software&#8217;s CWSandbox</a> incredibly detailed report  is information overload.</li>
<li>A <a href="http://www.virustotal.com/">VirusTotal</a> scan reported that 36% of AV clients think something is wrong about the &#8220;update.exe&#8221; file  while 58% of clients catch the Trojan dll file it installs.</li>
<li>A ThreatExpert scan revealed that their sandbox install of the &#8220;update.exe&#8221; tried to create a dll with the different name. Definite malware behavior!</li>
<li>A MD5 hash (1347d50c3db7413226010e3f4ac0b0cb) of my &#8220;msbios.dll&#8221; (65,536 bytes) matches the hash reported by the alternatively named &#8220;sensct.dll&#8221;.</li>
</ul>
<p>Malware confirmed thanks to AVG, VirusTotal, ThreatExpert and a trusty MD5 hash. Better yet, the trojan never actually ran on my real machine so my worst fears were aswayed.</p>
<p><strong>Epilog</strong><br />
My initial theory had been that I had gotten hacked from an IE exploit via the sponsored advertising in FlashGet. What really happened was a compromise of the  FlashGet update server  and regrefully, this wasn&#8217;t the first time.</p>
<p>I&#8217;m not sure if expert hackers or weak security settings are to blame. What I do know is that I can live without this free software and it&#8217;s suprise hidden costs.</p>
]]></content:encoded>
			<wfw:commentRss>http://forestmist.org/2008/11/virus-detected/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

