Keyz Logo Photoshopped Korolla
Home The Inner Keyz Keyz Korolla Photo Gallery Code Stash Photoshop
> Google
> Yahoo
> Lycos
> Metacrawler
> Cebridge
> Yahoo!
> Fairmont State
> AOL
> GMail
> Ebay
> Amazon
> TigerDirect
> Crucial
> PriceWatch
> Netflix
> Gamefly
> Gamerang
> IsoHunt
> c|net Download
> WareBiz
> W3Schools
> GameFAQs
> GameSpot
> Penny Arcade
> RPG World
> Ebaums World
> Nuklear Power
> College Humor
> Monster
> Hot Jobs
> CareerBuilder
> TopUSAJobs
> Craigslist
> 9th Gen Corolla
> Car Domain
Right Corner
C++ C# Flash Java

C++

Artificial Intelligence Project


The Problem

Using 4 different search algorithms, find the shortest path from Arad to Bucharest (cities in Romania).

As you can see from Figure 1, there are multiple routes one could take.

Map of Romania
Figure 1: A map of Romania


The Data Structures

Each city is represented by a node which is detailed in Figure 2. A Linked List is then used to join all the nodes together. Each node contains information vital to the search algorithm.

struct node
{
    // total cost acrued up to this point
    int totCost;
    // the depth of the search up to this point
    int depth;
    // the neighbor city with the shortest distance
    int lowerNeighbor;
    // previous node (travelled from node)
    node* back;
    // cities bordering the node and their respective distance
    node* border1;
    int border1dist;
    node* border2;
    int border2dist;
    node* border3;
    int border3dist;
    node* border4;
    int border4dist;
    // determines whether or not the city has already been visited
    bool visited;
    // the name of the city (current node)
    char city;
};

Figure 2: Details of the nodes


The Search Algorithms (with screenshots)

Breadth-First Search: Selects the shallowest unexpanded node in the search tree for expansion.

Breadth-first Solution
Figure 3: Running the breadth-first search


Depth-First Search: Selects the deepest unexpanded node in the search tree for expansion

Depth-first Solution
Figure 4: Running the depth-first search


Iterative Deepening Search: Calls a depth-first search with a fixed limit on the depth, the limit keeps increasing until a goal is found

Iterative Deepening Solution
Figure 5: Running the iterative-deepening search


Uniform-Cost Search: Similar to the breadth-first search but expands the node with the lowest path cost.

Uniform-cost Solution
Figure 6: Running the uniform-cost search


C#

A.W.A.R.E.


The Project

     AWARE, aka A Windows Attack intRusion Emulator, is a project I worked on over the summer of 2004. I worked with a team of three other students, Michael Ware, Travis Woods, and David Knight and under the supervision of Professor Don Tobin.

     The purpose of the project is to train the modern computer user how to detect suspicious activity on their computer using the tools provided by Microsoft. A potential use of AWARE would be training employees at a company how to fix their own computer without resorting to bringing in outside help.

Some Background Info

     The project was based on an idea Professor Tobin had been thinking up for a while. He supervised another team during the Spring semester of 2004 which I was also on. Our job in this team was to investigate the footprints left behind by several different viruses. We collected data on many specific viruses and used this information to determine where to look for suspicious activity on a Windows XP machine.

The Design

     After much deliberating we all decided to do the project in C# and the database of attacks would be stored in an XML file. Only one member of the team had ever worked with C# before and none of us had experience with XML. Yet, in one month we had a working prototype up and running.

     We stuck very close to the original design of the project. The attack footprint would be entered into a Data Entry Form and then saved to the XML file. Once the XML file is populated with attacks, the simulation can be activated. Upon entering the simulation, the user would need to make use of all the tools available to locate and remove all traces of the attack. Once completed the user would shutdown the simulation and be evaluated on his/her performance.

AWARE In Action

     At startup, the user can decide whether to enter more attacks into the database, run the simulation, or view a tutorial on the tools used in the simulation. When the user decides to run the simulation, there are two options, a specific attack can be generated or a random one may be selected. Once an attack is generated the simulation starts up and the footprint is injected into the simulation. From here the user must use the tools such as Task Manager, Windows Explorer, Services.msc, Registry Editor, Netstat, and others to locate all traces of the attack and eliminate them. Upon completion the user will shutdown the simulation and be immediately taken to an evaluation screen which tells the user which modifications were recognized, which were missed, and which were made that had nothing to do with the attack.

The Inner-Workings of AWARE

     XML files were used to store not just the database of attacks, but also a backup of the registry, file system, services, port information, processes, and a few others. The information stored in these XML files are what we use in the simulation to protect the user from inadvertently making changes to the information on the computer running the simulation. Upon startup, all the information is loaded into memory and the user can then remove whatever he/she chooses without making changes to either the system's information or the information stored in the XML files.

     When the user generates an attack, the attack footprint information is pulled from the XML file and placed into one object which goes to the simulation and is dispersed into the necessary locations. The footprint elements are then "hidden" within the simulation and the user must remove said elements. As these elements (and even those having nothing to do with the attack) are removed, a note is made in yet another XML file entitled UserCleanup. Once the user shuts down the simulator, all the changes the user made are restored from this XML file and displayed to the user as well as the changes the user didn't yet should have made.



Flash

First Experience in Flash 5


Flash has always intrigued me in that, thanks to ActionScript, it can be a powerful tool for game programming! I bought a book on Flash called Macromedia FLASH 5: Training from the Source. Using this book, I created my first flash program which can be seen here.

The pictures, music, and sounds, were all supplied by the software which accompanied the book.


Java

Java Cryptogram Applet


Cryptogram: A piece of writing in code or cipher. Also called cryptograph.

I wrote this java applet for my Cryptography class. We were challenged to come up with the solution to this cipher as homework. Due to time constraints, I hadn't the opportunity to sit and think about this. So, I wrote an applet to post on my website and "challenged" various friends to see if they could break it. Eventually someone did and I added in the "Hints" button to help out the others who hadn't figured it out yet.

To use my applet, simply type a letter in the blank box below the corresponding "key" and press the "Decode" button to place your letter in for each occurence of the "key" you chose. The clear button will start you over again while the hint button will fill in a letter for you. If you keep pressing the hint button it will eventually solve the cryptogram so use it sparingly.

The message is in english, even though it may not seem to be at first.

These are the hints that my fellow classmates and I received upon embarking on this puzzle:

    1) "E" is the most common letter in the english language.
    2) "The" is the most common word.

Click Here to try this out for yourself!

Good Luck!... You'll need it..



Valid XHTML 1.0!

Valid CSS!


Most everything you see on this site has been created by myself using Textpad or Photoshop.
I got the code for the weather channel tool from Weather.com and I made the flash gallery tool with Adobe Photoshop CS2.
If you are curious about how something was done on this site then send me an email and I'll be happy to explain.