Link to archived challenge

Category Difficulty Solves Author
forensics medium 10 Artemis

Description

Here is another one of the microcontrollers used by t3l0s to send secret messages.

This pattern is different. Could you help me decode it?

Flag format: clubeh{<recovered_text>}

Note: there are two versions of the exact same recording.
One is in grayscale (-gray), the other in full RGB. You only need one to solve the challenge.

Players are given two files to download: blinkenlights-1.mp4 and blinkenlights-1-gray.mp4.

Analysis

This challenge is very similar to Blinkenlights 0.

As the description suggests, the difference is in the meaning of the LEDs.
Instead of binary, Morse code is used:

  • A “dot” is represented by a single flash of the red LED.
  • A “dash” is represented by a flash of both LEDs simultaneously.

Solution

My full solve script can be viewed here.
It requires Python 3.10+, Pillow, and PyAV: pip install pillow av.

I’ve tuned the thresholds to ensure it works properly on both videos.

Here’s the high-level outline of my script:

  1. Iterate through each video frame and extract the values of a pixel at each LED.
  2. Translate the varying “analog” color intensity values to boolean state transitions (with deadzones for debouncing).
  3. Translate these state transitions to a stream of Morse code symbols.
    Timestamps are used to determine where to split the symbols into different characters.
  4. Decode the Morse code characters and display the recovered flag.

Conclusion

This challenge is solvable by hand, but personally I’m way too lazy for that.
I’ll take 30 minutes of scripting over 20 minutes of mind-numbing frame stepping any day of the week.

Blinkenlights 2 is the next and final challenge of this series.