CompOrg Fall 2004 Homework #2

CompOrg Binary Bomb Squad

Due Date: Oct 24th at 11:59PM.
Autograded.

Late Penalty: 100% (grading script turned off at due date)

This counts for two homeworks!

Assignment

You have been selected to be a member of an elite group of cyber-techno-digi-gurus who are needed to defuse some binary bombs. Your have been selected due to your expertise in IA32 assmembly language, your knowledge of data representation and computer arithmetic, and your extensive knowledge of how to read an ASCII reference chart.

You will be given a "binary bomb" which you must defuse. If you are not capable of defusing the bomb, one of two possible things will happen:

  1. You will get a bad grade on this assignment.
  2. The world will end.

I can't remember which will actually happen... feel free to use whichever one provides you with more motivation.

Binary Bomb

A binary bomb is an executable program (Linux executable) that consists of six phases. Each phases expects the user to enter a particular string (via stdin). If the expected string is entered, the phase has been defused and the progam moves on to the next phase. If the expected string is not entered, the program explodes (prints "BOOM" and quits). Your job is to defuse as many phases as possible.

Each phase tests a different aspect of machine language programs:

Phase 1:comparison
Phase 2: loops
Phase 3: conditionals/switches
Phase 4: recursive calls and the stack discipline
Phase 5: pointers
Phase 6: linked lists/pointers/structs

There is also a challenging "secret phase"... (but it's a secret)

Each student will get a unique bomb, the solution to your bomb (the sequence of expected strings) is different than everyone else's. Feel free to help each other with general concepts (you can work together), but you are not allowed to submit solutions to your bomb unless you determined the solutions. In other words - if you need help, feel free to ask Dave or the TAs or anyone else to help you get started, but you must have a complete understanding of how to figure out what the solution is (you will certainly need this ability on a test!).

The phases are ordered in (roughly) increasing difficulty, and phase 1 is pretty easy. Don't underestimate the project just because you can solve the first phase - the subsequent phases get harder!

How to get your bomb

Bombs are available on the web, all you need to do is click on the link below and save the file to your computer. It is required that you move the bomb to your account on monte.cs.rpi.edu to work on the bomb. Your bomb will not run on any other machine!.

Click here to get your bomb

Your bomb will be sent in a zip file that includes:

We assume that you can handle a zip file! Under Windows you can use WinZip (available at www.winzip.com). Under Unix you can use unzip to unzip a zip file.

NOTE: The "bomb server" that sends you a binary bomb will make sure that your bomb is not available to anyone else! It is not acceptable that two students use the same bomb - everyone needs to download a unique bomb (with a unique solution!). Each student needs only one bomb, so please don't download lots of them (there are a fixed number of bombs pre-made, and if the server runs out this will inconvience other students who have not yet received one bomb!). Although every bomb is different, they are all comparable in difficulty, so there is no reason to get more than one bomb.

How to submit

Your bomb includes spyware that will automatically tell us whenever you solve a phase or explode your bomb. You don't need to do submit anything for this assignment. You can check the status of your bomb grade by visiting the : Bomb Status Page.

Grading

Grades will be determined by the number of phases you are able to solve:

For each explosion detected, you will lose 1/4 point from your grade, up to a maximum of 10 points total. Don't simply guess!

HINTS: