<?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>Andrew Healey's Blog</title>
	<atom:link href="http://halfloaded.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://halfloaded.com</link>
	<description>Smash forehead on keyboard to continue...</description>
	<lastBuildDate>Wed, 03 Feb 2010 20:12:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Powershell: Using PoSH to Search Across Multiple Domains in Forest</title>
		<link>http://halfloaded.com/blog/powershell-using-posh-to-search-across-multiple-domains-in-forest/</link>
		<comments>http://halfloaded.com/blog/powershell-using-posh-to-search-across-multiple-domains-in-forest/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 20:52:07 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[active directory]]></category>
		<category><![CDATA[posh]]></category>
		<category><![CDATA[powershell]]></category>

		<guid isPermaLink="false">http://halfloaded.com/?p=404</guid>
		<description><![CDATA[I was recently asked to get a quick report of all Windows 7 computers within a multi-domain AD forest.  After banging my head into the keyboard for a while, I finally figured it out.  The script below should do the trick.
Also, if you use the OperatingSystemVersion attribute, you will find that Server 2008 R2 shares <a href="http://halfloaded.com/blog/powershell-using-posh-to-search-across-multiple-domains-in-forest/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>I was recently asked to get a quick report of all Windows 7 computers within a multi-domain AD forest.  After banging my head into the keyboard for a while, I finally figured it out.  The script below should do the trick.</p>
<p>Also, if you use the OperatingSystemVersion attribute, you will find that Server 2008 R2 shares version &#8220;6.1 (7600)&#8221;.  So, the best way to find Windows 7 only, is to search for &#8220;Windows 7*&#8221; with the wildcard character against the OperatingSystem attribute.  That will ensure all Windows 7 versions are returned and will exclude Server 2008 R2 from your results.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #008000;">#Get Domain List</span>
<span style="color: #800080;">$objForest</span> <span style="color: pink;">=</span> <span style="color: #000000;">&#91;</span>System.DirectoryServices.ActiveDirectory.Forest<span style="color: #000000;">&#93;</span>::GetCurrentForest<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$DomainList</span> <span style="color: pink;">=</span> <span style="color: pink;">@</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$objForest</span>.Domains <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Select-Object</span> Name<span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$Domains</span> <span style="color: pink;">=</span> <span style="color: #800080;">$DomainList</span> <span style="color: pink;">|</span> <span style="color: #0000FF;">foreach</span> <span style="color: #000000;">&#123;</span><span style="color: #000080;">$_</span>.Name<span style="color: #000000;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #008000;">#Act on each domain</span>
<span style="color: #0000FF;">foreach</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$Domain</span> <span style="color: #0000FF;">in</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$Domains</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800000;">&quot;Checking $Domain&quot;</span> <span style="color: pink;">-</span>fore red
	<span style="color: #800080;">$ADsPath</span> <span style="color: pink;">=</span> <span style="color: #000000;">&#91;</span>ADSI<span style="color: #000000;">&#93;</span><span style="color: #800000;">&quot;LDAP://$Domain&quot;</span>
	<span style="color: #800080;">$objSearcher</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> System.DirectoryServices.DirectorySearcher<span style="color: #000000;">&#40;</span><span style="color: #800080;">$ADsPath</span><span style="color: #000000;">&#41;</span>
	<span style="color: #800080;">$objSearcher</span>.<span style="color: #0000FF;">Filter</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;(&amp;(objectCategory=Computer)(operatingSystem=Windows 7*))&quot;</span>
	<span style="color: #800080;">$objSearcher</span>.SearchScope <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Subtree&quot;</span>
&nbsp;
	<span style="color: #800080;">$colResults</span> <span style="color: pink;">=</span> <span style="color: #800080;">$objSearcher</span>.FindAll<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
&nbsp;
	<span style="color: #0000FF;">foreach</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$objResult</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$colResults</span><span style="color: #000000;">&#41;</span>
	<span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$Computer</span> <span style="color: pink;">=</span> <span style="color: #800080;">$objResult</span>.GetDirectoryEntry<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
		<span style="color: #800080;">$Computer</span>.DistinguishedName
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://halfloaded.com/blog/powershell-using-posh-to-search-across-multiple-domains-in-forest/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Part 3: Blocking Bad Hosts &#8211; Blocking Them, Easily (CLI Edition)</title>
		<link>http://halfloaded.com/blog/part-3-blocking-bad-hosts-blocking-them-easily-cli-edition/</link>
		<comments>http://halfloaded.com/blog/part-3-blocking-bad-hosts-blocking-them-easily-cli-edition/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 19:13:57 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[ipsec]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://halfloaded.com/?p=349</guid>
		<description><![CDATA[In part two, I showed you how to use the Local Security Policy GUI to block the bad guys.  There were a lot of pretty pictures for those that prefer the GUI.  In this version, I’ll show you how to accomplish the same thing from the command line.  This is my preferred <a href="http://halfloaded.com/blog/part-3-blocking-bad-hosts-blocking-them-easily-cli-edition/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://halfloaded.com/blog/part-2-blocking-bad-hosts-blocking-them-easily-gui-edition/">part two</a>, I showed you how to use the Local Security Policy GUI to block the bad guys.  There were a lot of pretty pictures for those tha<a href="http://halfloaded.com/wp-content/uploads/2009/12/command-line-big.png"><img class="alignright size-full wp-image-388" title="command-line-big" src="http://halfloaded.com/wp-content/uploads/2009/12/command-line-big.png" alt="" width="130" height="101" /></a>t prefer the GUI.  In this version, I’ll show you how to accomplish the same thing from the command line.  This is my preferred method.  It is much simpler to automate and explain.</p>
<p>By following the steps below, you will be able to create a new policy and manage the filter lists and actions.  The goal here will be to put all these pieces together into a nice tidy package that is fully automated.<span id="more-349"></span></p>
<p>The policy you create in this tutorial will not be applied to the system until you &#8220;Assign&#8221; the policy in Step 6.  As long as the policy is not assigned, you can safely edit, add, remove, etc. rules and sets to the policy without affecting the system.  <span style="color: #ff0000;"><em>Note: double and triple check your sets to ensure you do not block legitimate traffic before assigning the policy.</em></span></p>
<p>To begin this tutorial, open the command prompt. <span style="text-decoration: underline;"> If you don’t know how, you probably shouldn’t be doing this</span>.  All commands meant to be typed are in <em>italics</em>.</p>
<h3>Step 1: Create IP Security Policy</h3>
<p><em>netsh ipsec static add policy description=&#8221;This policy blocks all traffic to hosts/nets associated with it.&#8221;</em></p>
<h3>Step 2: Create an IP Filter List</h3>
<p><em>netsh ipsec static add filterlist description=&#8221;This filter list contains hosts and networks known to host malware, criminal activity, etc.&#8221;</em></p>
<h3>Step 3: Create IP Filters and Associate them with the Filter List (Repeat this step until all hosts you wish to block have been entered)</h3>
<p>Single IP (<strong>10.254.254.254/32</strong>)</p>
<p style="padding-left: 30px;"><em>netsh ipsec static add filter filterlist=&#8221;Bad Hosts&#8221; <strong>srcaddr=10.254.254.254</strong> dstaddr=any description=&#8221;John Smith. 12/31/2015. Brute force logon attempts to: SERVER01&#8243;</em></p>
<p>Subnet (<strong>10.254.254.0/24</strong>)</p>
<p style="padding-left: 30px;"><em>netsh ipsec static add filter filterlist=&#8221;Bad Hosts&#8221; <strong>srcaddr=10.254.254.0</strong> dstaddr=any <strong>srcmask=24</strong> description=&#8221;John Smith. 12/31/2015. Brute force logon attempts to: SERVER01&#8243;</em></p>
<p>Network Range (<strong>10.254.254.2-10</strong>)</p>
<p style="padding-left: 30px;"><em>netsh ipsec static add filter filterlist=&#8221;Bad Hosts&#8221; <strong>srcaddr=10.254.254.2-10.254.254.15</strong> dstaddr=any description=&#8221;John Smith. 12/31/2015. Brute force logon attempts to: SERVER01&#8243;</em></p>
<h3>Step 4: Create a Filter Action</h3>
<p><em>netsh ipsec static add filteraction description=&#8221;This action blocks all traffic.&#8221; action=block</em></p>
<h3>Step 5: Create Policy Rule to apply Filter Action to Filter List</h3>
<p><em>netsh ipsec static add rule policy=&#8221;Blocked Traffic&#8221; filterlist=&#8221;Bad Hosts&#8221; filteraction=&#8221;Block All Traffic&#8221; activate=yes</em></p>
<h3>Step 6: Assigning (and un-assigning) the Policy</h3>
<p>This step will apply all the settings you have created up to this point.  <span style="color: #ff0000;">Double and triple check that you did not enter a valid host or network or it will be blocked.  If fact, if you have any doubts in your mind, do not do this step until another person (who knows what they are doing) looks over your work too!  Note: This is one place MS will not give you a little &#8220;are you sure you want to do this&#8221; type of warning.  As soon as you assign the policy, it is done.</span></p>
<p><strong>Assign</strong></p>
<p style="padding-left: 30px;"><em>netsh ipsec static set policy name=&#8221;Blocked Traffic&#8221; assign=yes</em></p>
<p><strong>Un-assign</strong></p>
<p style="padding-left: 30px;"><em>netsh ipsec static set policy assign=no</em></p>
]]></content:encoded>
			<wfw:commentRss>http://halfloaded.com/blog/part-3-blocking-bad-hosts-blocking-them-easily-cli-edition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Part 2: Blocking Bad Hosts &#8211; Blocking Them, Easily (GUI Edition)</title>
		<link>http://halfloaded.com/blog/part-2-blocking-bad-hosts-blocking-them-easily-gui-edition/</link>
		<comments>http://halfloaded.com/blog/part-2-blocking-bad-hosts-blocking-them-easily-gui-edition/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 09:13:58 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[ipsec]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://halfloaded.com/?p=344</guid>
		<description><![CDATA[In part two, I want to show how you can quickly setup an ipsec policy to block the bad hosts you identified in part one. While many methods can be used to block hosts, using the Local Security Policy (secpol.msc) and ipsec is a simple method which can be fully automated.
By following the steps below, <a href="http://halfloaded.com/blog/part-2-blocking-bad-hosts-blocking-them-easily-gui-edition/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>In part two, I want to show how you can quickly setup an ipsec policy to block the bad hosts you identified in <a href="../blog/part-1-blocking-bad-hosts-finding-them-easily/">part one</a>. While many methods can be used to block hosts, using the Local Security Policy (secpol.msc) and ipsec is a simple method which can be fully automated.</p>
<p>By following the steps below, you will be able to create a new policy and manage the filter lists and actions. In part three, I will explain how this can be done from the command line for all you CLI warriors. This tutorial should be accurate for: Windows XP, Vista, 7 and Server 2003, 2008, 2008R2 (possibly even 2000)<span id="more-344"></span></p>
<p>The policy you create in this tutorial will not be applied to the system until you &#8220;Assign&#8221; the policy in Step 6. As long as the policy is not assigned, you can safely edit, add, remove, etc. rules and sets to the policy without affecting the system. <span style="color: #ff0000;"><em>Note: double and triple check your sets to ensure you do not block legitimate traffic before assigning the policy.</em></span></p>
<p>To begin this tutorial, open the Local Security Policy by:</p>
<ul>
<li>Control Panel → Administrative Tools → Local Security Policy</li>
<li>Start → Run → secpol.msc</li>
</ul>
<h3>Step 1: Create IP Security Policy</h3>
<ol>
<li>Right click &#8220;IP Security Policies on Local Computer&#8221;</li>
<li>Select &#8220;Create IP Security Policy&#8230;&#8221;</li>
<li>IP Security Policy Wizard
<ul>
<li>Welcome Screen → Next</li>
<li>IP Security Policy Name → Give a descriptive name and description → Next</li>
<li>Requests for Secure Communication → Do Not Check &#8220;Activate the default response rule&#8221; → Next</li>
<li>Wizard Completion → Do Not Check &#8220;Edit Properties&#8221; → Finish</li>
</ul>
</li>
</ol>
<p><a href="http://halfloaded.com/wp-content/uploads/2009/12/lsp-1.png"><img class="size-thumbnail wp-image-358 alignnone" title="lsp-1" src="http://halfloaded.com/wp-content/uploads/2009/12/lsp-1-150x150.png" alt="" width="150" height="150" /></a><a href="http://halfloaded.com/wp-content/uploads/2009/12/lsp-3.png"> <img class="alignnone size-thumbnail wp-image-360" title="lsp-3" src="http://halfloaded.com/wp-content/uploads/2009/12/lsp-3-150x150.png" alt="" width="150" height="150" /></a><a href="http://halfloaded.com/wp-content/uploads/2009/12/lsp-4.png"> <img class="alignnone size-thumbnail wp-image-361" title="lsp-4" src="http://halfloaded.com/wp-content/uploads/2009/12/lsp-4-150x150.png" alt="" width="150" height="150" /></a> <a href="http://halfloaded.com/wp-content/uploads/2009/12/lsp-5.png"><img class="alignnone size-thumbnail wp-image-362" title="lsp-5" src="http://halfloaded.com/wp-content/uploads/2009/12/lsp-5-150x150.png" alt="" width="150" height="150" /></a></p>
<h3>Step 2: Create an IP Filter List</h3>
<ol>
<li>Double click your new policy (or, right click and select properties)</li>
<li>On the Rules Tab → Uncheck &#8220;Use Add Wizard&#8221; → Click &#8220;Add&#8230;&#8221;</li>
<li>Create an IP Filter List
<ul>
<li>On the &#8220;IP Filter List&#8221; Tab → Click &#8220;Add&#8230;&#8221;</li>
<li>In the &#8220;IP Filter List&#8221; Window → Enter a descriptive name and description → Uncheck &#8220;Use Add Wizard&#8221; → Click &#8220;Add&#8230;&#8221;</li>
</ul>
</li>
</ol>
<p><a href="http://halfloaded.com/wp-content/uploads/2009/12/rules-1.png"><img class="alignnone size-thumbnail wp-image-363" title="rules-1" src="http://halfloaded.com/wp-content/uploads/2009/12/rules-1-150x150.png" alt="" width="150" height="150" /></a> <a href="http://halfloaded.com/wp-content/uploads/2009/12/rules-2.png"><img class="alignnone size-thumbnail wp-image-364" title="rules-2" src="http://halfloaded.com/wp-content/uploads/2009/12/rules-2-150x150.png" alt="" width="150" height="150" /></a> <a href="http://halfloaded.com/wp-content/uploads/2009/12/rules-3.png"><img class="alignnone size-thumbnail wp-image-365" title="rules-3" src="http://halfloaded.com/wp-content/uploads/2009/12/rules-3-150x150.png" alt="" width="150" height="150" /></a> <a href="http://halfloaded.com/wp-content/uploads/2009/12/rules-4.png"><img class="alignnone size-thumbnail wp-image-366" title="rules-4" src="http://halfloaded.com/wp-content/uploads/2009/12/rules-4-150x150.png" alt="" width="150" height="150" /></a></p>
<h3>Step 3: Create IP Filters and Associate them with the Filter List (Repeat this step until all hosts you wish to block have been entered)</h3>
<ol>
<li>Address Tab
<ul>
<li>Change Source Address to → &#8220;A specific IP Address or Subnet&#8221;</li>
<li>Enter the IP Address and/or subnet in the text box (Use <a href="http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing">CIDR syntax</a> for defining subnets (e.g. 10.10.10.0/24)</li>
<li>Check &#8220;Mirrored&#8221;</li>
</ul>
</li>
<li>Protocol Tab → Ensure protocol type is set to &#8220;Any&#8221;</li>
<li>Description Tab → Enter a description. It is typically useful to identify the creator of the rule, why it was added and a date/time when the rule was created.</li>
<li>Click &#8220;OK&#8221;</li>
<li>Repeat step 3 until all the hosts/networks you wish to block are entered. Once completed, press &#8220;OK&#8221;.</li>
</ol>
<p><a href="http://halfloaded.com/wp-content/uploads/2009/12/rules-51.png"><img class="alignnone size-thumbnail wp-image-379" title="rules-5" src="http://halfloaded.com/wp-content/uploads/2009/12/rules-51-150x150.png" alt="" width="150" height="150" /></a> <a href="http://halfloaded.com/wp-content/uploads/2009/12/rules-6.png"><img class="alignnone size-thumbnail wp-image-368" title="rules-6" src="http://halfloaded.com/wp-content/uploads/2009/12/rules-6-150x150.png" alt="" width="150" height="150" /></a> <a href="http://halfloaded.com/wp-content/uploads/2009/12/rules-7.png"><img class="alignnone size-thumbnail wp-image-369" title="rules-7" src="http://halfloaded.com/wp-content/uploads/2009/12/rules-7-150x150.png" alt="" width="150" height="150" /></a></p>
<h3>Step 4: Create a Filter Action</h3>
<ol>
<li>On the &#8220;Filter Action&#8221; Tab → Uncheck &#8220;Use Add Wizard&#8221; → Click &#8220;Add&#8230;&#8221;</li>
<li>On the &#8220;Security Methods&#8221; Tab → Select the &#8220;Block&#8221; radio button (All other options on this tab will become greyed out)</li>
<li>On the &#8220;General&#8221; Tab → Enter a descriptive name and description → Press &#8220;OK&#8221;</li>
</ol>
<p><a href="http://halfloaded.com/wp-content/uploads/2009/12/rules-8.png"><img class="alignnone size-thumbnail wp-image-370" title="rules-8" src="http://halfloaded.com/wp-content/uploads/2009/12/rules-8-150x150.png" alt="" width="150" height="150" /></a> <a href="http://halfloaded.com/wp-content/uploads/2009/12/rules-9.png"><img class="alignnone size-thumbnail wp-image-371" title="rules-9" src="http://halfloaded.com/wp-content/uploads/2009/12/rules-9-150x150.png" alt="" width="150" height="150" /></a> <a href="http://halfloaded.com/wp-content/uploads/2009/12/rules-10.png"><img class="alignnone size-thumbnail wp-image-372" title="rules-10" src="http://halfloaded.com/wp-content/uploads/2009/12/rules-10-150x150.png" alt="" width="150" height="150" /></a></p>
<h3>Step 5: Create Policy Rule to apply Filter Action to Filter List</h3>
<ol>
<li>On the &#8220;Filter Action&#8221; Tab, ensure the new filter action you created is selected.</li>
<li>On the &#8220;IP Filter List&#8221; Tab, ensure the new filter list you created is selected.</li>
<li>Press &#8220;OK&#8221;</li>
<li>On the new policy properties window, ensure the new list and action are enabled.</li>
<li>Press &#8220;OK&#8221;</li>
</ol>
<p><a href="http://halfloaded.com/wp-content/uploads/2009/12/rules-11.png"><img class="alignnone size-thumbnail wp-image-373" title="rules-11" src="http://halfloaded.com/wp-content/uploads/2009/12/rules-11-150x17.png" alt="" width="150" height="17" /></a><a href="http://halfloaded.com/wp-content/uploads/2009/12/rules-12.png"> <img class="alignnone size-thumbnail wp-image-374" title="rules-12" src="http://halfloaded.com/wp-content/uploads/2009/12/rules-12-150x15.png" alt="" width="150" height="15" /></a> <a href="http://halfloaded.com/wp-content/uploads/2009/12/rules-13.png"><img class="alignnone size-thumbnail wp-image-375" title="rules-13" src="http://halfloaded.com/wp-content/uploads/2009/12/rules-13-150x88.png" alt="" width="150" height="88" /></a></p>
<h3>Step 6: Assigning (and un-assigning) the Policy</h3>
<p>This step will apply all the settings you have created up to this point. <span style="color: #ff0000;"><em>Double and triple check that you did not enter a valid host or network or it will be blocked. If fact, if you have any doubts in your mind, do not do this step until another person (who knows what they are doing) looks over your work too! Note: This is one place MS will not give you a little &#8220;are you sure you want to do this&#8221; type of warning. As soon as you assign the policy, it is done.</em></span></p>
<ol>
<li>Right click your new policy → Select &#8220;Assign&#8221; → Done (It really is that easy)
<ul>
<li>To un-assign, just do the same thing except select &#8220;Un-assign&#8221; instead.</li>
</ul>
</li>
</ol>
<p><a href="http://halfloaded.com/wp-content/uploads/2009/12/assign-1.png"><img class="alignnone size-thumbnail wp-image-356" title="assign-1" src="http://halfloaded.com/wp-content/uploads/2009/12/assign-1-150x150.png" alt="" width="150" height="150" /></a></p>
<p>In part 3, I will cover how to do all this directly from the command line.</p>
]]></content:encoded>
			<wfw:commentRss>http://halfloaded.com/blog/part-2-blocking-bad-hosts-blocking-them-easily-gui-edition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Part 1: Blocking Bad Hosts &#8211; Finding Them, Easily</title>
		<link>http://halfloaded.com/blog/part-1-blocking-bad-hosts-finding-them-easily/</link>
		<comments>http://halfloaded.com/blog/part-1-blocking-bad-hosts-finding-them-easily/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 07:19:13 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[event log]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[vbScript]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://halfloaded.com/?p=335</guid>
		<description><![CDATA[Download Script: get-bad-hosts.zip
While troubleshooting some issues on an OWA Front-End server, I went over to the security log to see if the authentication attempts were getting past this box.  The problem I found was the log was so full of failed logon attempts it was difficult to filter out what I was looking for. <a href="http://halfloaded.com/blog/part-1-blocking-bad-hosts-finding-them-easily/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Download Script: <a href="http://halfloaded.com/wp-content/uploads/2009/12/get-bad-hosts.zip">get-bad-hosts.zip</a></p>
<p>While troubleshooting some issues on an OWA Front-End server, I went over to the security log to see if the authentication attempts were getting past this box.  The problem I found was the log was so full of failed logon attempts it was difficult to filter out what I was looking for.  In a twelve hour period, there were thousands of 529 events in the security log.  Now, I know this is nothing new, but I found a few patterns.  I manually exported the log to a CSV, parsed out all the source ip addresses and opened it up in Excel.  What I found was that 98.7% of failed logon attempts were made by just four different ip addresses.  (I recommend using <a href="http://www.maxmind.com/app/locate_ip" target="_blank">MaxMind&#8217;s GeoIP Address Locator</a> for help in determining where the source addresses are located.)<span id="more-335"></span></p>
<p>The easy fix is to setup an IPSec policy to block all traffic coming from those addresses.  And I did just that.  There are many different methods to blocking bad hosts.  And, anybody who has dealt with this knows, they will come back.  Just from different addresses.</p>
<p>One other piece I was able to get from this is that there are several of our users whom have fat fingered their passwords within ActiveSync (or they just have it setup wrong).  And then there are those users who have forgotten their domain, e-mail address, username, etc.</p>
<p>This is step one in my project to automate the blocking of bad hosts.  My goal is to build an automated method for blocking hosts with a high percentage of bad logon attempts within <em>n</em> hours.  And, even if I can&#8217;t get it 100% automated, this first whack at it took my bad logon attempts from 800 per hour to 25 per hour; nearly a 97% improvement!  And, a lot less crap to sift through when troubleshooting real issues.</p>
<p>So, my first goal is to automate a method of extracting the data I want from the event log.  (The script can be found below.)  The most important piece of data is the source ip address.  However, the other pieces of data I decided to extract could be helpful in determining the legitimacy of the logon failure.</p>
<p>To get the data, simply download the script and run &#8220;cscript /nologo get-bad-hosts.vbs &gt; bad-hosts.csv&#8221; (w/o the quotes).  You can then open the file in Excel, do a quick pivot-table and identify the source addresses with the most hits.  At that point, you can add the host (or address block) to an ipsec policy to block all traffic from that address.</p>
<p>In my next post, I&#8217;ll explain the details in setting up a quick ipsec policy to block the bad guys.  Cheers!</p>

<div class="wp_syntax"><div class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">'==========================================================================</span>
<span style="color: #008080; font-style: italic;">' VBScript Source File</span>
<span style="color: #008080; font-style: italic;">' NAME: get-bad-hosts.vbs</span>
<span style="color: #008080; font-style: italic;">' AUTHOR: Andrew J Healey</span>
<span style="color: #008080; font-style: italic;">' WEB: http://halfloaded.com/</span>
<span style="color: #008080; font-style: italic;">' DATE  : Dec 21 2009</span>
<span style="color: #008080; font-style: italic;">' COMMENT: This script will return data in csv format for use in determining</span>
<span style="color: #008080; font-style: italic;">'	hack, lockout or bad logon attempts</span>
<span style="color: #008080; font-style: italic;">' PROCESS: 1) query event log for event id 529; 2) parse data to return</span>
<span style="color: #008080; font-style: italic;">'	useful data; 3) output to screen</span>
<span style="color: #008080; font-style: italic;">' USAGE: cscript /nologo get-bad-hosts.vbs c:\bad-hosts.csv</span>
<span style="color: #008080; font-style: italic;">'==========================================================================</span>
&nbsp;
<span style="color: #FF8000;">Option</span> Explicit
<span style="color: #FF8000;">On</span> <span style="color: #FF8000;">Error</span> <span style="color: #FF8000;">Resume</span> <span style="color: #FF8000;">Next</span>
&nbsp;
<span style="color: #0600FF;">Dim</span> strComputer, objWMIService, colLoggedEvents
<span style="color: #0600FF;">Dim</span> objEvent, objRegEx, colMatches, strMatch
<span style="color: #0600FF;">Dim</span> strUserName, strWorkstation, strIPAddress, strDomain
&nbsp;
<span style="color: #008080; font-style: italic;">'Change to name of computer to query remote machine</span>
strComputer <span style="color: #008000;">=</span> <span style="color: #808080;">&quot;.&quot;</span>
<span style="color: #FF8000;">Set</span> objWMIService <span style="color: #008000;">=</span> GetObject<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;winmgmts:&quot;</span> _
    <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;{impersonationLevel=impersonate}!\\&quot;</span> <span style="color: #008000;">&amp;</span>amp; strComputer <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;\root\cimv2&quot;</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'Event 529 in the security log are &quot;Failure Audit&quot; for a &quot;Logon/Logoff&quot;</span>
<span style="color: #FF8000;">Set</span> colLoggedEvents <span style="color: #008000;">=</span> objWMIService.<span style="color: #0000FF;">ExecQuery</span> _
        <span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Select * from Win32_NTLogEvent Where Logfile = 'Security' and &quot;</span> _
            <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;EventCode = '529'&quot;</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'Write header to screen</span>
wscript.<span style="color: #0000FF;">echo</span> <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;User Name&quot;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;,&quot;</span> <span style="color: #008000;">&amp;</span>amp; _
			 <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;Workstation&quot;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;,&quot;</span> <span style="color: #008000;">&amp;</span>amp; _
			 <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;Source IP&quot;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;,&quot;</span> <span style="color: #008000;">&amp;</span>amp; _
			 <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;Windows Domain&quot;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;,&quot;</span> <span style="color: #008000;">&amp;</span>amp; _
			 <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;Date/Time&quot;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'Loop through all events matching criteria above: 529 in sec log</span>
<span style="color: #FF8000;">For</span> <span style="color: #0600FF;">Each</span> objEvent in colLoggedEvents
	<span style="color: #008080; font-style: italic;">'Use regex to parse any ip addresses from event</span>
	<span style="color: #008080; font-style: italic;">' if no address found, goto next record</span>
	<span style="color: #FF8000;">Set</span> objRegEx <span style="color: #008000;">=</span> <span style="color: #0600FF;">CreateObject</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;VBScript.RegExp&quot;</span><span style="color: #000000;">&#41;</span>
	objRegEx.<span style="color: #0000FF;">Global</span> <span style="color: #008000;">=</span> <span style="color: #0600FF;">True</span>
	objRegEx.<span style="color: #0000FF;">IgnoreCase</span> <span style="color: #008000;">=</span> <span style="color: #0600FF;">True</span>
&nbsp;
	<span style="color: #008080; font-style: italic;">'Will return the line of the user name that was used</span>
	objRegEx.<span style="color: #0000FF;">Pattern</span> <span style="color: #008000;">=</span> <span style="color: #808080;">&quot;(\tUser Name:.*\n)&quot;</span>
	<span style="color: #FF8000;">Set</span> colMatches <span style="color: #008000;">=</span> objRegEx.<span style="color: #0000FF;">Execute</span><span style="color: #000000;">&#40;</span>objEvent.<span style="color: #0000FF;">Message</span><span style="color: #000000;">&#41;</span>
	<span style="color: #FF8000;">For</span> <span style="color: #0600FF;">Each</span> strMatch in colMatches
	   strUserName <span style="color: #008000;">=</span> strMatch.<span style="color: #0000FF;">Value</span>
	<span style="color: #FF8000;">Next</span>
&nbsp;
	<span style="color: #008080; font-style: italic;">'Will return the line of the workstation name that was used</span>
	objRegEx.<span style="color: #0000FF;">Pattern</span> <span style="color: #008000;">=</span> <span style="color: #808080;">&quot;(\tWorkstation Name:.*\n)&quot;</span>
	<span style="color: #FF8000;">Set</span> colMatches <span style="color: #008000;">=</span> objRegEx.<span style="color: #0000FF;">Execute</span><span style="color: #000000;">&#40;</span>objEvent.<span style="color: #0000FF;">Message</span><span style="color: #000000;">&#41;</span>
	<span style="color: #FF8000;">For</span> <span style="color: #0600FF;">Each</span> strMatch in colMatches
	   strWorkstation <span style="color: #008000;">=</span> strMatch.<span style="color: #0000FF;">Value</span>
	<span style="color: #FF8000;">Next</span>
&nbsp;
	<span style="color: #008080; font-style: italic;">'Will return the line of the source ip address</span>
	objRegEx.<span style="color: #0000FF;">Pattern</span> <span style="color: #008000;">=</span> <span style="color: #808080;">&quot;(\tSource Network Address:.*\n)&quot;</span>
	<span style="color: #FF8000;">Set</span> colMatches <span style="color: #008000;">=</span> objRegEx.<span style="color: #0000FF;">Execute</span><span style="color: #000000;">&#40;</span>objEvent.<span style="color: #0000FF;">Message</span><span style="color: #000000;">&#41;</span>
	<span style="color: #FF8000;">For</span> <span style="color: #0600FF;">Each</span> strMatch in colMatches
	   strIPAddress <span style="color: #008000;">=</span> strMatch.<span style="color: #0000FF;">Value</span>
	<span style="color: #FF8000;">Next</span>
&nbsp;
	<span style="color: #008080; font-style: italic;">'Will return the line of the domain that was used</span>
	objRegEx.<span style="color: #0000FF;">Pattern</span> <span style="color: #008000;">=</span> <span style="color: #808080;">&quot;\tDomain:(.*\n)&quot;</span>
	<span style="color: #FF8000;">Set</span> colMatches <span style="color: #008000;">=</span> objRegEx.<span style="color: #0000FF;">Execute</span><span style="color: #000000;">&#40;</span>objEvent.<span style="color: #0000FF;">Message</span><span style="color: #000000;">&#41;</span>
	<span style="color: #FF8000;">For</span> <span style="color: #0600FF;">Each</span> strMatch in colMatches
	   strDomain <span style="color: #008000;">=</span> strMatch.<span style="color: #0000FF;">Value</span>
	<span style="color: #FF8000;">Next</span>
&nbsp;
	<span style="color: #008080; font-style: italic;">'Output clean csv line for easy reading in spreadsheet program</span>
	wscript.<span style="color: #0000FF;">echo</span> <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; GetCleanText<span style="color: #000000;">&#40;</span>strUserName<span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;,&quot;</span> <span style="color: #008000;">&amp;</span>amp; _
				 <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; GetCleanText<span style="color: #000000;">&#40;</span>strWorkstation<span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;,&quot;</span> <span style="color: #008000;">&amp;</span>amp; _
				 <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; GetCleanText<span style="color: #000000;">&#40;</span>strIpAddress<span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;,&quot;</span> <span style="color: #008000;">&amp;</span>amp; _
				 <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; GetCleanText<span style="color: #000000;">&#40;</span>strDomain<span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;,&quot;</span> <span style="color: #008000;">&amp;</span>amp; _
				 <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; WMIDateStringToDate<span style="color: #000000;">&#40;</span>objEvent.<span style="color: #0000FF;">TimeWritten</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #0600FF;">chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">34</span><span style="color: #000000;">&#41;</span>
<span style="color: #FF8000;">Next</span>
&nbsp;
<span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Function</span> GetCleanText<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">byVal</span> strText<span style="color: #000000;">&#41;</span>
	<span style="color: #008080; font-style: italic;">'This will cleanup the text and return only necessary data</span>
	<span style="color: #008080; font-style: italic;">' I'm sure there is a better way to do this :)</span>
	<span style="color: #0600FF;">dim</span> tmp,txt
	tmp <span style="color: #008000;">=</span> <span style="color: #0600FF;">Split</span><span style="color: #000000;">&#40;</span>strText,<span style="color: #808080;">&quot;:&quot;</span><span style="color: #000000;">&#41;</span>
	txt <span style="color: #008000;">=</span> tmp<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>
	txt <span style="color: #008000;">=</span> <span style="color: #0600FF;">Replace</span><span style="color: #000000;">&#40;</span>txt,vbTab,<span style="color: #808080;">&quot;&quot;</span><span style="color: #000000;">&#41;</span>
	txt <span style="color: #008000;">=</span> <span style="color: #0600FF;">Replace</span><span style="color: #000000;">&#40;</span>txt,vbCrLf,<span style="color: #808080;">&quot;&quot;</span><span style="color: #000000;">&#41;</span>
	txt <span style="color: #008000;">=</span> <span style="color: #0600FF;">Trim</span><span style="color: #000000;">&#40;</span>txt<span style="color: #000000;">&#41;</span>
	GetCleanText <span style="color: #008000;">=</span> txt
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Function</span>
&nbsp;
<span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Function</span> WMIDateStringToDate<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">byVal</span> dtmEventDate<span style="color: #000000;">&#41;</span>
	<span style="color: #008080; font-style: italic;">'Borrowed from the &quot;Hey, Scripting Guy! BLOG&quot;</span>
	<span style="color: #008080; font-style: italic;">' --&amp;gt; Search: WMIDateStringToDate</span>
    WMIDateStringToDate <span style="color: #008000;">=</span> <span style="color: #0600FF;">CDate</span><span style="color: #000000;">&#40;</span><span style="color: #FF8000;">Mid</span><span style="color: #000000;">&#40;</span>dtmEventDate, <span style="color: #FF0000;">5</span>, <span style="color: #FF0000;">2</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;/&quot;</span> <span style="color: #008000;">&amp;</span>amp; _
        <span style="color: #FF8000;">Mid</span><span style="color: #000000;">&#40;</span>dtmEventDate, <span style="color: #FF0000;">7</span>, <span style="color: #FF0000;">2</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;/&quot;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #0600FF;">Left</span><span style="color: #000000;">&#40;</span>dtmEventDate, <span style="color: #FF0000;">4</span><span style="color: #000000;">&#41;</span> _
            <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot; &quot;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #FF8000;">Mid</span> <span style="color: #000000;">&#40;</span>dtmEventDate, <span style="color: #FF0000;">9</span>, <span style="color: #FF0000;">2</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;:&quot;</span> <span style="color: #008000;">&amp;</span>amp; _
                <span style="color: #FF8000;">Mid</span><span style="color: #000000;">&#40;</span>dtmEventDate, <span style="color: #FF0000;">11</span>, <span style="color: #FF0000;">2</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;:&quot;</span> <span style="color: #008000;">&amp;</span>amp; <span style="color: #FF8000;">Mid</span><span style="color: #000000;">&#40;</span>dtmEventDate, _
                    <span style="color: #FF0000;">13</span>, <span style="color: #FF0000;">2</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Function</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://halfloaded.com/blog/part-1-blocking-bad-hosts-finding-them-easily/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logon Script: Move Local PST Files To Network Share</title>
		<link>http://halfloaded.com/blog/logon-script-move-local-pst-files-to-network-share/</link>
		<comments>http://halfloaded.com/blog/logon-script-move-local-pst-files-to-network-share/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 03:25:05 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[logon script]]></category>
		<category><![CDATA[outlook]]></category>
		<category><![CDATA[pst]]></category>
		<category><![CDATA[vbScript]]></category>

		<guid isPermaLink="false">http://halfloaded.com/?p=322</guid>
		<description><![CDATA[Download Script: move-pst-to-network.zip
So, my buddy (and former co-worker) called me yesterday for some help with a script he put together.  His script checked the local profile in Outlook for any PST files that were stored locally.  If it found any, it would them move them to the users home space.  We tried and tried to <a href="http://halfloaded.com/blog/logon-script-move-local-pst-files-to-network-share/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Download Script: <a href="http://halfloaded.com/wp-content/uploads/2009/10/move-pst-to-network.zip">move-pst-to-network.zip</a></p>
<p>So, my buddy (and former co-worker) called me yesterday for some help with a script he put together.  His script checked the local profile in Outlook for any PST files that were stored locally.  If it found any, it would them move them to the users home space.  We tried and tried to get the script to work properly but it never seemed to work 100%.  Being that he is a good friend and this would be useful at work, I decided to take the work he had put in and get the thing working.<span id="more-322"></span></p>
<p>Here is what the script does:</p>
<ol>
<li>Checks to see if the computer is a laptop.  If it is, the user probably uses Outlook offline and/or over VPN so moving the PST to a network share will be detrimental to the user&#8217;s experience.  If you don&#8217;t care, just comment out lines 17-21.</li>
<li>Checks to see if Outlook is installed and can be launched properly.  If it can not, no sense in continuing the script.  It will exit.</li>
<li>Checks to see that the target (network) directory exists and is writable.  If it does not exist or is not writable, the script will exit.</li>
<li>Enumerates all the local stores and returns all the PST files.</li>
<li>Check to see if the PST files are stored on local drives.  It will exclude drives that are mapped network drives and/or removable media.</li>
<li>Check if a file already exists in the target directory with the same name.  If one does, it will not copy the file over. (I may update the script to move and rename the file to ensure all local PSTs are moved.</li>
<li>Removes all Personal Folders from Outlook that matched criteria.</li>
<li>Moves actual PST files to network share (Outlook will close to release the file lock on the PST file).</li>
<li>Adds all the Personal Folders back to Outlook.</li>
</ol>
<p>I have tested this on Windows XP w/ Office 2007 and Office 2003.  I am interested in hearing if this works or not in your environment.  I hope you find this useful.</p>

<div class="wp_syntax"><div class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">'==========================================================================</span>
<span style="color: #008080; font-style: italic;">' VBScript Source File</span>
<span style="color: #008080; font-style: italic;">' NAME: move-pst-to-network</span>
<span style="color: #008080; font-style: italic;">' AUTHOR: Andrew J Healey &amp;amp; Nate Stevenson</span>
<span style="color: #008080; font-style: italic;">' WEB: http://halfloaded.com/</span>
<span style="color: #008080; font-style: italic;">' DATE  : 2010.14.2009</span>
<span style="color: #008080; font-style: italic;">' COMMENT: This script will move any mapped PST files that are located on</span>
<span style="color: #008080; font-style: italic;">'	local disks to a network share.</span>
<span style="color: #008080; font-style: italic;">' PROCESS: 1) determine if laptop; 2) determine if outlook installed</span>
<span style="color: #008080; font-style: italic;">'	3) determine local drives; 4) check for local pst's; 5) move pst's</span>
<span style="color: #008080; font-style: italic;">'	to network; 6) remap pst files</span>
<span style="color: #008080; font-style: italic;">'==========================================================================</span>
&nbsp;
<span style="color: #FF8000;">Option</span> Explicit
&nbsp;
<span style="color: #008080; font-style: italic;">'Determine if a laptop (remove if you don't care)</span>
<span style="color: #0600FF;">If</span> IsLaptop<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">=</span> <span style="color: #0600FF;">True</span> <span style="color: #FF8000;">Then</span>
	wscript.<span style="color: #0000FF;">echo</span> <span style="color: #808080;">&quot;Computer is a laptop or the chassis could not be determined.&quot;</span>
	wscript.<span style="color: #0000FF;">echo</span> <span style="color: #808080;">&quot;Exiting.&quot;</span>
	wscript.<span style="color: #0000FF;">quit</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'Determine if outlook is installed</span>
<span style="color: #0600FF;">If</span> IsOutlookInstalled<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">=</span> <span style="color: #0600FF;">False</span> <span style="color: #FF8000;">Then</span>
	wscript.<span style="color: #0000FF;">echo</span> <span style="color: #808080;">&quot;Could not launch Outlook.&quot;</span>
	wscript.<span style="color: #0000FF;">echo</span> <span style="color: #808080;">&quot;Exiting.&quot;</span>
	wscript.<span style="color: #0000FF;">quit</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'Get user name</span>
<span style="color: #0600FF;">Dim</span> WshNetwork : <span style="color: #FF8000;">Set</span> WshNetwork <span style="color: #008000;">=</span> WScript.<span style="color: #0600FF;">CreateObject</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;WScript.Network&quot;</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">Dim</span> user : user <span style="color: #008000;">=</span> <span style="color: #0600FF;">lcase</span><span style="color: #000000;">&#40;</span>WshNetwork.<span style="color: #0000FF;">UserName</span><span style="color: #000000;">&#41;</span>
<span style="color: #FF8000;">Set</span> WshNetwork <span style="color: #008000;">=</span> <span style="color: #FF8000;">Nothing</span>
&nbsp;
<span style="color: #0600FF;">Dim</span> strNetworkPath
<span style="color: #008080; font-style: italic;">'=========================================================================</span>
<span style="color: #008080; font-style: italic;">' Configuration Section</span>
strNetworkPath <span style="color: #008000;">=</span> <span style="color: #808080;">&quot;\\servername\homes\&quot;</span> <span style="color: #008000;">&amp;</span>amp; user <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;\&quot;</span>
<span style="color: #008080; font-style: italic;">' End Configuration Section</span>
<span style="color: #008080; font-style: italic;">'=========================================================================</span>
<span style="color: #008080; font-style: italic;">'Fix network path if forgot to include trailing slash...</span>
<span style="color: #0600FF;">If</span> <span style="color: #804040;">Not</span> <span style="color: #0600FF;">Right</span><span style="color: #000000;">&#40;</span>strNetworkPath,<span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">=</span> <span style="color: #808080;">&quot;\&quot;</span> <span style="color: #FF8000;">Then</span> strNetworkPath <span style="color: #008000;">=</span> strNetworkPath <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;\&quot;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'Determine if network path is writable</span>
<span style="color: #0600FF;">If</span> IsPathWritable<span style="color: #000000;">&#40;</span>strNetworkPath<span style="color: #000000;">&#41;</span> <span style="color: #008000;">=</span> <span style="color: #0600FF;">False</span> <span style="color: #FF8000;">Then</span>
	wscript.<span style="color: #0000FF;">echo</span> <span style="color: #808080;">&quot;Remote path is not writable.&quot;</span>
	wscript.<span style="color: #0000FF;">echo</span> <span style="color: #808080;">&quot;Exiting.&quot;</span>
	wscript.<span style="color: #0000FF;">quit</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'Instatiate objects</span>
<span style="color: #0600FF;">Dim</span> objOutlook, objNS, objFSO, objFolder
<span style="color: #FF8000;">Set</span> objOutlook <span style="color: #008000;">=</span> <span style="color: #0600FF;">CreateObject</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Outlook.Application&quot;</span><span style="color: #000000;">&#41;</span>
<span style="color: #FF8000;">Set</span> objNS <span style="color: #008000;">=</span> objOutlook.<span style="color: #0000FF;">GetNamespace</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;MAPI&quot;</span><span style="color: #000000;">&#41;</span>
<span style="color: #FF8000;">Set</span> objFSO <span style="color: #008000;">=</span> <span style="color: #0600FF;">CreateObject</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Scripting.FileSystemObject&quot;</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'Sort through all stores in outlook and add all local pst</span>
<span style="color: #008080; font-style: italic;">' paths into an array. Then remove the store from outlook.</span>
<span style="color: #0600FF;">Dim</span> pstFiles
<span style="color: #0600FF;">Dim</span> count : count <span style="color: #008000;">=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span>
<span style="color: #0600FF;">Dim</span> arrPaths<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #FF8000;">For</span> <span style="color: #0600FF;">Each</span> objFolder In objNS.<span style="color: #008000;">Folders</span>
	<span style="color: #0600FF;">If</span> GetPSTPath<span style="color: #000000;">&#40;</span>objFolder.<span style="color: #0000FF;">StoreID</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>lt;<span style="color: #008000;">&amp;</span>gt; <span style="color: #808080;">&quot;&quot;</span> <span style="color: #FF8000;">Then</span>
		pstFiles <span style="color: #008000;">=</span> GetPSTPath<span style="color: #000000;">&#40;</span>objFolder.<span style="color: #0000FF;">StoreID</span><span style="color: #000000;">&#41;</span>
		<span style="color: #0600FF;">If</span> IsStoredLocal<span style="color: #000000;">&#40;</span>pstFiles<span style="color: #000000;">&#41;</span> <span style="color: #008000;">=</span> <span style="color: #0600FF;">True</span> <span style="color: #FF8000;">Then</span>
			<span style="color: #0600FF;">If</span> objFSO.<span style="color: #0000FF;">FileExists</span><span style="color: #000000;">&#40;</span>strNetworkPath <span style="color: #008000;">&amp;</span>amp; <span style="color: #FF8000;">Mid</span><span style="color: #000000;">&#40;</span>pstFiles,<span style="color: #0600FF;">InStrRev</span><span style="color: #000000;">&#40;</span>pstFiles,<span style="color: #808080;">&quot;\&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">+</span> <span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">=</span> <span style="color: #0600FF;">True</span> <span style="color: #FF8000;">Then</span>
				wscript.<span style="color: #0000FF;">echo</span> <span style="color: #808080;">&quot;A pst file already exists with the same name.&quot;</span> <span style="color: #008000;">&amp;</span>amp; vbCrLf <span style="color: #008000;">&amp;</span>amp; _
						vbTab <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;Source: &quot;</span> <span style="color: #008000;">&amp;</span>amp; pstPath <span style="color: #008000;">&amp;</span>amp; vbCrLf <span style="color: #008000;">&amp;</span>amp; _
						vbTab <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;Target: &quot;</span> <span style="color: #008000;">&amp;</span>amp; strNetworkPath <span style="color: #008000;">&amp;</span>amp; <span style="color: #FF8000;">Mid</span><span style="color: #000000;">&#40;</span>pstPath,<span style="color: #0600FF;">InStrRev</span><span style="color: #000000;">&#40;</span>pstPath,<span style="color: #808080;">&quot;\&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">+</span> <span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>
			<span style="color: #FF8000;">Else</span>
				count <span style="color: #008000;">=</span> count <span style="color: #008000;">+</span> <span style="color: #FF0000;">1</span>
				<span style="color: #0600FF;">ReDim</span> Preserve arrPaths<span style="color: #000000;">&#40;</span>count<span style="color: #000000;">&#41;</span>
				arrPaths<span style="color: #000000;">&#40;</span>count<span style="color: #000000;">&#41;</span> <span style="color: #008000;">=</span> pstFiles
				objOutlook.<span style="color: #0000FF;">Session</span>.<span style="color: #0000FF;">RemoveStore</span> objFolder
			<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
		<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
	<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
<span style="color: #FF8000;">Next</span>
&nbsp;
objOutlook.<span style="color: #0000FF;">Session</span>.<span style="color: #0000FF;">Logoff</span>
objOutlook.<span style="color: #0000FF;">Quit</span>
<span style="color: #FF8000;">Set</span> objOutlook <span style="color: #008000;">=</span> <span style="color: #FF8000;">Nothing</span>
<span style="color: #FF8000;">Set</span> objNS <span style="color: #008000;">=</span> <span style="color: #FF8000;">Nothing</span>
&nbsp;
<span style="color: #0600FF;">if</span> count <span style="color: #008000;">&amp;</span>lt; <span style="color: #FF0000;">0</span> <span style="color: #FF8000;">then</span>
	wscript.<span style="color: #0000FF;">echo</span> <span style="color: #808080;">&quot;No local PST Files Found.&quot;</span>
	wscript.<span style="color: #0000FF;">quit</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'If local PST files were found, move them to the new location</span>
<span style="color: #008080; font-style: italic;">' Echo output if the file already exists</span>
<span style="color: #0600FF;">Dim</span> pstPath
<span style="color: #FF8000;">For</span> <span style="color: #0600FF;">Each</span> pstPath in arrPaths
	<span style="color: #FF8000;">On</span> <span style="color: #FF8000;">Error</span> <span style="color: #FF8000;">Resume</span> <span style="color: #FF8000;">Next</span>
		objFSO.<span style="color: #0000FF;">MoveFile</span> pstPath, strNetworkPath
		<span style="color: #0600FF;">If</span> <span style="color: #008000;">Err</span>.<span style="color: #0000FF;">Number</span> <span style="color: #008000;">&amp;</span>lt;<span style="color: #008000;">&amp;</span>gt; <span style="color: #FF0000;">0</span> <span style="color: #FF8000;">Then</span>
			wscript.<span style="color: #0000FF;">sleep</span> <span style="color: #FF0000;">5000</span>
			objFSO.<span style="color: #0000FF;">MoveFile</span> pstPath, strNetworkPath
		<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
	<span style="color: #008000;">Err</span>.<span style="color: #0000FF;">Clear</span>
	<span style="color: #FF8000;">On</span> <span style="color: #FF8000;">Error</span> GoTo <span style="color: #FF0000;">0</span>
<span style="color: #FF8000;">Next</span>
<span style="color: #FF8000;">Set</span> objFSO <span style="color: #008000;">=</span> <span style="color: #FF8000;">Nothing</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'Re-open outlook</span>
<span style="color: #FF8000;">Set</span> objOutlook <span style="color: #008000;">=</span> <span style="color: #0600FF;">CreateObject</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Outlook.Application&quot;</span><span style="color: #000000;">&#41;</span>
<span style="color: #FF8000;">Set</span> objNS <span style="color: #008000;">=</span> objOutlook.<span style="color: #0000FF;">GetNamespace</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;MAPI&quot;</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">'Re-map Outlook folders</span>
<span style="color: #FF8000;">For</span> <span style="color: #0600FF;">Each</span> pstPath in arrPaths
	objNS.<span style="color: #0000FF;">AddStore</span> strNetworkPath <span style="color: #008000;">&amp;</span>amp; <span style="color: #FF8000;">Mid</span><span style="color: #000000;">&#40;</span>pstPath,<span style="color: #0600FF;">InStrRev</span><span style="color: #000000;">&#40;</span>pstPath,<span style="color: #808080;">&quot;\&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">+</span> <span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>
<span style="color: #FF8000;">Next</span>
&nbsp;
objOutlook.<span style="color: #0000FF;">Session</span>.<span style="color: #0000FF;">Logoff</span>
objOutlook.<span style="color: #0000FF;">Quit</span>
<span style="color: #FF8000;">Set</span> objOutlook <span style="color: #008000;">=</span> <span style="color: #FF8000;">Nothing</span>
<span style="color: #FF8000;">Set</span> objNS <span style="color: #008000;">=</span> <span style="color: #FF8000;">Nothing</span>
wscript.<span style="color: #0000FF;">echo</span> <span style="color: #808080;">&quot;Done.&quot;</span>
wscript.<span style="color: #0000FF;">quit</span>
&nbsp;
<span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Function</span> GetPSTPath<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">byVal</span> <span style="color: #FF8000;">input</span><span style="color: #000000;">&#41;</span>
	<span style="color: #008080; font-style: italic;">'Will return the path of all PST files</span>
	<span style="color: #008080; font-style: italic;">' Took Function from: http://www.vistax64.com/vb-script/</span>
	<span style="color: #0600FF;">Dim</span> i, strSubString, strPath
	<span style="color: #FF8000;">For</span> i <span style="color: #008000;">=</span> <span style="color: #FF0000;">1</span> <span style="color: #FF8000;">To</span> <span style="color: #FF8000;">Len</span><span style="color: #000000;">&#40;</span><span style="color: #FF8000;">input</span><span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Step</span> <span style="color: #FF0000;">2</span>
		strSubString <span style="color: #008000;">=</span> <span style="color: #FF8000;">Mid</span><span style="color: #000000;">&#40;</span><span style="color: #FF8000;">input</span>,i,<span style="color: #FF0000;">2</span><span style="color: #000000;">&#41;</span>
		<span style="color: #0600FF;">If</span> <span style="color: #804040;">Not</span> strSubString <span style="color: #008000;">=</span> <span style="color: #808080;">&quot;00&quot;</span> <span style="color: #FF8000;">Then</span>
			strPath <span style="color: #008000;">=</span> strPath <span style="color: #008000;">&amp;</span>amp; <span style="color: #0600FF;">ChrW</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;&amp;amp;H&quot;</span> <span style="color: #008000;">&amp;</span>amp; strSubString<span style="color: #000000;">&#41;</span>
		<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
	<span style="color: #FF8000;">Next</span>
&nbsp;
	<span style="color: #0600FF;">Select</span> <span style="color: #0600FF;">Case</span> <span style="color: #0600FF;">True</span>
		<span style="color: #0600FF;">Case</span> <span style="color: #0600FF;">InStr</span><span style="color: #000000;">&#40;</span>strPath,<span style="color: #808080;">&quot;:\&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>gt; <span style="color: #FF0000;">0</span>
			GetPSTPath <span style="color: #008000;">=</span> <span style="color: #FF8000;">Mid</span><span style="color: #000000;">&#40;</span>strPath,<span style="color: #0600FF;">InStr</span><span style="color: #000000;">&#40;</span>strPath,<span style="color: #808080;">&quot;:\&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>
		<span style="color: #0600FF;">Case</span> <span style="color: #0600FF;">InStr</span><span style="color: #000000;">&#40;</span>strPath,<span style="color: #808080;">&quot;\\&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>gt; <span style="color: #FF0000;">0</span>
			GetPSTPath <span style="color: #008000;">=</span> <span style="color: #FF8000;">Mid</span><span style="color: #000000;">&#40;</span>strPath,<span style="color: #0600FF;">InStr</span><span style="color: #000000;">&#40;</span>strPath,<span style="color: #808080;">&quot;\\&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
	<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Select</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Function</span>
&nbsp;
<span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Function</span> IsLaptop<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
	<span style="color: #008080; font-style: italic;">'Determine if the computer is a mobile machine</span>
	<span style="color: #FF8000;">On</span> <span style="color: #FF8000;">Error</span> <span style="color: #FF8000;">Resume</span> <span style="color: #FF8000;">Next</span>
		<span style="color: #008080; font-style: italic;">'Instantiate objects</span>
		<span style="color: #0600FF;">Dim</span> objWMIService, colChassis, objChassis, strChassisType
		<span style="color: #FF8000;">Set</span> objWMIService <span style="color: #008000;">=</span> GetObject<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2&quot;</span><span style="color: #000000;">&#41;</span>
		<span style="color: #FF8000;">Set</span> colChassis <span style="color: #008000;">=</span> objWMIService.<span style="color: #0000FF;">ExecQuery</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Select * from Win32_SystemEnclosure&quot;</span><span style="color: #000000;">&#41;</span>
&nbsp;
		<span style="color: #008080; font-style: italic;">'Check chassis type</span>
		<span style="color: #008080; font-style: italic;">'http://msdn.microsoft.com/en-us/library/aa394474%28VS.85%29.aspx</span>
		<span style="color: #FF8000;">For</span> <span style="color: #0600FF;">Each</span> objChassis in colChassis
			<span style="color: #FF8000;">For</span>  <span style="color: #0600FF;">Each</span> strChassisType in objChassis.<span style="color: #0000FF;">ChassisTypes</span>
				<span style="color: #0600FF;">If</span> <span style="color: #000000;">&#40;</span>strChassisType <span style="color: #008000;">&amp;</span>gt;<span style="color: #008000;">=</span> <span style="color: #FF0000;">8</span> <span style="color: #804040;">And</span> strChassisType <span style="color: #008000;">&amp;</span>lt;<span style="color: #008000;">=</span><span style="color: #FF0000;">12</span><span style="color: #000000;">&#41;</span> Or <span style="color: #000000;">&#40;</span>strChassisType <span style="color: #008000;">=</span> <span style="color: #FF0000;">14</span><span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Then</span>
					IsLaptop <span style="color: #008000;">=</span> <span style="color: #0600FF;">True</span>
					<span style="color: #0600FF;">Exit</span> <span style="color: #FF8000;">For</span>
				<span style="color: #FF8000;">Else</span>
					IsLaptop <span style="color: #008000;">=</span> <span style="color: #0600FF;">False</span>
				<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
			<span style="color: #FF8000;">Next</span>
		<span style="color: #FF8000;">Next</span>
	<span style="color: #0600FF;">If</span> <span style="color: #008000;">Err</span>.<span style="color: #0000FF;">Number</span> <span style="color: #008000;">&amp;</span>lt;<span style="color: #008000;">&amp;</span>gt; <span style="color: #FF0000;">0</span> <span style="color: #FF8000;">Then</span> IsLaptop <span style="color: #008000;">=</span> <span style="color: #0600FF;">False</span>
	<span style="color: #FF8000;">On</span> <span style="color: #FF8000;">Error</span> GoTo <span style="color: #FF0000;">0</span>
	<span style="color: #FF8000;">Set</span> colChassis <span style="color: #008000;">=</span> <span style="color: #FF8000;">Nothing</span>
	<span style="color: #FF8000;">Set</span> objWMIService <span style="color: #008000;">=</span> <span style="color: #FF8000;">Nothing</span>
	objChassis <span style="color: #008000;">=</span> <span style="color: #FF8000;">Null</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Function</span> 
&nbsp;
<span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Function</span> IsOutlookInstalled<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
	<span style="color: #008080; font-style: italic;">'Function will return false if unable to launch outlook</span>
	<span style="color: #008080; font-style: italic;">' This adds some overhead but it is ultimately the best</span>
	<span style="color: #008080; font-style: italic;">' way to truly determine if script will function properly.</span>
	<span style="color: #FF8000;">On</span> <span style="color: #FF8000;">Error</span> <span style="color: #FF8000;">Resume</span> <span style="color: #FF8000;">Next</span>
		<span style="color: #FF8000;">Set</span> objOutlook <span style="color: #008000;">=</span> <span style="color: #0600FF;">CreateObject</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Outlook.Application&quot;</span><span style="color: #000000;">&#41;</span>
		<span style="color: #0600FF;">If</span> <span style="color: #008000;">Err</span>.<span style="color: #0000FF;">Number</span> <span style="color: #008000;">&amp;</span>lt;<span style="color: #008000;">&amp;</span>gt; <span style="color: #FF0000;">0</span> <span style="color: #FF8000;">Then</span>
			IsOutlookInstalled <span style="color: #008000;">=</span> <span style="color: #0600FF;">False</span>
			<span style="color: #0600FF;">Exit</span> <span style="color: #0600FF;">Function</span>
		<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
	<span style="color: #FF8000;">On</span> <span style="color: #FF8000;">Error</span> GoTo <span style="color: #FF0000;">0</span>
	IsOutlookInstalled <span style="color: #008000;">=</span> <span style="color: #0600FF;">True</span>
	objOutlook.<span style="color: #0000FF;">Session</span>.<span style="color: #0000FF;">Logoff</span>
	objOutlook.<span style="color: #0000FF;">Quit</span>
	<span style="color: #FF8000;">Set</span> objOutlook <span style="color: #008000;">=</span> <span style="color: #FF8000;">Nothing</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Function</span>
&nbsp;
<span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Function</span> IsPathWritable<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">byVal</span> strPath<span style="color: #000000;">&#41;</span>
	<span style="color: #008080; font-style: italic;">'Check to make sure the path is writable. If it is not, no</span>
	<span style="color: #008080; font-style: italic;">' need to continue processing.</span>
	<span style="color: #FF8000;">On</span> <span style="color: #FF8000;">Error</span> <span style="color: #FF8000;">Resume</span> <span style="color: #FF8000;">Next</span>
		<span style="color: #FF8000;">Set</span> objFSO <span style="color: #008000;">=</span> <span style="color: #0600FF;">CreateObject</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Scripting.FileSystemObject&quot;</span><span style="color: #000000;">&#41;</span>
		<span style="color: #0600FF;">Dim</span> min : min <span style="color: #008000;">=</span> <span style="color: #FF0000;">1</span>
		<span style="color: #0600FF;">Dim</span> max : max <span style="color: #008000;">=</span> <span style="color: #FF0000;">1000</span>
		<span style="color: #0600FF;">Dim</span> rand : rand <span style="color: #008000;">=</span> <span style="color: #0600FF;">Int</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>max <span style="color: #008000;">-</span> min <span style="color: #008000;">+</span> <span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">*</span> <span style="color: #0600FF;">Rnd</span> <span style="color: #008000;">+</span> min<span style="color: #000000;">&#41;</span>
		<span style="color: #0600FF;">Dim</span> fullFileName : fullFileName <span style="color: #008000;">=</span> strPath <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;temporary-&quot;</span> <span style="color: #008000;">&amp;</span>amp; rand <span style="color: #008000;">&amp;</span>amp; <span style="color: #808080;">&quot;.txt&quot;</span>
		<span style="color: #0600FF;">Dim</span> objFile : <span style="color: #FF8000;">Set</span> objFile <span style="color: #008000;">=</span> objFSO.<span style="color: #0000FF;">CreateTextFile</span><span style="color: #000000;">&#40;</span>fullFileName, <span style="color: #0600FF;">True</span><span style="color: #000000;">&#41;</span>
		objFile.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Test file creation of &quot;</span> <span style="color: #008000;">&amp;</span>amp; fullFileName<span style="color: #000000;">&#41;</span>
		objFile.<span style="color: #0600FF;">Close</span>
		<span style="color: #0600FF;">If</span> objFSO.<span style="color: #0000FF;">FileExists</span><span style="color: #000000;">&#40;</span>fullFileName<span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Then</span>
			IsPathWritable <span style="color: #008000;">=</span> <span style="color: #0600FF;">True</span>
			objFSO.<span style="color: #0000FF;">DeleteFile</span><span style="color: #000000;">&#40;</span>fullFileName<span style="color: #000000;">&#41;</span>
		<span style="color: #FF8000;">Else</span>
			IsPathWritable <span style="color: #008000;">=</span> <span style="color: #0600FF;">False</span>
		<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
	<span style="color: #0600FF;">If</span> <span style="color: #008000;">Err</span>.<span style="color: #0000FF;">Number</span> <span style="color: #008000;">&amp;</span>lt;<span style="color: #008000;">&amp;</span>gt; <span style="color: #FF0000;">0</span> <span style="color: #FF8000;">Then</span> IsPathWritable <span style="color: #008000;">=</span> <span style="color: #0600FF;">False</span>
	<span style="color: #FF8000;">On</span> <span style="color: #FF8000;">Error</span> GoTo <span style="color: #FF0000;">0</span>
	<span style="color: #FF8000;">Set</span> objFile <span style="color: #008000;">=</span> <span style="color: #FF8000;">Nothing</span>
	<span style="color: #FF8000;">Set</span> objFSO <span style="color: #008000;">=</span> <span style="color: #FF8000;">Nothing</span>
	rand <span style="color: #008000;">=</span> <span style="color: #FF8000;">Null</span>
	max <span style="color: #008000;">=</span> <span style="color: #FF8000;">Null</span>
	min <span style="color: #008000;">=</span> <span style="color: #FF8000;">Null</span>
	fullFileName <span style="color: #008000;">=</span> <span style="color: #FF8000;">Null</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Function</span>
&nbsp;
<span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Function</span> IsStoredLocal<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> fullFileName<span style="color: #000000;">&#41;</span>
	<span style="color: #008080; font-style: italic;">'Check if the PST is stored locally or on a mapped or removable drive</span>
	<span style="color: #FF8000;">On</span> <span style="color: #FF8000;">Error</span> <span style="color: #FF8000;">Resume</span> <span style="color: #FF8000;">Next</span>
		<span style="color: #0600FF;">Dim</span> objDisk, objWMIService, colDisks
		<span style="color: #FF8000;">Set</span> objWMIService <span style="color: #008000;">=</span> GetObject<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2&quot;</span><span style="color: #000000;">&#41;</span>
		<span style="color: #FF8000;">Set</span> colDisks <span style="color: #008000;">=</span> objWMIService.<span style="color: #0000FF;">ExecQuery</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;SELECT * FROM Win32_LogicalDisk&quot;</span><span style="color: #000000;">&#41;</span>
		<span style="color: #FF8000;">For</span> <span style="color: #0600FF;">Each</span> objDisk in colDisks
			<span style="color: #0600FF;">If</span> objDisk.<span style="color: #0000FF;">DriveType</span> <span style="color: #008000;">=</span> <span style="color: #FF0000;">3</span> <span style="color: #FF8000;">Then</span>
				<span style="color: #0600FF;">If</span> <span style="color: #0600FF;">InStr</span><span style="color: #000000;">&#40;</span>fullFileName,objDisk.<span style="color: #0000FF;">DeviceID</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>gt; <span style="color: #FF0000;">0</span> <span style="color: #FF8000;">Then</span>
					IsStoredLocal <span style="color: #008000;">=</span> <span style="color: #0600FF;">True</span>
					<span style="color: #0600FF;">Exit</span> <span style="color: #FF8000;">For</span>
				<span style="color: #FF8000;">Else</span>
					IsStoredLocal <span style="color: #008000;">=</span> <span style="color: #0600FF;">False</span>
				<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
			<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
		<span style="color: #FF8000;">Next</span>
	<span style="color: #0600FF;">If</span> <span style="color: #008000;">Err</span>.<span style="color: #0000FF;">Number</span> <span style="color: #008000;">&amp;</span>lt;<span style="color: #008000;">&amp;</span>gt; <span style="color: #FF0000;">0</span> <span style="color: #FF8000;">Then</span> IsLocalDrive <span style="color: #008000;">=</span> <span style="color: #0600FF;">False</span>
	<span style="color: #FF8000;">On</span> <span style="color: #FF8000;">Error</span> GoTo <span style="color: #FF0000;">0</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Function</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://halfloaded.com/blog/logon-script-move-local-pst-files-to-network-share/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Unexplained Phenomenom: Google&#8217;s Doodle Gogle</title>
		<link>http://halfloaded.com/blog/unexplained-phenomenom-googles-doodle-gogle/</link>
		<comments>http://halfloaded.com/blog/unexplained-phenomenom-googles-doodle-gogle/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 18:00:39 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[1.12.12 25.15.21.18 15 1.18.5 2.5.12.15.14.7 20.15 21.19]]></category>
		<category><![CDATA[all your base o are belong to us]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[go_gle]]></category>
		<category><![CDATA[O]]></category>
		<category><![CDATA[unexplained phenomenom]]></category>

		<guid isPermaLink="false">http://halfloaded.com/?p=305</guid>
		<description><![CDATA[Okay, okay.  I know you are expecting another brain-dead response to Go_gle&#8217;s recent doodle.  However, I am sick of it and I want to debunk several of the pages that say they have solved the mystery.  Here are a few interesting events:

Go_gle posted &#8220;1.12.12 25.15.21.18 15 1.18.5 2.5.12.15.14.7 20.15 21.19&#8243; on its Twitter Page.  It <a href="http://halfloaded.com/blog/unexplained-phenomenom-googles-doodle-gogle/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<div id="attachment_307" class="wp-caption alignright" style="width: 308px"><img class="size-full wp-image-307" title="Unexplained-Phenomenon" src="http://halfloaded.com/wp-content/uploads/2009/09/Unexplained-Phenomenon.jpg" alt="NOOO!!!!  Not my O!" width="298" height="149" /><p class="wp-caption-text">NOOO!!!!  Not my O!</p></div>
<p>Okay, okay.  I know you are expecting another brain-dead response to Go_gle&#8217;s recent doodle.  However, I am sick of it and I want to debunk several of the pages that say they have solved the mystery.  Here are a few interesting events:<span id="more-305"></span></p>
<ol>
<li>Go_gle posted &#8220;1.12.12 25.15.21.18 15 1.18.5 2.5.12.15.14.7 20.15 21.19&#8243; on its <a href="http://twitter.com/GOOGLE" target="_blank">Twitter Page</a>.  It is a <a href="http://en.wikipedia.org/wiki/All_your_base_are_belong_to_us#In_popular_culture">straight alpha-numeric transliteration</a> meaning, A=1, B=2, etc and making it stand for: &#8220;All Your O Are Belong To Us&#8221;.</li>
<li>The Go_gle logo file has been renamed with a missing O.  The actual file path is: <a href="http://www.google.com/logos/go_gle.gif">http://www.google.com/logos/go_gle.gif</a></li>
<li>The UFO is abducting the O.  The filename and the twitter post confirm there is something special about the O or about it going missing.</li>
<li><a href="http://www.urbandictionary.com/define.php?term=gogle" target="_blank">Gogle according to the urban dictionary</a>: a group of people awkwardly waiting for something to happen; usually unfamiliar with each other; a pre-icebreaker group</li>
<li>Go_gle has gone to great lengths to make this work in many countries.  However, not all have had their logo&#8217;s changed.  For instance, the Spain (although Spanish speaking Latin American countries have) and India Go_gle Search pages have not been changed.
<ol>
<li><a href="http://www.google.ru/">Russian Go_gle Page</a>.  Search Term: необъяснимые явления</li>
<li><a href="http://www.google.de/">Germany Go_gle Page</a>.  Search Term: Rätselhaftes Phänomen</li>
<li><a href="http://www.google.com.mx/">Mexico Go_gle Page</a>.  Search Term: fenómenos inexplicables</li>
<li><a href="http://www.google.nl/">Netherlands Go_gle Page</a>. Search Term: onverklaarbare verschijning</li>
<li><a href="http://www.google.hu/">Hungary Go_gle Page</a>. Search Term: megmagyarázhatatlan rejtélyek</li>
<li><a href="http://www.google.it/">Italy Go_gle Page</a>. Search Term: misteri inspiegabili</li>
</ol>
</li>
<li>As the 6th of September comes to countries, Go_gle is pulling the logo.  So, there is something specific with the 5th.</li>
</ol>
<p>Here are some of the rumors that people are spreading.  Of course, I have no proof&#8230; Only common sense.</p>
<ul>
<li>Reference to UFO Festival in Exeter, NH &#8212; Nope.  Why would Go_gle change the logo all across the world?  It is out of character for Go_gle to link to such an obscure search phrase.  Also, the <a href="http://en.wikipedia.org/wiki/Exeter_incident" target="_blank">Exeter incident happened in the weeks leading up to Sept 3rd, 1965</a>.</li>
<li>Reference to <a href="http://en.wikipedia.org/wiki/Voyager_I">Voyager I</a> (Sept 5, 1977) &#8212; Nope.  Although probably the most relevant space/UFO event relating to Sept 5th, Go_gle would probably just use the search phrase: Voyager Spacecraft.</li>
<li>Maiden return landing of Space Shuttle Discovery (Sept 5, 1984) &#8212; Nope.  Once again, when Go_gle marks important events for mankind, they are more specific with their search phrase.</li>
<li><a href="http://www.mirror.co.uk/news/top-stories/2009/09/05/wife-of-japan-s-prime-minister-claims-she-was-abducted-by-aliens-115875-21649309/">Japan&#8217;s New Prime Minister&#8217;s Wife Visits Venus</a> &#8212; Nope.  I really doubt Go_gle wants to make a statement that could be viewed as politically motivated or could look like Go_gle is poking fun at a foreign dignitary.  It just doesn&#8217;t make sense for Go_gle to do this.  Plus, the <a href="http://www.google.co.jp/" target="_blank">Japan Go_gle Search Page</a> doesn&#8217;t show the logo.</li>
<li>British Release of &#8220;<a href="http://en.wikipedia.org/wiki/District_9" target="_blank">District 9</a>&#8221; &#8212; Nope.  Doesn&#8217;t really make sense.  The rest of the world has been able to watch &#8220;District 9&#8243; for a couple weeks.  And again, the logo has been changed across the world.</li>
<li><strong><span style="color: #ff0000;">NEW</span></strong>: Star Trek Anniversary &#8212; Nope.  Examiner.com has a <a href="http://www.examiner.com/x-12837-US-Headlines-Examiner~y2009m9d5-Unexplained-phenomenon-Google-UFO-logo-Star-Trek-anniversary" target="_blank">story</a> that explains it might be related to Star Trek&#8217;s first airing.  Of course, that was on Sept 8th, 1966, not the 5th.  And, as one commenter pointed out, they would have used a logo of the Enterprise if that was the case.  Silly people&#8230;</li>
<li><strong><span style="color: #ff0000;">NEW</span></strong>: unexplained -<a href="http://www.unexplainedphenomenon.org/" target="_blank">scam</a>- phenomenon.org &#8212; Nope.  It sure didn&#8217;t take long for a scam to show up.  Idea!  Go_gle creates mystery on intertubes pointing to &#8220;unexplained phenomenon&#8221;&#8230;  Buy domain name unexplainedphenomenon dot org&#8230;  Put up picture of egg with light beams coming out&#8230; profit!!!  Clever, annoying, and I&#8217;m sure some &#8220;believers&#8221; will fall for it&#8230;  Sad state of affairs&#8230;</li>
<li><strong><span style="color: #ff0000;">NEW</span></strong>: Zero Wing 20 year anniversary &#8212; Nope.  <a href="http://blogs.telegraph.co.uk/technology/shanerichmond/100003402/google-ufo-logo-mystery-solved/" target="_blank">The Telegraph claims, and is wrong, that this solves the mystery</a>.  The Telegraph points to this wikipedia article.  However, if you look at the revision history, the date &#8220;September 5th, 1989&#8243; was added only yesterday.  Silly newspapers.  You think they would stop trusting everything they read on Wikipedia w/o a little research.  Wikipedia Zero Wing Articles: <a href="http://en.wikipedia.org/w/index.php?title=Zero_Wing&amp;oldid=311101372" target="_blank">Before 9/5/2009</a>; <a href="http://en.wikipedia.org/w/index.php?title=Zero_Wing&amp;oldid=312133300" target="_blank">On/After 9/5/2009</a>.</li>
</ul>
<p>Any other ridiculous, nefarious schemes floating around the interwebs?  If so, let me know.  I&#8217;m sure their flaws will be just as easy to point out.  Most likely, this is one of two things: Something related to an internal event at Go_gle or a way to build hype regarding a new product.  Of course, my speculation is just as unfounded as the other yahoos out there&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://halfloaded.com/blog/unexplained-phenomenom-googles-doodle-gogle/feed/</wfw:commentRss>
		<slash:comments>59</slash:comments>
		</item>
		<item>
		<title>Windows Server 2008 Print Services &#8211; ntprint.inf and 64-bit</title>
		<link>http://halfloaded.com/blog/windows-server-2008-print-services-ntprint-inf-and-64-bit/</link>
		<comments>http://halfloaded.com/blog/windows-server-2008-print-services-ntprint-inf-and-64-bit/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 23:48:23 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Server 2008]]></category>

		<guid isPermaLink="false">http://halfloaded.com/?p=299</guid>
		<description><![CDATA[Due to some unforeseen issues with our 2003 R2 print server, I decided it was about time to build up a new print server.  The old print server was built up by another person and it was never very stable so this was a good time to start with a clean slate.
Our old server was <a href="http://halfloaded.com/blog/windows-server-2008-print-services-ntprint-inf-and-64-bit/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<div id="attachment_301" class="wp-caption alignright" style="width: 140px"><img class="size-full wp-image-301 " title="The Good Ole' Days" src="http://halfloaded.com/wp-content/uploads/2009/08/images.jpg" alt="Server 2008" width="130" height="123" /><p class="wp-caption-text">The Good Ole&#39; Days</p></div>
<p>Due to some unforeseen issues with our 2003 R2 print server, I decided it was about time to build up a new print server.  The old print server was built up by another person and it was never very stable so this was a good time to start with a clean slate.</p>
<p>Our old server was a Dell Poweredge with a 32-bit proc.  This time, we are going to use our new VMWare ESX environment to stand up a 2008 Server in 64-bit.</p>
<p>Everything went well until I got to our Dell Printers.  I added the 64-bit drivers and setup the printer.  All was well.  I went to the sharing tab in the printer properties to add x86 (32-bit) support.  I checked the box and got an error:<span id="more-299"></span></p>
<blockquote><p>Install Components from Windows Media<br />
Please provide path to Windows media (x86 processor).<br />
Type the path where the file is located and click OK.</p></blockquote>
<p>After searching around, I came across <a href="http://social.technet.microsoft.com/Forums/en-US/winserverprint/thread/59c1d8e4-76f4-415a-9ec1-7046c9d417a2" target="_blank">this page on Technet</a>.  At the very bottom, I found the solution.  Basically, here are the steps involved:</p>
<ol>
<li>From a 32-bit OS (I used 32-bit XP Pro)</li>
<li>Browse to: \\%servername%\Printers and Faxes</li>
<li>Right click the printer you want to add 32-bit support to and select properties</li>
<li>It will tell you the 32-bit drivers are not installed and ask for the installation disk. Browse to the 32-bit drivers and hit okay.  If you say No, you will not be able to complete the steps below.</li>
<li>Once the printer&#8217;s properties are displayed, select the Sharing tab and click &#8220;Additional Drivers&#8221;</li>
<li>Check x86 and press OK</li>
<li>Browse to the 32-bit drivers and it will copy the 32-bit drivers from the local folder to \\%servername%\print%\W32X86</li>
</ol>
<p>After getting past this hurtle, I ran across it again.  Except this time, the Dell drivers were updated enough that I received a decent message:</p>
<blockquote><p>The selected driver must be installed remotely from an x86 computer using Type 3 (User mode) drivers.</p></blockquote>
<p>If you receive that message, it is basically telling you to follow the steps I outlined above.  It&#8217;s a bummer MS couldn&#8217;t have included the sub-system to support the required backward compatibility often necessary in the enterprise.  At least the workaround is simple enough.</p>
]]></content:encoded>
			<wfw:commentRss>http://halfloaded.com/blog/windows-server-2008-print-services-ntprint-inf-and-64-bit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Should I be excited to finally receive a Nigerian scam e-mail?</title>
		<link>http://halfloaded.com/blog/should-i-be-excited-to-finally-receive-a-nigerian-scam-e-mail/</link>
		<comments>http://halfloaded.com/blog/should-i-be-excited-to-finally-receive-a-nigerian-scam-e-mail/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 15:26:43 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://halfloaded.com/blog/should-i-be-excited-to-finally-receive-a-nigerian-scam-e-mail/</guid>
		<description><![CDATA[This weekend, I finally received my first Nigerian scam e-mail.  In actuality, this is probably not the first but it is the first one to make it through the e-mail filters.  I have to admit, I have felt a little left out over the past few years.  I always heard about these <a href="http://halfloaded.com/blog/should-i-be-excited-to-finally-receive-a-nigerian-scam-e-mail/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>This weekend, I finally received my first Nigerian scam e-mail.  In actuality, this is probably not the first but it is the first one to make it through the e-mail filters.  I have to admit, I have felt a little left out over the past few years.  I always heard about these e-mails but I never received one.  Here is the text from the message:</p>
<blockquote><p>Subject: PLEASE I NEED YOUR ASSISTANCE<br />
From: clementmattins<br />
Sincere Greeting,<br />
I&#8217;m Mr. Clement Mattins from bank of Africa. firstly,accept my apologies ,am the personal accountant to Dr. Ravindra F. Shah who died with his wife Mrs. Manjula Parikh-Shah in a plane crash on 1st Oct. 2003 on their way to Boston. i came across ($8,500.000.00USD) in his balance with our Bank (B.O.A), then i want you to provide an account where this money will be transfer into for both of us, If you are willing to assist me, therefore you should contact me immediately you receive this E-mail for more detail, Regards Mr Clement Mattins Telephone: +226 78 31 77 67</p></blockquote>
<p>After looking around the net, it became obvious that this is a <a href="http://en.wikipedia.org/wiki/Advance_fee_fraud" target="_blank">419 scam</a>.  A few ideas came to mind.  Should I play along and screw with the scammer?  Should I report this to some official government agency?<span id="more-281"></span></p>
<p>In the end, I decided to just let it go.  I tried forwarding the message to the secret service&#8217;s 419 scam e-mail address but it just bounced.  It just pisses me off that people fall for these scams.  It also worries me that in the current economic climate, more and more people will fall for these scams.  The public at large is aware of this type of generic scam.  However, these scammers have adapted their methods and are becoming more clever.</p>
<p>Nothing made this more clear than Dateline NBC&#8217;s episode on, what they call, <a href="http://www.msnbc.msn.com/id/29903354/" target="_blank">Work-from-home scams</a>.  The sad part is that these scams are originating in the same place as the scam e-mail I received.  I guess these people will always find a way to make a quick buck.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="445" height="364" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube-nocookie.com/v/SyebQOUn0YI&amp;hl=en&amp;fs=1&amp;rel=0&amp;border=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="445" height="364" src="http://www.youtube-nocookie.com/v/SyebQOUn0YI&amp;hl=en&amp;fs=1&amp;rel=0&amp;border=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://halfloaded.com/blog/should-i-be-excited-to-finally-receive-a-nigerian-scam-e-mail/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fedora 11 Beta: First Reactions</title>
		<link>http://halfloaded.com/blog/fedora-11-beta-first-reactions/</link>
		<comments>http://halfloaded.com/blog/fedora-11-beta-first-reactions/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 19:22:39 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://halfloaded.com/?p=288</guid>
		<description><![CDATA[It seems like just yesterday that I got home from Iraq and refreshed my laptop (Dell Latitude D610).  I ran Fedora 8 the entire time I was in Habbaniyah.  After getting home, I was excited to get a chance to skip 9 and go right to Fedora 10.  I didn&#8217;t use it long before I <a href="http://halfloaded.com/blog/fedora-11-beta-first-reactions/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>It seems like just yesterday that I got home from Iraq and refreshed my laptop (Dell Latitude D610).  I ran Fedora 8 the entire time I was in Habbaniyah.  After getting home, I was excited to get a chance to skip 9 and go right to Fedora 10.  I didn&#8217;t use it long before I got a new laptop (Dell Latitude D630).  Linux never made it on the new laptop.  After I read a review of Fedora 11 Beta, I figured it was worth a shot.  I downloaded Gparted LiveCD, opened up 20GB of space and popped in the DVD.  I split this posting into three sections: the good, the mediocre and the ugly.<span id="more-288"></span></p>
<h3>The Good</h3>
<p>Sprint Cellular Broadband Card: God Bless NetworkManager.  No reboot.  No installation.  I just plugged it into my running machine and it worked like a champ.  In fact, I&#8217;m using it now since my broadcom wireless card isn&#8217;t working.</p>
<p>Performance: This thing rocks.  It is probably because the drastic changes going from a single-core, 32-bit proc to dual-core 64-bit.  But, this thing is snappy!</p>
<p>Ext4: First major distro using this as default.  Congrats Fedora Team!</p>
<h3>The Mediocre</h3>
<p>Gnash/swfdec: I wish these two would just join forces and develop a kick ass, open-source flash player.  I decided to go with swfdec.  64-bit, mozilla-plugin. Adobe can kiss my ass.</p>
<p>PackageKit: This software just annoys me.  I understand its purpose but yumex is and always has been a better solution.  I guess I am a bit biased though since I am not a beginner.</p>
<h3>The Ugly</h3>
<p>Installation: The installer can&#8217;t seem to figure out how to eject the DVD and pukes at the end.</p>
<p>Wallpaper/Background: It is just ugly.  Now, I couldn&#8217;t design anything nicer but all I wanted to do was change the desktop background and never see it again.</p>
<p>Firefox: Firefox is great.  However, I am a <a href="http://www.reddit.com/comments/5yw4h/i_have_a_habit_of_highlighting_text_with_my_mouse" target="_blank">habitual text highlighter</a>.  The entire system locks up when I drag text a little bit on accident from within Firefox.</p>
<p>Broadcom/Nvidia: Can&#8217;t really blame this on Fedora but these drivers are still an issue.  I can&#8217;t get either of them to work.</p>
<h3>Conclusion</h3>
<p>What can I say?  I heart Fedora.  This seems to be the least stable beta release I have tried yet but I think it is because they are pushing the envelope.  I like to see it too.  Fedora is consistently trying new things and experimenting.  It is good for the community and OSS movement.</p>
]]></content:encoded>
			<wfw:commentRss>http://halfloaded.com/blog/fedora-11-beta-first-reactions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backups In The Cloud: Weighing The Risks</title>
		<link>http://halfloaded.com/blog/backups-in-the-cloud-the-case-against-online-backups/</link>
		<comments>http://halfloaded.com/blog/backups-in-the-cloud-the-case-against-online-backups/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 15:39:52 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://halfloaded.com/?p=256</guid>
		<description><![CDATA[I have been asked by several small businesses and individuals regarding services like those offered by Carbonite, Mozy and iDrive.  I&#8217;ve always had a bad feeling about the idea.  Recently though, I thought a little harder about the reasons why I could never store all my data online. Of course, online backup systems are infinitely <a href="http://halfloaded.com/blog/backups-in-the-cloud-the-case-against-online-backups/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-266" title="Hard Drive" src="http://halfloaded.com/wp-content/uploads/2009/03/hard-drive-fire.jpg" alt="Hard Drive" width="306" height="203" />I have been asked by several small businesses and individuals regarding services like those offered by <a title="Carbonite" href="http://www.carbonite.com" target="_blank">Carbonite</a>, <a title="Mozy" href="http://mozy.com" target="_blank">Mozy</a> and <a title="iDrive" href="http://www.idrive.com" target="_blank">iDrive</a>.  I&#8217;ve always had a bad feeling about the idea.  Recently though, I thought a little harder about the reasons why I could never store all my data online. Of course, online backup systems are infinitely more valuable than no backup solution at all. As some readers have pointed out, online backup services have saved a lot of butts. At the same time, there are some factors that make online backups less attractive to the &#8220;old fashioned way&#8221; of backing up data.  There are three main factors that I feel give standard backups an upper hand.</p>
<ol>
<li>Storage is cheap.</li>
<li>Your data is only as safe as your password.</li>
<li>When stored online, your data is no longer yours.</li>
</ol>
<p>While these factors are why I do not recommend online backups, I want to take a moment to discuss when online backups do make sense.<span id="more-256"></span></p>
<h3>Disclaimer: When Online Backups Make Sense</h3>
<p>As a reader pointed out, many people setup a backup process but the process gets in their way of doing it properly. Either their backups fail to run regularly or they stop rotating the media because the process is cumbersome.  If this is the case, backup your data online.</p>
<p>Also, please understand that this is only meant to explain why I do no recommend online backup services as a regular practice.  It does not mean there is no place for it.  There are many reputable online services out there.  The vast majority of them encrypt the connections end-to-end and store the data in encrypted form.  But that is something you should ask or check before just signing up for the service and dumping your data on their servers.</p>
<p>For each of the weaknesses I discuss, there are measures that can be taken to protect your data, even if stored online.  Most technically savvy people know how to operate online and protect their data and identity.  But all too often, I find people and small businesses operating online in an insecure fashion.  They may be required by their insurance company to have offsite backups.  They see online backups as a panacea without understanding the potential risks they face by not fully understanding the importance of protecting their data.</p>
<p>One other point regarding offline backups.  If you store your data on a hard drive that is stored in the back seat of your car or in your gym bag, just save yourself the hassle and use an online service.  By now, most of us have heard the stories about the IT guy at the hospital whose car was broken into and all the hospital&#8217;s data was compromised.  Or, the VA worker whose laptop was stolen with patient records.  The same thing can (and will) happen to you if you do not treat your offline backups with care.</p>
<h3>Disks Are Cheap</h3>
<p>The other day I was spec&#8217;ing out a brick-and-mortar backup solution for a small business.  I was surprised to find a 1TB external hard drive for only $90.  I realize that in a few years from now, that 1TB drive will not be enough storage.  File sizes grow.  However, as history has shown, a comparable storage medium will be available at that time for a similar price.</p>
<p>Online storage solutions exist because they offer strategy, software and storage for ~$50/year.  The price point and ease of use is attractive.  It is why the services are popular.  When you add the fact that to do your own backups you need (probably) two 1TB external drives, software and some knowledge of your computer, these solutions become even more attractive.  It is the same reason people use Gmail or Yahoo! for their e-mail.  Sure, they could buy a domain name, setup postfix and <a title="RoundCube Webmail Project" href="http://roundcube.net/" target="_blank">roundcube</a> and have control over their e-mail services.  But why?  Especially when it is free to use Yahoo! or Gmail.</p>
<p>The real reason against online backups is in my two points below.  However, the cost and expertise needed to do it on your own is minimal.  If you do it on your own, you first have to assume that you probably replace your computer every 5 years.  Over that period, an online service would cost roughly $250 over that time.</p>
<p>To do this on your own, you probably want to start out with two 1TB disks.  The software needed is free.  You can use <a title="Windows XP Backup Made Easy" href="http://www.microsoft.com/windowsxp/using/setup/learnmore/bott_03july14.mspx" target="_blank">Windows Backup</a> or an Open Source solution like <a title="Areca" href="http://sourceforge.net/projects/areca/" target="_blank">Areca</a>.  The time needed to learn how to properly backup your data and to manage the backups is the wildcard.  It depends on how much you value your data (if you&#8217;ve ever lost everything, your probably realize it is worth a lot; or maybe not).  The resources are available on the internet.  You just have to find a solution that works for you.</p>
<p>My solution.  I use two 1TB disks along with Areca to backup all my data to the disk.  I always store one of the hard drives in a locked, fireproof safe and the other at an external location I can trust.</p>
<h3>Your Data, Your Password</h3>
<p>If you are like most people, you use the same password for your online banking as you do your e-mail and your e-bay account.  It is a fact that people repetitiously use their passwords.  Although there is a positive trend in password strength, as was evident in the recent presidential race, there are ways to get around strong passwords.  For example, <a href="http://www.time.com/time/politics/article/0,8599,1842097,00.html" target="_blank">Sarah Palin&#8217;s e-mail account was compromised</a> and all her e-mail accessed during the campaign.  Not because she used a weak password.  Instead, it was because the <a href="http://garwarner.blogspot.com/2008/09/governor-palins-email-security.html" target="_blank">security questions</a> used to reset her password were setup using easy to guess answers.  What is your mother&#8217;s maiden name?  What high school did you attend?  As social networking and the semantic web become more prevalent, the answers to these questions become easier to find.  And what about that computer support forum you posed a question on?  Well, you had to setup an annoying username and password.  You also supplied your e-mail address.  Odds are, you used the same password for that account as you did your e-mail account.  You trust the people that setup that forum without even knowing them.  You also trusted their ability to secure the data you submitted.  What if somebody were to compromise their database?  They now have access to your e-mail and any other online services you use that utilize that same password.  Thanks for playing, come again&#8230;</p>
<p>It is a fact that this activity goes on every day.  In my own testing, I was able to find forum after forum, website after website that were setup by lazy administrators and were vulnerable to these same attacks.  Now you are talking about client lists, confidential contracts, business relationships, personal information, tax information, etc.  All of that is vulnerable to these attacks when you store your data online.  The web is not a nice place for the complacent.</p>
<h3>Your Data != Your Data</h3>
<p><a title="10 Immutable Laws of Security" href="http://technet.microsoft.com/en-us/library/cc722487.aspx" target="_blank">The 10 Immutable Laws of Security</a>.  While they tend to talk about your computer explicitly, they are really talking about the security of the data on your computer.  If you don&#8217;t care about the data on your computer, then they don&#8217;t apply.  But, if you are like most, you value the safety of the data on your computer.</p>
<p>When you talk about backups, you are talking about storing all your data in a different place and medium than &#8220;your computer&#8221;.  I still tell people and small business that a security deposit box is tested and trusted; use it!  I tell them this because it is a trusted storage place and has been so for decades, if not years.  Online storage is a new medium that has only recently reached mainstream.</p>
<p>To store all your data online, you must trust all the individuals that handle your data.  You trust the geek squad or your neighborhood geek to fix your computer.  You know where they work.  You know where they live.  Yet, people have no idea where their data goes when they use one of these online services beyond what is posted on a web page.  Is your data handled by foreign nationals?  Are the employees at the corporation happy?  (We&#8217;ve all heard of rogue admins.)  How well do you know all those that have access to your data?  When you let somebody into your home, whether as a friend or contractor, you analyze the situation and give them a certain level of trust.  Do you do the same when you select an online service to upload everything you have stored on your computer?</p>
<p>You should ask yourself all these questions before selecting any backup solution, online or offline.  Most online services will offer some level of encryption.  You need to know what that means and do your homework to ensure you data is transferred in a secure manner and stored in a secure fashion.  Again, this goes for both offline and online backups.</p>
<h3>Conclusions</h3>
<p>The technology is neat.  The fact that we now have enough bandwidth to copy the entirety of hard drives up to the cloud is not something to scoff at.  My biggest concern is that the vast majority of people do not realize the repercussions of storing their data in the cloud.  If you put serious thought into the decision to do this and you still feel confortable, then go for it.  I, for one, will continue to backup my data to a disk I can touch and hold with my own hands.  Now get off my lawn!</p>
]]></content:encoded>
			<wfw:commentRss>http://halfloaded.com/blog/backups-in-the-cloud-the-case-against-online-backups/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
