CSCS1730 UNIX/Linux Fundamentals

PROJECT: THE PUZZLEBOX (pbx1)

OBJECTIVE

Continue to cultivate your skills, problem solving abilities, and ability to explore and figure out new tools.

PROCESS

Do note, the productive way to go about this project involves taking the following steps:

  • starting early
  • reading the project page
  • asking questions regarding things you do not know, are not clear on, or are confused about
  • experimenting and exploring the your files, using tools familiar and new to try and unravel the puzzle.

If you start too late, and do not ask questions, and do not have enough time and don't know what is going on, you are not doing the project correctly.

TASK

You are to unravel the puzzle, getting to the instructions inside. Be wary of deceptions and obstacles trying to throw you off track.

You are seeking the creation of two files, that you will submit:

  • pbx1.results - the final instructions correctly unscrambled
  • pbx1steps - a list of the steps taken to accomplish the core task

NO GRABIT

As part of this activity is to test your ability to navigate around the filesystem and manipulate files on your own, there is no grabit configured for this project.

Navigate to the UNIX PUBLIC DIRECTORY yourself and manually copy your project files back into your repository.

OBTAIN THE FILES

This week's project is located in the pbx1/ sub-directory of the UNIX Public Directory, under a directory by the name of your username, there should be 2 files. One named README, and another.

Make a copy into your home directory somewhere and set to work.

NOTE: Hopefully it has been standard practice to locate project files in their own unique subdirectory, such as under src/SEMESTER/unix/, where you can then add/commit/push the results to your repository (you ARE regularly putting stuff in your repository, aren't you?)

COMMENTARY

The first puzzlebox was in many ways a test of your observational skills. To many, the frustrations emerged from what was being taken for granted. But once you took proper notice, and could apply the appropriate skills, its secrets could be obtained.

This second puzzlebox will test both your observation skills (in a slightly different way) and reasoning skills in an abstract manner. Along with that, your scripting skills are being put to the test as well: your submission will more heavily rely upon a fully functional steps file that will entirely automate the process. If you are observant, the information you need is presented early on, but is a few layers of abstraction out of reach. Patience and perseverance will be key to victory.

If you start too late, and do not ask questions, and do not have enough time and don't know what is going on, you are not doing the project correctly.

TOOLBOX

In addition to tools you may already be familiar with from previous projects, you may also want to check out:

  • ar(1)
  • basenc(1)
  • cpio(1)
  • file(1)
  • lzma(1)
  • cat(1)
  • cut(1)
  • grep(1)
  • head(1)
  • paste(1)
  • sort(1)
  • tail(1)
  • tr(1)
  • uudecode(1)
  • uniq(1)

You are NOT to make use of, as part of your puzzle solution, any steps that involve interactive tools (such as nano), nor utilize sed, ed, or awk in your solutions.

NOTE

While you may need to install any needed packages on your pi to perform tasks related to this project, do keep in mind that for the actual solving of the puzzlebox:

  • you do NOT need to call upon sudo / root access in any way (solutions containing such steps will be considered to not be following the spirit of the project)
  • all actionable steps taken are to be done using non-interactive tools. There is zero need to make use of an interactive tool like nano. Solutions that make central use of interactive tools will be considered to not be following the spirit of the project.

While you as a user investigating things may end up using various tools to see what is going on, your resultant steps file is to only be representative of the core automated/non-interactive task the computer is performing (with value-added comments giving pertinent clued-in information as a result of your observations and investigations).

PROJECT

For this project, files are located in the pbx1/ subdirectory of the UNIX Public Directory.

There is a directory by the name of your user, which contains a file. Please copy this into some custom project folder in your home directory.

In many puzzles, one's visual comprehension of the scenario plays a vital role. Where something doesn't necessarily meet the eye, or is not behaving as you would expect- just try reading any messages or output. Sometimes the clues are right under your nose.

As is the case many investigations, just observing how things behave can lead to recognition of an object's true state, or the recognition of a pattern, which can be used to solve the task at hand.

VERIFICATION

The pbx1.results file, when correctly unscrambled and assembled, can be verified by generating its md5sum hash.

This hash should match the hash stored inside the MANIFEST file located in the project directory (in the public directory).

FILECHK

You can also use the filechk tool to verify the accuracy of your results:

lab46:~/src/SEMESTER/unix/pbx1$ filechk unix pbx1

SUBMISSION

In addition to the files produced during the completion of this project, I would also like for you to create a detailed step-by-step text file called pbx1steps which includes the valid command-lines that will document for me the steps you took from project commencement through completion. You will submit this file at the end in accordance with the instructions.

To successfully complete this project, you must follow the directions located in a readable file at the conclusion of this project. Until you encounter it, you are not yet finished (hint).

You should get some sort of confirmation indicating successful submission (actually, two) if all went according to plan. If not, check for typos and or locational mismatches.

SUBMIT TOOL USAGE

Let's say you have completed work on the project, and are ready to submit, you would do the following:

lab46:~/src/SEMESTER/unix/pbx1$ submit unix pbx1 file1 file2 file3 ... fileN

A less abstract instantiation of the above (to help you transition):

lab46:~/src/SEMESTER/unix/pbx1$ submit unix pbx1 pbx1.results pbx1steps
Submitting unix project "pbx1":
    -> pbx1.results(OK)
    -> pbx1steps(OK)

SUCCESSFULLY SUBMITTED

You should get some sort of confirmation indicating successful submission if all went according to plan. If not, check for typos and or locational mismatches.

I'll be looking for the following:

RUBRIC

130:pbx1:final tally of results (130/130)
*:pbx1:submitted pbx1.results file via submit tool [13/13]
*:pbx1:submitted pbx1steps file via submit tool [13/13]
*:pbx1:both files pushed to lab46 semester repository [13/13]
*:pbx1:pbx1.results is correctly unscrambled and assembled [13/13]
*:pbx1:pbx1.results md5sum matches project MANIFEST [13/13]
*:pbx1:pbx1steps has valid list of non-interactive instructions [13/13]
*:pbx1:pbx1steps uses shell features like wildcards, IO redir [13/13]
*:pbx1:pbx1steps contains comments explaining process [13/13]
*:pbx1:pbx1steps automates the project when executed [13/13]
*:pbx1:pbx1steps when executed outputs nothing [13/13]

Additionally:

  • Solutions not abiding by spirit of project will be subject to a 50% overall deduction
  • Solutions not utilizing descriptive why and how comments will be subject to a 25% overall deduction
  • Solutions not utilizing indentation to promote scope and clarity will be subject to a 25% overall deduction
  • Solutions not organized and easy to read are subject to a 25% overall deduction