paint-brush
Journey Through the Command Line Murdersby@lregalado
1,196 reads
1,196 reads

Journey Through the Command Line Murders

by Lorenzo RegaladoJuly 30th, 2023
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

Walkthrough of The Command Line Murders Easy to follow way to solve the game, using cat, grep, sed, and tr.
featured image - Journey Through the Command Line Murders
Lorenzo Regalado HackerNoon profile picture


If you want to practice or gain some command-line skills, have fun solving

The Command Line Murders. You will solve a mystery while applying your command line knowledge to get clues and insights.


Spoiler Alert: Below is my walkthrough of the game. Try to do it on your own first. If you are stuck, at some point, try the hints that the game itself provides.

Getting some CLUES

Reading the instructions file, our starting point is to look for the CLUES on the crimescene


Looking for clues we found the following 3:

grep -n "CLUE" crimescene
9213:CLUE: Footage from an ATM security camera is blurry but shows that the perpetrator is a tall male, at least 6'.
9370:CLUE: Found a wallet believed to belong to the killer: no ID, just loose change, and membership cards for AAA, Delta SkyMiles, the local library, and the Museum of Bash History. The cards are totally untraceable and have no name, for some reason.
11002:CLUE: Questioned the barista at the local coffee shop. He said a woman left right before they heard the shots. The name on her latte was Annabel, she had blond spiky hair and a New Zealand accent.


At this moment the more promising seems to be CLUE#11002, we have a name, let’s dig into the people’s file.


Looking for Annabel

We got 2 female Annabels on the people file:

grep "Annabel" people| grep "\tF\t"
Annabel Sun	F	26	Hart Place, line 40
Annabel Church	F	38	Buckingham Place, line 179


Looking at the address of these two Annabels we get the info:

sed -n "40p" streets/Hart_Place
SEE INTERVIEW #47246024

sed -n "179p" streets/Buckingham_Place
SEE INTERVIEW #699607


Checking Interviews

cat interviews/interview-47246024
Ms. Sun has brown hair and is not from New Zealand.  Not the witness from the cafe.


Dead end from 47246024, fortunately, the other interview gets us one step further:

cat interviews/interview-699607
Interviewed Ms. Church at 2:04 pm.  Witness stated that she did not see anyone she could identify as the shooter, that she ran away as soon as the shots were fired.

However, she reports seeing the car that fled the scene.  Describes it as a blue Honda, with a license plate that starts with "L337" and ends with "9"


Searching License Plate

We are looking for a vehicle and we know it's a Honda, Blue with license L337??9, so we can filter the following:

cat vehicles|tr "\n" " "|sed 's/License/\n&/g'|grep Honda|grep Blue|grep -n -e  "L337..9"
6:License Plate L337QE9 Make: Honda Color: Blue Owner: Erika Owens Height: 6'5" Weight: 220 lbs
18:License Plate L337539 Make: Honda Color: Blue Owner: Aron Pilhofer Height: 5'3" Weight: 198 lbs
26:License Plate L337369 Make: Honda Color: Blue Owner: Heather Billings Height: 5'2" Weight: 244 lbs
28:License Plate L337DV9 Make: Honda Color: Blue Owner: Joe Germuska Height: 6'2" Weight: 164 lbs
36:License Plate L3375A9 Make: Honda Color: Blue Owner: Jeremy Bowers Height: 6'1" Weight: 204 lbs
40:License Plate L337WR9 Make: Honda Color: Blue Owner: Jacqui Maher Height: 6'2" Weight: 130 lbs


The command chain used here is a bit more elaborated, I first remove all new lines with tr "\n" " "

and then insert a new line before each License word with

sed 's/License/\n&/g'

So that we get all the info about a License Plate in one line, and can filter with ease


From CLUE #9213 we know the suspect is a tall male, so we can reduce to lines 28 and 36.


Checking Memberships

We check the two suspects to see their memberships, that we have from CLUE#9370.

For Joe Germuska we only have 2 of 4 memberships mentioned:

grep "Joe Germuska" -n  memberships/*
memberships/AAA:197:Joe Germuska
memberships/Terminal_City_Library:241:Joe Germuska


But with Jeremy Bowers, it appears that we got our killer:

 grep "Jeremy Bowers" -n memberships/*
memberships/AAA:336:Jeremy Bowers
memberships/Delta_SkyMiles:1153:Jeremy Bowers
memberships/Museum_of_Bash_History:187:Jeremy Bowers
memberships/Terminal_City_Library:531:Jeremy Bowers


Checking the Result

To check the result we look at the solution file:

echo "Jeremy Bowers"| $(command -v md5 || command -v md5sum) | grep -qif /dev/stdin encoded && echo CORRECT\! GREAT WORK, GUMSHOE. || echo SORRY, TRY AGAIN.
CORRECT! GREAT WORK, GUMSHOE.


Final thoughts

Playing The Command Line Murders has been a very enjoyable experience. Not only did I have a great time solving the mysterious murder following the clues and helping the CLPD, but I also had the opportunity to strengthen my command line skills in a creative way. shouts to Noah Veltman the creator.