For Students

Completing an Assignment

For each assignment in the course, your instructor will generate a unique set of files for each student. Those files provide what is needed to complete the assignment . They will typically include:

Step 1: Unpack the assignment

  • Unzip the assignment files received from your instructor. The zip package from your instructor will usually contain all of the files for every student.  
  • After unzipping the file, find the subdirectory that is named according to your student identifier, which is assigned to you by your instructor. Your student identifier might be your email address or another student identifier used at your school or it might be a unique identifier generated by the instructor just for the course.
  • Your files are found in the subdirectory that is named by your student identifier

Extracted Files

  • A document containing instructions, e.g., instructions.txt"
  • A file containing metadata that describes the assignment requirements and which student it was assigned to in a machine-readable format, which must be returned with the completed assignment.
  • A source or binary file to reverse engineer for the assignment. Each student receives a different such source or binary file.

Step 2: Complete assignment

  • Read the instructions and complete the assignment

Step 3: Package up your solution

  • After you have completed the assignment, package your results into a submission using the provided command line program package_submission.py which is found in the "AutoAssignRE" subdirectory of your home directory in your LigerLabs virtual machine.
  • The program has three required and one optional parameter. It can bee invoked as ./package_submission.py -h from within the AutoAssignRE directory in order to obtain help text to remind you of the details.
  • The first parameter is the full path of the metadata file that was provided by the instructor with your assignment files. Usually it should be expected to be named metadata.json.
  • The second parameter is the full path to a file containing your writeup of your results, such as a txt, pdf, or doc file, as required by your instructor.
  • The third parameter is the path to a directory where the packaged submission file should be output, for example, "." to indicate the current directory.
  • If the instructions for your assignment require you to return a hacked binary or a deobfuscated source file as part of your submission, the full path to that file can be provided to the program using the optional parameter --in_deobf_filename
  • If the assignment requires you to extract an asset from the provided file to reverse engineer, then it will be prompted for by the package_submission.py program. (The list of items to prompt for is contained in the machine-readable metadata file.)

Example submission

An example run of the package_submission.py program is shown below.

    
> cd ~/AutoAssignRE$ 

>  ./package-submission.py \
  "/home/liger/AutoAssignRE/example/output/student/123/metadata.json" \
  "/home/liger/AutoAssignRE/example/writeup.txt" \
  "/home/liger/AutoAssignRE/example/output/" \
  --in_deobf_filename=/home/liger/AutoAssignRE/example/output/student/123/obf.c

provide the extracted asset: pas$1234

> ll "/home/user/AutoAssignRE/example/output/"
total 52
drwxrwxr-x 4 user user  4096 Sep 10 07:42 ./
drwxrwxr-x 3 user user  4096 Sep 10 07:33 ../
drwxrwxr-x 2 user user  4096 Sep 10 07:32 instructor/
drwxrwxr-x 4 user user  4096 Sep 10 07:32 student/
-rw-rw-r-- 1 user user 36195 Sep 10 07:42 submission_123_20230910074226386899.zip