<?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>SteveMooradian.com &#187; Programming</title>
	<atom:link href="http://stevemooradian.com/category/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://stevemooradian.com</link>
	<description>The digital canvas of Steve Mooradian - faith, web design, electric guitar, coding, engineering, and expository excellence</description>
	<lastBuildDate>Fri, 10 Dec 2010 04:19:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>OpenGL First Person Shooter &#8211; A Time to Kill</title>
		<link>http://stevemooradian.com/programming/opengl-first-person-shooter</link>
		<comments>http://stevemooradian.com/programming/opengl-first-person-shooter#comments</comments>
		<pubDate>Thu, 06 May 2004 04:06:47 +0000</pubDate>
		<dc:creator>WarAxe</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://stevemooradian.com/wordpress/archives/37</guid>
		<description><![CDATA[I had a final project for a 3D programmnig class to enhance the game “A Time to Kill” (included with the text Beginning OpenGL Programming).  My project was to rewrite the game so that it compiled and ran independent of Microsoft DirectX, as well as code some in-game enhancements to demonstrate my knowledge of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://stevemooradian.com/wordpress/wp-content/images/programming/ATimetoKill_screenshot.jpg" title="A Time to Kill screenshot" rel="lightbox[this]"><img src="http://stevemooradian.com/wordpress/wp-content/images/programming/_ATimetoKill_screenshot.jpg" width="200" height="150" alt="A Time to Kill screenshot" title="A Time to Kill screenshot" class="floatleft ir" /></a>I had a final project for a 3D programmnig class to enhance the game “A Time to Kill” (included with the text <a href="http://www.amazon.com/Beginning-OpenGL-Game-Programming-Development/dp/1592003699">Beginning OpenGL Programming</a>).  My project was to rewrite the game so that it compiled and ran independent of <a href="http://www.microsoft.com/windows/directx/">Microsoft DirectX</a>, as well as code some in-game enhancements to demonstrate my knowledge of <a href="http://www.opengl.org/">OpenGL</a> programming.</p>
<blockquote><p>
The game “A Time to Kill” is a <strong>simple</strong> OpenGL <a href="http://en.wikipedia.org/wiki/First-person_shooter">first-person shooter</a> where you run around and kill enemies.  The enemies don’t fire back and run away when approached.  The object of the game is to kill all the enemies before the time runs out.  You are able to fire flame rockets and heavy missiles.  Flame rockets fly faster and straighter, but heavy missiles have a larger impact area.  The arrow keys move you around.  The mouse will allow you to look around and aim, and the mouse buttons will fire your weapons.
</p></blockquote>
<p>DirectX provided all the sound and inputs controls for the game using its DirectSound and DirectInput modules, respectively.  I replaced these as follows:</p>
<ul class="bullet_list">
<li>For game input I used Windows&#8217; built-in mouse and keyboard functionality.  I rewrote much of the keyboard and mouse code in the parent window class file.  It should be noted that I don’t think the controls are as robust as with DirectX, but this might have been different if I had tried using <a href="http://en.wikipedia.org/wiki/Simple_DirectMedia_Layer">SDL</a>’s input library.</li>
<li>For sound I used SDL’s sound library called SDL MIXER.  It provides a multi-channel sound engine I used to replicate all of the DirectSound functionality in the game.  I added new sounds for weapon launching and explosions.  In addition to sound effects, I added a looping “arcade-style” music file for some videogame ambiance.  I wrote a new class AudioSystem from scratch to provide all the SDL MIXER functionality the game needed, including an interface for in game objects to play their own sounds.</li>
</ul>
<div class="infoblock clearfix">
<p><strong>Languages:</strong> C++</p>
<p><strong>Coding tools:</strong> <a href="http://www.bloodshed.net/devcpp.html">Dev-C++</a></p>
<p><strong>Executable and source files:</strong> <a href="http://www.stevemooradian.com/res/programming/ATimetoKill-final_project.zip"><strong>ATimetoKill-final_project.zip</strong></a> 1.5 MB</p>
<p><strong>Required supporting installs:</strong><br />
<a href="http://gcc.gnu.org/">gcc compiler</a><br />
<a href="http://www.opengl.org/">OpenGL</a><br />
<a href="http://www.libsdl.org/">SDL</a><br />
<a href="http://www.libsdl.org/projects/SDL_mixer/">SDL Mixer</a>	</p>
<p><strong>Project overview letter:</strong> <a href="http://www.stevemooradian.com/res/programming/ATimetoKill_README.doc"><strong>ATimetoKill_README.doc</strong></a></p>
</div>
<p>NOTE:  This game is very rough and simplistic, but it was designed to demonstrate the fundamentals of OpenGL programming and DirectX and SDL software architectures.</p>
]]></content:encoded>
			<wfw:commentRss>http://stevemooradian.com/programming/opengl-first-person-shooter/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Instant Messaging Client</title>
		<link>http://stevemooradian.com/programming/java-instant-messaging-client</link>
		<comments>http://stevemooradian.com/programming/java-instant-messaging-client#comments</comments>
		<pubDate>Tue, 06 Apr 2004 04:09:47 +0000</pubDate>
		<dc:creator>WarAxe</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://stevemooradian.com/wordpress/archives/40</guid>
		<description><![CDATA[I coded a Java instant messaging client called AxeIM for a networking class.  This program will attempt to find a user&#8217;s &#8220;buddies&#8221; and establish a network connection to them for the purpose of sending instant messages.  This program is crude and simplistic, but demonstrated the fundamental concepts of network and socket programming.  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://stevemooradian.com/wordpress/wp-content/images/programming/axeim.gif" title="AxeIM Java Instant Messenger" rel="lightbox[this]"><img src="http://stevemooradian.com/wordpress/wp-content/images/programming/_axeim.gif" title="AxeIM Java Instant Messenger" alt="AxeIM Java Instant Messenger" width="180" height="200" class="floatleft ir" /></a>I coded a Java instant messaging client called AxeIM for a networking class.  This program will attempt to find a user&#8217;s &#8220;buddies&#8221; and establish a network connection to them for the purpose of sending instant messages.  This program is crude and simplistic, but demonstrated the fundamental concepts of network and socket programming.  Obvious enhancements would be easier administration of user settings and buddy-list maintenance (rather than storing buddy IP addresses in a configuration file).</p>
<div class="infoblock clearfix">
<p><strong>Languages:</strong> Java</p>
<p><strong>Coding tools:</strong> Notepad</p>
<p><strong>Application and source files:  <a href='http://www.stevemooradian.com/res/programming/AxeIM.zip'>AxeIM.zip</a></strong> 320 kB</p>
<p><strong>Required supporting installs:</strong><br />
<a href='http://java.sun.com/'>Java SDK</a></p>
<p><strong> Programmer Guide:  <a href='http://www.stevemooradian.com/res/programming/AxeIMProgrammerGuide.doc'>AxeIMProgrammerGuide.doc</a></strong>  31 kB</p>
<p><strong> User Guide:  <a href='http://www.stevemooradian.com/res/programming/AxeIMUserGuide.doc'>AxeIMUserGuide.doc</a></strong>  32 kB</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://stevemooradian.com/programming/java-instant-messaging-client/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP eCommerce &#8211; Advanced Battery Services</title>
		<link>http://stevemooradian.com/programming/advanced-battery-services-v1</link>
		<comments>http://stevemooradian.com/programming/advanced-battery-services-v1#comments</comments>
		<pubDate>Fri, 05 Mar 2004 03:32:55 +0000</pubDate>
		<dc:creator>WarAxe</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://stevemooradian.com/wordpress/archives/27</guid>
		<description><![CDATA[This was the first production website I designed for the company Advanced Battery Services.  They needed a fresh new look that would attract customers looking for a professional service provider.  It was also important that their product lines and vendor partnerships be clearly displayed.  All products and services were fully searchable and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://stevemooradian.com/wordpress/wp-content/images/web design/adbattservices.png" title="Advanced Battery Services v1" rel="lightbox[this]"><img src="http://stevemooradian.com/wordpress/wp-content/images/web design/_adbattservices.png" title="Advanced Battery Services v1" alt="Advanced Battery Services v1" width="200" height="135" class="floatleft ir" /></a>This was the first production website I designed for the company <a href="http://www.adbattservices.com">Advanced Battery Services</a>.  They needed a fresh new look that would attract customers looking for a professional service provider.  It was also important that their product lines and vendor partnerships be clearly displayed.  All products and services were fully searchable and could be administrated from an individual Access DB that provided the back-end.  </p>
<div class="infoblock clearfix">
<p><strong>Languages:</strong> ASP, Visual Basic, VBScript</p>
<p><strong>Coding tools:</strong> Notepad, MS Access</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://stevemooradian.com/programming/advanced-battery-services-v1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>J2ME MIDP &#8211; Weather Forecast Midlet</title>
		<link>http://stevemooradian.com/programming/j2me-midp-weather-forecast-midlet</link>
		<comments>http://stevemooradian.com/programming/j2me-midp-weather-forecast-midlet#comments</comments>
		<pubDate>Sat, 06 Dec 2003 04:07:40 +0000</pubDate>
		<dc:creator>WarAxe</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://stevemooradian.com/wordpress/archives/39</guid>
		<description><![CDATA[This J2ME project is called WeatherMIDlet, and allows a user to get the current weather conditions from their cellphone for any zip code in the US.  The user presets a list of desired zip code locations and their cellphone will display organized weather data for those locations.
I used Java&#8216;s small device application programming platform [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://stevemooradian.com/wordpress/wp-content/images/programming/MID_weather.jpg" rel="lightbox[this]" title="WeatherMIDlet"><img src="http://stevemooradian.com/wordpress/wp-content/images/programming/MID_weather.jpg" height="300" alt="WeatherMIDlet" title="WeatherMIDlet" class="floatright ir" /></a>This J2ME project is called WeatherMIDlet, and allows a user to get the current weather conditions from their cellphone for any zip code in the US.  The user presets a list of desired zip code locations and their cellphone will display organized weather data for those locations.</p>
<p>I used <a href="http://java.sun.com/">Java</a>&#8216;s small device application programming platform called <a href="http://java.sun.com/j2me">J2ME</a> (ME standing for Micro Edition).  The J2ME framework is specially made to be lightweight and platform neutral for cellphone and small device development.  These mobile apps are called midlets (as opposed to applets, servlets, and portlets), where MID comes from MIDP (Mobile Information Device Profile) which is the Java runtime environment for small devices.</p>
<p>WeatherMIDlet uses many standard objects and APIs.  To navigate menus I used a CommandListener object.  I used a ticker object for generating a scrolling banner that displays current temperatures for all stored zip codes.  All the weather data is stored in a RecordStore object, and the weather server is re-queried periodically in order to keep the RecordStore current.  I used a bean object to parse the string of raw uncategorized weather data from the weather service into its constituent parts.  These are then stored by the main midlet which will output concatenated strings such as, &#8220;High of 67 today with a low of 49.  Currently the skies are cloudy.”  The internet weather web service I chose to use was <a href="http://www.wunderground.com/">wunderground.com</a>.</p>
<div class="infoblock clearfix">
<p><strong>Languages:</strong> Java, XML</p>
<p><strong>Coding tools:</strong> Java Wireless Toolkit, Notepad, JCreator</p>
<p><strong>Source files:  <a href='http://www.stevemooradian.com/res/programming/WeatherMIDlet.zip'>WeatherMIDlet.zip</a></strong> 190 kB</p>
<p><strong>Required supporting installs:</strong><br />
<a href='http://java.sun.com/products/sjwtoolkit/'>Java Wireless Toolkit</a></p>
<p><strong> Final project report:  <a href='http://www.stevemooradian.com/res/programming/WeatherMIDlet.doc'>WeatherMIDlet.doc</a></strong> 240 kB</p>
</div>
<div class="clearfix">
<p><strong>Additional screenshots:</strong><br />
<a href="http://stevemooradian.com/wordpress/wp-content/images/programming/MID_remove.jpg" rel="lightbox[this]" title="WeatherMIDlet screen2"><img src="http://stevemooradian.com/wordpress/wp-content/images/programming/_MID_remove.jpg" width="57" height="100" alt="WeatherMIDlet screen2" title="WeatherMIDlet screen2" class="floatleft ir_sm"  /></a><a href="http://stevemooradian.com/wordpress/wp-content/images/programming/MID_refresh.jpg" rel="lightbox[this]" title="WeatherMIDlet screen3"><img src="http://stevemooradian.com/wordpress/wp-content/images/programming/_MID_refresh.jpg" width="64" height="100" alt="WeatherMIDlet screen3" title="WeatherMIDlet screen3" class="floatleft ir_sm"  /></a><a href="http://stevemooradian.com/wordpress/wp-content/images/programming/MID_mainmenu.jpg" rel="lightbox[this]" title="WeatherMIDlet screen4"><img src="http://stevemooradian.com/wordpress/wp-content/images/programming/_MID_mainmenu.jpg" width="58" height="100" alt="WeatherMIDlet screen4" title="WeatherMIDlet screen4" class="floatleft ir_sm"  /></a><a href="http://stevemooradian.com/wordpress/wp-content/images/programming/MID_choose.jpg" rel="lightbox[this]" title="WeatherMIDlet screen5"><img src="http://stevemooradian.com/wordpress/wp-content/images/programming/_MID_choose.jpg" width="56" height="100" alt="WeatherMIDlet screen5" title="WeatherMIDlet screen5" class="floatleft ir_sm" /></a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://stevemooradian.com/programming/j2me-midp-weather-forecast-midlet/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>J2EE eCommerce Web App</title>
		<link>http://stevemooradian.com/programming/j2ee-e-commerce-web-app</link>
		<comments>http://stevemooradian.com/programming/j2ee-e-commerce-web-app#comments</comments>
		<pubDate>Tue, 05 Aug 2003 03:37:54 +0000</pubDate>
		<dc:creator>WarAxe</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://stevemooradian.com/wordpress/archives/34</guid>
		<description><![CDATA[Before I designed a production website for Advanced Battery Services I did a J2EE (Java 2 Enterprise Edition) prototype of their site.  J2EE is an enterprise framework from Sun as the key business element of their Java language technology.  
This prototype is an e-commerce web store application with a working shopping cart that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://stevemooradian.com/wordpress/wp-content/images/programming/HomeScreen.GIF" title="ABS home screen" rel="lightbox[this]"><img src="http://stevemooradian.com/wordpress/wp-content/images/programming/_HomeScreen.GIF" width="200" height="132" alt="ABS home screen" title="ABS home screen"  class="floatleft ir" /></a>Before I designed a production website for <a href='http://www.adbattservices.com'>Advanced Battery Services</a> I did a <a href='http://java.sun.com/javaee/index.jsp'>J2EE (Java 2 Enterprise Edition)</a> prototype of their site.  J2EE is an enterprise framework from <a href='http://www.sun.com'>Sun</a> as the key business element of their <a href='http://www.java.com/en/'>Java</a> language technology.  </p>
<p>This prototype is an e-commerce web store application with a working shopping cart that uses an <a href='http://en.wikipedia.org/wiki/Model_view_controller'>MVC (model-view-controller) methodology</a>.  The front-end is coded in <a href='http://java.sun.com/products/jsp/'>Java Server Pages (JSP)</a> and runs in the <a href='http://tomcat.apache.org/'>TomCat</a> web container.  The back-end database is <a href='http://www.mysql.com'>MySQL</a> for all transactions and storage. </p>
<p>Future enhancements would have been user management features and more robust administration screens.</p>
<div class="infoblock clearfix">
<p><strong>Languages:</strong> Java, JSP, XML</p>
<p><strong>Coding tools:</strong> Notepad</p>
<p><strong>Source files:  <a href='http://www.stevemooradian.com/res/programming/ABS.zip'>abs.zip</a></strong> 513 kB</p>
<p><strong>Required supporting installs:</strong><br />
<a href='http://www.mysql.com/'>MySQL (server &#038; JDBC connector)</a><br />
<a href='http://tomcat.apache.org/'>Apache TomCat Server</a><br />
<a href='http://java.sun.com/'>Java SDK (with servlet and JSP support)</a></p>
<p><strong> Final project report:  <a href='http://www.stevemooradian.com/res/programming/ABSFinalReport.doc'>ABS Final Report.doc</a></strong> 2.1 MB</p>
</div>
<div class="clearfix">
<p><strong>Additional screenshots:</strong><br />
<a href="http://stevemooradian.com/wordpress/wp-content/images/programming/ABSadminscreen.gif" rel="lightbox[this]" title="ABS admin screen"><img src="http://stevemooradian.com/wordpress/wp-content/images/programming/_ABSadminscreen.gif" width="100" height="66" alt="ABS admin screen" title="ABS admin screen" class="floatleft ir_sm" /></a><a href="http://stevemooradian.com/wordpress/wp-content/images/programming/ABSSearchScreen.gif" rel="lightbox[this]" title="ABS search screen"><img src="http://stevemooradian.com/wordpress/wp-content/images/programming/_ABSSearchScreen.gif" width="100" height="66" alt="ABS search screen" title="ABS search screen" class="floatleft ir_sm" /></a><a href="http://stevemooradian.com/wordpress/wp-content/images/programming/ABSShoppingCartScreen.gif" rel="lightbox[this]" title="ABS shopping cart"><img src="http://stevemooradian.com/wordpress/wp-content/images/programming/_ABSShoppingCartScreen.gif" width="100" height="66" alt="ABS shopping cart" title="ABS shopping cart" class="floatleft ir_sm" /></a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://stevemooradian.com/programming/j2ee-e-commerce-web-app/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RDBMS Programming &#8211; Kitchen Planner</title>
		<link>http://stevemooradian.com/programming/rdbms-programming-kitchen-planner</link>
		<comments>http://stevemooradian.com/programming/rdbms-programming-kitchen-planner#comments</comments>
		<pubDate>Sat, 06 Jul 2002 04:07:10 +0000</pubDate>
		<dc:creator>WarAxe</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://stevemooradian.com/wordpress/archives/38</guid>
		<description><![CDATA[This RDBMS project is called Kitchen Planner, and was designed to demonstrate database theory knowledge as well as practical application of database programming concepts.  I did this in Access because it was the easiest way to encapsulate code and a DB table structure into a readily observable format for educational purposes.
Kitchen Planner allows someone [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://stevemooradian.com/wordpress/wp-content/images/programming/KP-main.jpg" title="Kitchen Planner DB application" rel="lightbox[this]"><img src="http://stevemooradian.com/wordpress/wp-content/images/programming/_KP-main.jpg" width="160" height="109" alt="Kitchen Planner DB application" title="Kitchen Planner DB application" class="floatleft ir" /></a>This <a href="http://en.wikipedia.org/wiki/Relational_database_management_system">RDBMS</a> project is called Kitchen Planner, and was designed to demonstrate database theory knowledge as well as practical application of database programming concepts.  I did this in <a href="http://www.microsoft.com/Office/Access/">Access</a> because it was the easiest way to encapsulate code and a DB table structure into a readily observable format for educational purposes.</p>
<p>Kitchen Planner allows someone to organize recipes, plan meals, and automate shopping lists.  Based on who&#8217;s scheduled to be at a meal (and any dietary needs or culinary eccentricities these people have) appropariate stored recipes are chosen.   Once recipes are selected, an automatic shopping list is generated from the required ingredients.</p>
<p>If I were coding this application for an actual commercial product there&#8217;d be several obvious features to streamline the workflow.  But, this may be useful as it is to someone.  I used Access from <a href="http://office.microsoft.com/">Microsoft Office Professional</a> to create the database application file&#8230; and I made the source file available in the mdb file format.</p>
<div class="infoblock clearfix">
<p><strong>Languages:</strong> Visual Basic</p>
<p><strong>Coding tools:</strong> MS Access</p>
<p><strong>Application file:  <a href='http://www.stevemooradian.com/res/programming/Kitchen Planner.zip'>Kitchen Planner.mdb</a></strong> 1.52 MB</p>
<p><strong>Application database schema SQL:  <a href='http://www.stevemooradian.com/res/programming/KP-FinalProject.txt'>Final Project SQL file</a></strong></p>
<p><strong>Required supporting installs:</strong><br />
<a href='http://www.microsoft.com/Office/Access/'>Microsoft Access</a></p>
<p><strong> Final project report:  <a href='http://www.stevemooradian.com/res/programming/KP-FinalProject.zip'>KP-FinalProject.doc</a></strong></p>
</div>
<div class="clearfix">
<p><strong>Additional screenshots:</strong><br />
<a href="http://stevemooradian.com/wordpress/wp-content/images/programming/KP-recipe.gif" rel="lightbox[this]" title="Kitchen Planner - Recipes"><img src="http://stevemooradian.com/wordpress/wp-content/images/programming/_KP-recipe.gif" width="120" height="61" alt="Kitchen Planner - Recipes" title="Kitchen Planner - Recipes" class="floatleft ir_sm" /></a><a href="http://stevemooradian.com/wordpress/wp-content/images/programming/KP-restaurant.gif" rel="lightbox[this]" title="Kitchen Planner - Restaurants"><img src="http://stevemooradian.com/wordpress/wp-content/images/programming/_KP-restaurant.gif" width="120" height="66" alt="Kitchen Planner - Restaurants" title="Kitchen Planner - Restaurants" class="floatleft ir_sm" /></a><a href="http://stevemooradian.com/wordpress/wp-content/images/programming/KP-meal.gif" rel="lightbox[this]" title="Kitchen Planner - Meals"><img src="http://stevemooradian.com/wordpress/wp-content/images/programming/_KP-meal.gif" width="120" height="58" alt="Kitchen Planner - Meals" title="Kitchen Planner - Meals" class="floatleft ir_sm" /></a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://stevemooradian.com/programming/rdbms-programming-kitchen-planner/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NetCentral User Keycode Crack</title>
		<link>http://stevemooradian.com/programming/netcentral-user-keycode-crack</link>
		<comments>http://stevemooradian.com/programming/netcentral-user-keycode-crack#comments</comments>
		<pubDate>Sat, 05 Sep 1998 03:38:16 +0000</pubDate>
		<dc:creator>WarAxe</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://stevemooradian.com/archives/35</guid>
		<description><![CDATA[NetCentral was a popular web chatroom circa late nineties.  It was one of the first popular web chatrooms, but was eventually closed in 1999.
While using NetCentral I had noticed that it passed my encrypted authentication token value in my URL to validate my handle per HTTP request.  This authentication method was an extremely [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://stevemooradian.com/wordpress/wp-content/images/programming/netcentral.gif" title="NetCentral.com logo" rel="lightbox[this]"><img src="http://stevemooradian.com/wordpress/wp-content/images/programming/netcentral.gif" title="NetCentral.com logo" alt="NetCentral.com logo" width="115" height="62" class="floatleft ir_sm" /></a>NetCentral was a popular web chatroom circa late nineties.  It was one of the first popular web chatrooms, but was eventually closed in 1999.</p>
<p>While using NetCentral I had noticed that it passed my encrypted authentication token value in my URL to validate my handle per HTTP request.  This authentication method was an extremely bad idea for security, but back then bad ideas were common.</p>
<p>Once, someone &#8220;hijacked&#8221; my handle when I unknowingly clicked a link that sent them my full URL (with my authentication value).  Not knowing their technique was a simple and mindless URL hijack, I wrongly thought that they had somehow broken NetCentral&#8217;s handle encryption mathematically.  This made me see the encryption as breakable, and it sent me on a mission to break this encryption myself mathematically.</p>
<p>And I did it.  </p>
<pre class="brush: cpp">
/* Program to calculate the user id code for the NetCentral
 *    chatrooms based on the actual user&#039;s handle.
 *        - Steve &quot;WarAxe&quot; Mooradian - 9/20/98
 */

#include&lt;iostream.h&gt;
#include&lt;string.h&gt;

void main(void)
{
	char handle[20];
	int id, handle_length;

	cout &lt;&lt; &quot;Input handle:&quot;;
	cin &gt;&gt; handle;

	handle_length = strlen(handle);

	for(int i=0;i&lt;handle_length;i++)
	{
		if(handle[i]&gt;=97)
			handle[i] -= 32;
		id += handle[i] * 33 * (i+1);
	}
	cout &lt;&lt; &quot;ID number is &quot; &lt;&lt; id &lt;&lt; &quot;\n&quot;;
}
</pre>
<p>I wrote the little routine above to calculate the authentication token for any chat handle desired&#8230; even ones that weren&#8217;t registered with the website!  The authentication token is calculated by multiplying the first handle character&#8217;s uppercase ASCII value by 33, the next character by 66, and so on, and then summing the values.  For example, a handle of &#8220;Axe&#8221; would have a token value calculated as follows: (A=65)*33 + (X=88)*66 + (E=69)*99.</p>
<div class="infoblock clearfix">
<p><strong>Languages:</strong> C++</p>
<p><strong>Coding tools:</strong> Notepad</p>
<p><strong>Required supporting installs:</strong><br />
<a href="http://gcc.gnu.org/">gcc compiler</a></p>
</div>
<p>BTW, after breaking their encryption I informed NetCentral, but they were already going to shut down the chatroom soon so they didn&#8217;t really care.</p>
]]></content:encoded>
			<wfw:commentRss>http://stevemooradian.com/programming/netcentral-user-keycode-crack/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

