Final project (MetaCTF create)
"See one, Do one, Teach one". It's a medical school quote that
represents a method for helping people obtain mastery over a
particular subject. Up until this point in time, I've asked
you to do the first two. In your final project, you will
attempt the last one. As you have just completed the
challenges in MetaCTF, the goal of your final project will be to
develop your own metamorphic challenge that can be used to help
someone learn a topic covered in this course (preferably a topic you
feel is important and has not been addressed by a current MetaCTF
challenge). After doing so, you will create a narrated
screencast that walks-through the source code of your level and
a demo of how you would go about solving the level using an actual
binary. Screencast software and submission are to be done via PSU's
MediaSpace on the course's channel. Example code to derive your
level from can be found here. After
uploading your screencast to MediaSpace, ensure that the screencast is
published as "Unlisted", then create a file in your repository
called "finalproject.txt" that contains a link to your screencast
on MediaSpace.
Requirements
- Binaries should provide a general description of the
concept(s) that the solver must understand to complete the
challenge.
- Each binary should be metamorphically generated based upon
the user's e-mail address.
- Your project should follow the same format as the ones with
the flag "Good Job" output upon completion
- Create a directory that names your level. Use the notation followed by current levels, but add your own OdinID at the end of it. Specifically, the name should have the format: Chapter_LevelName_OdinID. For example:
Ch08Dbg_GdbIntro_wuchang
- Include in this directory, your C source code (program.c.template), build script (build.zsh), and any supporting files for your level. Do not include any binaries or non-necessary files with your submissions.
- As with the original source, ensure the build script takes an arbitrary number of usernames and builds polymorphic binaries in the obj/username directory. Each binary has the same name which is the name given to the level above.
Rubric
- Learning objective: How focused is the learning objective of the challenge? Does it address a core concept from the course? What is the value of the pedagogy?
- Creativity: Does the assignment use a novel technique, teach a new topic or a missing technique?
- Code: What is the quantity of functionality within the code? What is the quality of the code? Does the code force the student to apply a targeted concept in order to solve? Does the code generate metamorphic binaries?
- Difficulty: Is the description sufficiently clear so that the level can be solved in under 60 minutes?
- Format: Does the level meet the formating guidelines? Does the level follow the naming convention that includes the chapter it is derived from and a descriptive name of the concept it is teaching? Does the build.zsh script take a list of usernames and build a binary for each within the directory obj/ as the template does?
- Walkthrough: Does the screencast explain the level's learning objective and walk-through its code thoroughly? Does the screencast perform a demonstration of the steps required by someone to solve the level using the intended method?