Friday, April 13, 2012

Does Open Source Make it Too Easy to Cheat?

cryptic swarm describes … How I Hacked My Compsci Class

In my senior year of high school I hacked my AP Computer Science class competitions. It was the first year the school taught Java. The teacher wanted to get everyone excited about programming by introducing weekly competitions. A class favorite was the Robocode competitions. We paired off into groups of two to build robot AIs. We all looked forward to the Friday classes where we had a 1 on 1 single elimination tournaments. This went smoothly for the first couple of weeks. I felt excited to watch the robots evolve from week to week.

One Friday competition it took a turn. A few of my classmates found that they could take open source robots from the internet. They won by a gigantic margin, so naturally other students followed suite. This behavior spread virally throughout the class, and soon the Friday competitions turned from building the best robots that you could, to finding the best robots that someone else made. My partner and I refused to poach someone else's robot. We were determined to win by our own efforts. We continued to build our robot, but we soon realized that the internet had far better AI skills than we did.

The Hack

Eventually we came up with a plan to win. We changed the name of the robot we were building to 'GhostlyImage'. We decompiled the jar file for the robocode environment on the computer that the competition was held. After studying the source code for a while we eventually found the place where a robot scanned another. We modified the code so anytime our robot, 'GhostlyImage', was scanned it would fill the event with false information. For an added bonus we had it print in the scanner's terminal 'You have been Phantomized!'.

On the first competition that we used the modified environment no one figured out what was wrong. They just found it strange that their poached bots acted erratically. The consensus at first was that our movement must be throwing their robots off. The terminal output wasn't noticed. Why would they? They didn't write anything to print there. They were using someone else's bot.

It wasn't until later on that it dawned on them that something was terribly wrong. One of our classmates finally noticed their terminal output was filled with 'You have been Phantomized!' messages. We then told the class how we had been beating them. Quite pleased with ourselves that we figured out a way to beat the top robots by bending the rules of robocode.


No comments:


Related Posts Plugin for WordPress, Blogger...