<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Garrett Serack: Open Source Development at Microsoft : hacking</title><link>http://blogs.msdn.com/garretts/archive/tags/hacking/default.aspx</link><description>Tags: hacking</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>VBScript: Betcha never thought of this one</title><link>http://blogs.msdn.com/garretts/archive/2008/01/16/vbscript-betcha-never-thought-of-this-one.aspx</link><pubDate>Thu, 17 Jan 2008 00:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7134805</guid><dc:creator>GarrettS</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/garretts/comments/7134805.aspx</comments><wfw:commentRss>http://blogs.msdn.com/garretts/commentrss.aspx?PostID=7134805</wfw:commentRss><description>&lt;P&gt;I mentioned in a previous post that I had to solve a little issue with the wonderful &lt;A href="http://www.citizeninsomniac.com/WMV/#WMCmd" mce_href="http://www.citizeninsomniac.com/WMV/#WMCmd"&gt;WMCMD.VBS&lt;/A&gt; script that Alex Zambelli maintains.&amp;nbsp; Because of some occasional nastyness, when the script is done--successful or not-- it tries to kill it's own process, in case any of the WM Encoder objects gets hung up.&lt;/P&gt;
&lt;P&gt;The original script uses WMI to look on the machine for the cscript process for the currently running script:&lt;/P&gt;
&lt;TABLE class="" style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: 'Consolas'" cellSpacing=0 cellPadding=2 width="100%" bgColor=#ffffff border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width="100%"&gt;&lt;FONT color=#000000 size=2&gt;&lt;SPAN style="COLOR: #00007f"&gt;function&lt;/SPAN&gt; TerminateEncoderProcess&lt;SPAN style="COLOR: #000000"&gt;()&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;dim&lt;/SPAN&gt; objWMIService &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;dim&lt;/SPAN&gt; objProcess &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;On&lt;/SPAN&gt; &lt;SPAN style="COLOR: #00007f"&gt;Error&lt;/SPAN&gt; &lt;SPAN style="COLOR: #00007f"&gt;Resume&lt;/SPAN&gt; &lt;SPAN style="COLOR: #00007f"&gt;Next&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-SIZE: 9pt; COLOR: #007f00; FONT-FAMILY: 'Consolas'"&gt;' Get Windows Manager object&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;Set&lt;/SPAN&gt; objWMIService &lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt; GetObject&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #7f007f"&gt;"winmgmts:"&lt;/SPAN&gt; _ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #7f007f"&gt;"{impersonationLevel=impersonate}!\\.\root\cimv2"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-SIZE: 9pt; COLOR: #007f00; FONT-FAMILY: 'Consolas'"&gt;' Enumerate all CScript.exe processes&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;dim&lt;/SPAN&gt; colProcessList &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;Set&lt;/SPAN&gt; colProcessList &lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt; objWMIService.ExecQuery &lt;FONT color=#000000 size=2&gt;_&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #7f007f"&gt;"Select * from Win32_Process Where Name =" _&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#000000 size=2&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;/FONT&gt; "'cscript.exe'"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;dim&lt;/SPAN&gt; strArguments &lt;BR&gt;&amp;nbsp;&amp;nbsp; strArguments &lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR: #7f007f"&gt;""&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-SIZE: 9pt; COLOR: #007f00; FONT-FAMILY: 'Consolas'"&gt;' Enumerate all command-line arguments&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;for&lt;/SPAN&gt; i &lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR: #007f7f"&gt;0&lt;/SPAN&gt; &lt;SPAN style="COLOR: #00007f"&gt;to&lt;/SPAN&gt; wscript.arguments.Length&lt;SPAN style="COLOR: #000000"&gt;-&lt;/SPAN&gt;&lt;SPAN style="COLOR: #007f7f"&gt;1&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strArguments &lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt; strArguments &lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #7f007f"&gt;" "&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;amp; _ &lt;BR&gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wscript.arguments&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;i&lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;next&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; strArguments &lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt; Replace&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;strArguments&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt; Chr&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #007f7f"&gt;34&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;),&lt;/SPAN&gt; &lt;SPAN style="COLOR: #7f007f"&gt;""&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-SIZE: 9pt; COLOR: #007f00; FONT-FAMILY: 'Consolas'"&gt;' Kill the processes that match this one in name and arguments&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;For&lt;/SPAN&gt; &lt;SPAN style="COLOR: #00007f"&gt;Each&lt;/SPAN&gt; objProcess &lt;SPAN style="COLOR: #00007f"&gt;in&lt;/SPAN&gt; colProcessList &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;if&lt;/SPAN&gt; InStr&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #007f7f"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt; Replace&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;objProcess.CommandLine&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt; _ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chr&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #007f7f"&gt;34&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;),&lt;/SPAN&gt; &lt;SPAN style="COLOR: #7f007f"&gt;""&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;),&lt;/SPAN&gt; &lt;FONT color=#000000 size=2&gt;_ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;Trim&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;WScript.ScriptName &lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt; strArguments&lt;SPAN style="COLOR: #000000"&gt;),&lt;/SPAN&gt; &lt;SPAN style="COLOR: #007f7f"&gt;1&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #007f7f"&gt;0&lt;/SPAN&gt; _ &lt;BR&gt;&lt;SPAN style="COLOR: #00007f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objProcess.Terminate&lt;SPAN style="COLOR: #000000"&gt;()&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;end&lt;/SPAN&gt; &lt;SPAN style="COLOR: #00007f"&gt;if&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;Next&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="FONT-SIZE: 9pt; COLOR: #007f00; FONT-FAMILY: 'Consolas'"&gt;' What? Still not terminated? OK, kill first occurrence.&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;For&lt;/SPAN&gt; &lt;SPAN style="COLOR: #00007f"&gt;Each&lt;/SPAN&gt; objProcess &lt;SPAN style="COLOR: #00007f"&gt;in&lt;/SPAN&gt; colProcessList &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;if&lt;/SPAN&gt; InStr&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #007f7f"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt; objProcess.CommandLine&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt; _ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.ScriptName&lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #007f7f"&gt;0&lt;/SPAN&gt; &lt;SPAN style="COLOR: #00007f"&gt;then&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objProcess.Terminate&lt;SPAN style="COLOR: #000000"&gt;()&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;end&lt;/SPAN&gt; &lt;SPAN style="COLOR: #00007f"&gt;if&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #00007f"&gt;Next&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: #00007f"&gt;end&lt;/SPAN&gt; &lt;SPAN style="COLOR: #00007f"&gt;function&lt;/SPAN&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Unfortunatly, this script, when all else fails, tries to kill itself by finding the first running cscript, and killing it. Hmmm. not too good, I had multiple encoder script processes going on, and it kept killing the wrong one.&lt;/P&gt;
&lt;P&gt;A pity it seems so hard to find the current process in VBScript... until I thought about it a bit more:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE class="" style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: 'Consolas'" cellSpacing=0 cellPadding=2 width="100%" bgColor=#ffffff border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width="100%"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: 'Consolas'"&gt;&lt;SPAN style="COLOR: #00007f"&gt;function&lt;/SPAN&gt; TerminateEncoderProcess&lt;SPAN style="COLOR: #000000"&gt;()&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; GetObject&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #7f007f"&gt;"winmgmts:root\cimv2:Win32_Process.Handle='"&lt;/SPAN&gt; _&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt; GetObject&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #7f007f"&gt;"winmgmts:root\cimv2:Win32_Process.Handle='"&lt;/SPAN&gt; _ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp; CreateObject&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt; &lt;SPAN style="COLOR: #7f007f"&gt;"WScript.Shell"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;).&lt;/SPAN&gt;Exec&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #7f007f"&gt;"cmd.exe"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;).&lt;/SPAN&gt;ProcessId _&amp;nbsp; &lt;BR&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #7f007f"&gt;"'"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;).&lt;/SPAN&gt;ParentProcessId &lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #7f007f"&gt;"'"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;).&lt;/SPAN&gt;Terminate &lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: #00007f"&gt;end&lt;/SPAN&gt; &lt;SPAN style="COLOR: #00007f"&gt;function&lt;/SPAN&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;STRONG&gt;Huh?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This version of the script spawns off a new &lt;FONT face=Consolas&gt;cmd.exe&lt;/FONT&gt; process (which exits nearly instantly), but uses the process ID from that, looks up the process, and get it's parent process, and then terminate that.&amp;nbsp; Nice thing is, it don't get confused :D&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7134805" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/garretts/archive/tags/scripting/default.aspx">scripting</category><category domain="http://blogs.msdn.com/garretts/archive/tags/fear+the+cowboy/default.aspx">fear the cowboy</category><category domain="http://blogs.msdn.com/garretts/archive/tags/hacking/default.aspx">hacking</category></item><item><title>I hacked RSA!</title><link>http://blogs.msdn.com/garretts/archive/2007/02/06/i-hacked-rsa.aspx</link><pubDate>Tue, 06 Feb 2007 21:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1612969</guid><dc:creator>GarrettS</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/garretts/comments/1612969.aspx</comments><wfw:commentRss>http://blogs.msdn.com/garretts/commentrss.aspx?PostID=1612969</wfw:commentRss><description>&lt;P&gt;I successfully hacked RSA, check out the details on my blog: &lt;A href="http://www.fearthecowboy.com/2007/02/i-hacked-rsa.html"&gt;http://www.fearthecowboy.com/2007/02/i-hacked-rsa.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE class="" style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in" vAlign=center width=55&gt;
&lt;P style="TEXT-ALIGN: center" align=center valign="middle"&gt;&lt;SPAN style="FONT-SIZE: 60pt; FONT-FAMILY: elephant"&gt;g&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center" align=center valign="middle"&gt;&lt;SPAN style="FONT-SIZE: 60pt; FONT-FAMILY: elephant"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in" vAlign=center&gt;
&lt;P style="FONT-SIZE: 8pt; COLOR: #999999; FONT-FAMILY: arial"&gt;&lt;BR&gt;Garrett Serack&amp;nbsp;|&amp;nbsp;Program Manager&amp;nbsp;|Federated Identity Team | Microsoft Corporation&lt;BR&gt;blog:&lt;A href="http://blogs.msdn.com/garretts"&gt;&lt;FONT color=#009933&gt;http://blogs.msdn.com/garretts&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1612969" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/garretts/archive/tags/CardSpace/default.aspx">CardSpace</category><category domain="http://blogs.msdn.com/garretts/archive/tags/fear+the+cowboy/default.aspx">fear the cowboy</category><category domain="http://blogs.msdn.com/garretts/archive/tags/hacking/default.aspx">hacking</category></item></channel></rss>