BSides NYC 2025 CTF - Forensics


While I unfortunately couldn't attend the conference I did see that the BSides NYC CTF board was available still (check here). Christopher Eng (ogmimi) created some small Star Wars themed questions for the Forensics category that I figured I'd dive into.

Secret Map - Scratching the Surface

Evidence: map.jpg

A mysterious map has surfaced—rumored to lead to a hidden Jedi enclave. The transmission appears to be nothing more than an ordinary image, but you know better.

Your contact believes the Jedi left encrypted guidance within its metadata—hidden among the shadows of the file itself.

Search beyond what the eye can see. The flag lies not in the stars, but in the data beneath them.

(Solving this challenge unveils another follow-up challenge)

We are provided a simple image file of a map but there is obviously more to it than shown on the surface.

Figure 1: map.jpg sample

Running the image through an exiftool we can see the answer pretty quickly in the Notes section.

Figure 2: map.jpg metadata via exiftool

The flag was "flag{m47ry05hk4}".

Secret Map - Matroyshka?

Evidence: map.jpg

You've decoded the hidden message from the first map-but your discovery only deepens the mystery.

Within the data you recovered lies another, smaller map-carefully concealed by the Jedi to mislead the unworthy. The faint patterns suggest layers of concealment within concealment, a trail meant only for those who can truly see.

Can you extract the second map and uncover what secrets it hides?

Matroyshka is commonly known as nesting dolls so you know there is more to the story of the map image than what was answered in question 1. At first I was expecting to have to utilize the previous answer as a password to extract something else but it was much more simple than that.

Loading up CyberChef I used the Extract Files recipe and out popped the flag that was a hidden image inside.

Figure 3: CyberChef file extraction

The answer was "flag{k3n081}".

Jedis use Windows Notepad?

Evidence: LocalState.zip

In a galaxy far, far away, whispers speak of an elusive Jedi hiding a list of secret droids. Your faction dispatched a covert spy droid to track the Jedi’s movements and infiltrate their systems.

The droid successfully gained access to the Jedi’s datapad, where the Jedi was carelessly working in a primitive text editor known as Windows Notepad. Before the Jedi discovered the intrusion and destroyed the spy unit, it managed to transmit a fragment of data back to you - the contents of the LocalState folder.

No other artifacts survived the extraction. Somewhere within this limited dataset lies the information you seek. Can you uncover the names of the hidden droids—and recover the flag?

If there is anything you know about ogmini is that he has been a blogging run for the Zeltser Challenge. He has been doing a ton of research around Windows Notepad and what can be recovered from a forensics perspective, even releasing a script to parse Window and Tab states. This will come in handy for this question.

We are provided the LocalState.zip that contains the TabState and WindowState folders from Notepad. Using Chris's script we can get some results fairly quickly (sample commandline below):

WindowsNotepadParser.exe -t "D:\BSidesNYC_CTF_2025\LocalState\TabState" -w "D:\BSidesNYC_CTF_2025\LocalState\WindowState" -o "D:\BSidesNYC_CTF_2025\LocalState" -g

Loading in the TabState and WindowState folders as well as the -g switch to generate a GIF of the unsaved buffer chunks. The output CSV for UnsavedBufferChunks so some interesting characters:

Figure 4: UnsavedBufferChunks parsed

We can see character strings being added at specific cursor positions. Be aware and take not that this also takes into account for character deletions. You can painstakingly recreate the results here or you could just take a look at the GIF generated (if you added the switch) which may be the coolest thing about this script.

Figure 5: UnsavedBufferChunks GIF

You can see the file being written in almost real time. We can see the original was edited to remove the flag. We see here the answer was "flag{r5-d4_k-2so_bd-1}".

There's always something new to learn when playing CTFs. I had never examined these items from Notepad but now knowing how powerful this could be for examinations I will definitely be adding it to my workflow to analyze. Much thanks to Chris for making these challenges, making an awesome script, as well as continuing to share blog content and research to the DFIR community.