Cicada 3302


The answer is 781386592.

This section requires Javascript.
You are seeing this because something didn't load right. We suggest you, (a) try refreshing the page, (b) enabling javascript if it is disabled on your browser and, finally, (c) loading the non-javascript version of this page . We're sorry about the hassle.

2 solutions

David Vreken
Jun 9, 2018

Copy and paste the image into an image editor (like Microsoft Paint) and use the fill tool to make the background a different color.

The hidden number 781386592 781386592 will then appear!

I wonder what became of Cicada 3302. Sounded like a pretentious internet hoax to me.

Krishna Karthik - 1 year, 2 months ago

Log in to reply

the latest puzzle is still unsolved

Julian Poon - 1 year, 2 months ago

The picture has a high contrast, so we have practically only the colors white and black. It is therefore interesting to consider the distribution of grayscale colors. For example, you can load the image in Python with the PIL library and convert it to a numpy array so that you can plot the statistics of the color values with matplotlib. Each pixel of the PNG file has a gray value between 0 (black) and 255 (white). In our case, the following statistic results:

gray value 0 1 2 253 254 255 pixels 14844 313381 0 0 28746 3029 \begin{array}{r|ccccccc} \text{gray value} & 0 & 1 & 2 & \dots & 253 & 254 & 255 \\ \text{pixels} & 14844 & 313381 & 0 & \dots & 0 & 28746 & 3029 \end{array}

It is noticeable that there are only the four gray levels 0, 1, 254 and 255 in the whole picture. In particular, most pixels have the value 1 or 254. This is by no means a random pattern, but indicates that here additional information has been encoded in the image. Since the gray values 0 and 1 or 254 and 255 are very close to each other, it is impossible to recognize the information with the naked eye. But if we create a new image in which we color all the pixels with the gray value 1 and 254 white and everthing else black, we get the following:

This picture is created by the following python code:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import numpy as np
from PIL import Image

pic = Image.open('encodedpic.png')  # open image as an Image object
picBW = pic.convert('L')            # convert it to a grayscale image
picArray = np.array(picBW)          # create a two dimensional array from the grayscale image

for l in range(len(picArray)):                              # iterate over all pixels of the image 
    for p in range(len(picArray[l])):
        if picArray[l][p] == 0 or picArray[l][p] == 255:    # if an 'interestiong' pixel is found
            picArray[l][p] = 255                            # color it white
        else:
            picArray[l][p] = 0                              # otherwise color it black

result = Image.fromarray(picArray)  # convert the array back to an Image object 
result.save('hiddencode.png')       # and save it.

So where's the next test?

Julian Poon - 3 years ago

Log in to reply

I see that was far too easy. Leave me a few days and I'll think of something more difficult :D

Markus Michelmann - 3 years ago

Log in to reply

I used GLSL instead, using the code:

void mainImage( out vec4 C, in vec2 R )
{
vec4 I = texture(iChannel0 , R/iResolution.xy);
if (I.x == 0.){C = vec4(1.);}
}

This output:

Not as clear but it passed

EDIT: I realised it was just because I used a lower resolution so GLSL compressed the image. It would have been a lot clearer if I used the original resolution

Julian Poon - 3 years ago

Log in to reply

@Julian Poon This looks a bit like an old monitor effect. That way, this mysterious number seems a bit spooky. I like it.

Markus Michelmann - 3 years ago

@Julian Poon Yeah GLSL is parallelised, so your shader code is better.

Krishna Karthik - 1 year, 2 months ago

0 pending reports

×

Problem Loading...

Note Loading...

Set Loading...