Capture the Flag (CTF) challenge 1

Hey, @348663451y

I've experimented with some of these ideas before, so I had a bit of a head start, and I didn't even get it right away, so no worries :wink: .

@dardoro's first clue helped a lot. There's just so many things that you can make somewhat invisible and that you can create and save with your project without permanently storing them in a variable or as blocks in the scripting area.
Also, steganography is a technique where you hide information in images - maybe this helps where to find the right list to put into the function.


Spoiler 1

Aha! Found a clue, reload for a fresh project, go to stage, and notice no costumes are selected.

Spoiler 2

Also notice the name of the unselected costume is, in fact, named "costume".
And look:

I found this as the costume of the stage. I changed the color background of the stage and found a little thing. I made secret switch to that costume and made it larger.

Please put your walkthrough in spoiler tags

like this.

Made you look


So it's time to disclose, and shed some light on the problem...

  1. Steganography, as Jagda pointed out, is the old idea to hide secrets in a clear message (image, sculpture, voice transmission, or even text). Steganography - Wikipedia.
    Text example:

Some words
Now put in order to form
A "hidden" message but
Perceived as non-meanigful text

Another example is the Stage costume of the challenge project.


Taking into account that:

  • Snap! project is "persistent" in many areas. Variables, stage state, and current costumes, even created on the fly, are stored as part of the project.

  • Images are stored in lossless PNG format. So every pixel is loaded exactly as it was saved (to some extent - the canvas has antialiasing and sometimes distorts scaled image). Some other formats, like JPG, are lossy. Image details, less important for human perception, are discarded, giving 10:1 and more compression ratio.

The idea behind this challenge was to store some text as a costume for the Stage. To make it not that obvious the character code is stored as the alpha channel ("invisible to some degree") of the white pixel.
tmp script pic (1)

A character set is limited, so the Unicode of the char is a single byte.
To decode the message
untitled script pic - 2021-10-11T223817.925

I was so close!

Do not worry. I will make a second, more demanding, challenge, based on the same, but slightly enhanced, idea.

Yay! Great idea btw!