Misc Projects

This list isn't exhaustive and is mostly for posterity.
Towards Automated Diagnosis of Misconfigured Program A first attempt at determining the cause of program faults using precise methods.

Holes in Heuristic Phishnets Carefully examines when heuristics work and the mistakes made when attempting to automatically classify phish.

Lightweight, Content-based Taint Propagation for Tracking Sensitive Information A system designed for tracking sensitive information as it is written to the persistent state of a user's machine. paper.


Using Rootkit Technology for Honeypot-Based Malware Detection This project utilized system call subversion in Windows to create a whitehat rootkit for observing the behavior of malware in a stealthy manner.

Ruby Picasa Image Grabber I got tired of manually adding new albums to my pictures section so I while learning ruby I decided to write this script to automatically scrub my RSS feed for albums.


Ruby Longest Common Subsequence Simple implementation of the longest common subsequence algorithm.


Easy Textbox Link WordPress Plugin This small WordPress plugin inserts a text box at the end of every post containing the title of the post and a permanent link to the entry. When a user mouses over the text box or clicks the text box the contents are highlighted in their entirety; this makes copying and pasting to a web page, blog or instant message incredibly easy. Adding this functionality encourages bloggers of all levels to link to your posts and as a result will increase overall search engine rankings as more and more people link to your blog.


Undergraduate Projects

AmdaZulo Mark Murphy, Tom Hughes and I wrote a 5-way superscalar processor for our Computer Organization and Design class. We did this in one semester and it truly showed what three people can do when they want to sack every moment of free time to do something exceptionally awesome. We implemented a superscalar processor for the LC3b language. It has 2 ALU pipelines, 2 memory pipelines, and a control unit pipeline (well not the same as the others... but still). This thing is incredible, we implemented 32 physical registers and used a Register Alias Table to map them to the 8 Architectural, and we have a tournament branch predictor, an out of order memory queue, we fetch four instructions at a time, and we do out of order commit.and a whole lot more. This project is the fruition of 1000+ hours of work between the three of us and we are all very proud. Click on the left to read a paper about all the features.
Oh yeah, the name of our processor combines Tomasulo's Algorithm and Ahmdal's Law.

VHDL BlackJack I wrote This for Digital Systems Lab class. This is a BlackJack VHDL program that uses a Spartan 3E FPGA. The code interfaces with VGA and the keyboard. It is not very clean, but it works very well (I think :-D). If I could do this over again, I would break my state machine inter a smaller more managable number of states as well as implement a VGA frame buffer. Otherwise, I think this is a very cool piece of code. There is something beautiful about about hardware design, and if it were not for VHDL's process sensitivity lists, I would say VHDL would be the solution for all hardware design.

ųNIX Operating System
(pronounced mu-nix)
This lightweight linux-like OS written from scratch was developed by me, Kevin Bassett, Luke Lempart and Mark Larwill in our ECE398SSL (taught by Steve Lumetta). The code was little sloppy, but it worked! Give us a break, we had less than one month to write it and it was a ton of fun!

UIUCMap This project creates customizable maps of all the buildings on the University of Illinois campus. I originally created this project as an incoming freshman because the campus looked so intimidating. little did I know, that it would be incredibly simple to navigate the university after being there a few days. So this is fairly worthless.
arwin arwin stands for windows address resolver. type a dynamic link library name and a function name and arwin retrieves the address from memory. very useful when shellcoding hard addresses.

Mjolinir Keylogger that logs into an IRC server and awaits commands.
Footsteps Award winning Engineering Open House project that utilized RFIDs to track individuals' physical locations.

C2o Award winning Engineering Open House project that analyzed the effectiveness of random number generators used in the computing world.

KittySteg! Award winning Engineering Open House project that encoded binary/ascii data into images using stegonographic concepts. Kitties were the images of choice.

odfhex odfhex takes an `objdump -d somebinary > somebinaryout` and converts it to c hex code. useful for shellcoding.

Random and/or Old Projects

ASP Image Preloader This simple program just generates some ASP code that pre-loads all images in a specified directory of one's website.

Mirage This project creates an sizeable square on the desktop that can cover desktop icons. a simple utility for security through obscurity.

DateCrack A simple program that spawned copies of itself into a programs directory. With minimal configuration the target program will be tricked into thinking the user is still within a trial period.


Internet Image Navigator This utility scoured a target website for images then sequentially downloaded the specific pictures. Pretty much only good for pr0n.


AuctionWizard A program that worked with online auction sites to generate HTML for personal auctions. Development was stopped and destroyed after I received a cease and desist claiming that I caused a company financial loss. That is a bit strange to say the least, I wrote the program when I was 13 and 3 years later they register a trademark and claim I was infringing upon them? you decide.


Talks and Presentations

Defcon 15 Summary


Quick summary of the talks attended at defcon this year.
Format String Exploits


A basic explanation of format string exploits with examples of writing arbitrary memory locations. A compilation and reworking of many books and guides on the internet. As always, Hacking: The Art of Exploitation by Jon Erickson is an excellent reference.
Ettercap and ARP Poisoning


A basic talk explaining arp poisoning and the basics of Ettercap.
Exploring the Behavior of Flash Worms on a Large Topology

UIUC Students and Faculty

This presentation was the result of my undergraduate thesis work on flash worms. A copy of my thesis will be posted eventually, but for the time being, check out this slideshow. You may find it fascinating how fast your computer can be infected... or you may be terrified.

Windows and Linux Shellcoding


this presentation outlines basic methods of shellcoding in the windows and linux environments. included are all the sample assembly language files as well as two utilities to help when shellcoding: arwin and odfhex.

Steganography - Security through Obscurity

ece110 class

this paper outlines a brief introduction to steganography as well as discusses a small algorithm I developed for imbedding data within images. Hopefully the slides I made will emerge somewhere.

Forcible Insertion - How to Break Windows 


this powerpoint presentation outlines methods of hooking and forcibly inserting plugins into applications that have not defined a specific plugin interface. included with the demo is an example keylogging routine.

TheMechmania 9 Cheating Experience


Learn how a select few members of SIGMil at the university of illinois at urbana-champaign did a security audit on the acm programming contest.

Webtrash Hacking


cross-site scripting, injection vunerabilities and other very trashy topics covered. i had a much better talk prepared, but i had to write this an hour before the presentation. (note to everyone: make sure you are in the right directory when you type rm -rf)

Activities of Academic Interest

Chair of SIGMIL - Special Interest Group For Military Applications
A group dedicated to reverse engineering, programming, cryptology and computer security
Member of The Association for Computing Machinery - A group devoted to the learning and exploring the world of computers.