Plasma Bears Snowflake Puzzle

Troy Salem
4 min readDec 27, 2018

The puzzle begins at https://plasmabears.com/

Plasma Bears Website

Upon signing up for the mailing list you receive a neon snowflake image with a Snowflake ID.

Snowflake and ID

A week later each person who signed up for the mailing list received an email which contained a thank you and a message at the bottom that read
“Your Snowflake ID and the following message are the key to solving your snowflake puzzle: nwss*nows*nosn*nwsw*nown*nosn*noso*nonn*nosn*nwso*nwsw*owo*nosw*noww*nown*oww*nssn*nnss*nows*nosn*nwsw*nown*nosn*nsso*nonn*nosn*nwso*nssw*noos*nwso*noon*nwsw*nwns*nown*nosn*nwsw*nnsw*nwns*noww*nwso*nwon”
Converting the last part to base-4 (s=0, n=1, o=2, w=3) and that into ASCII lead to the URL “plasmabears.com/APlasmaBearChristmasStory”

plasmabears.com/APlasmaBearChristmasStory

This page contained a looping video with a voice over saying “Now it’s time for Plasma Bears secret message for you members of the secret buidl circle. Remember kids only members of Plasma Bears secret buidl circle can decode the snowflake secret message. Remember Plasma Bears are depending on you! Set your pins.”
In the 3d snowflake background, there is one snowflake that sticks out and inspecting the webpage reveals it is a special snowflake.

snowflake_message.gif

After extracting the trailing data from the gif, you get a string of numbers “32 41 6 36 43 41 29 30 26 36 13 41 40 35 5 39 21 42 41 35 29 24 21 9 1 51 9 40 26 9 29 1” Now you can use the video to decode the secret message. To figure out which positions to align the rings you can try all possible positions and look for plaintext or by having knowledge of the movie “A Christmas Story” where Ralphie is decoding a secret message from the “Little Orphan Annie” radio show and the announcer says “set your pins to B-2”. The message then decodes to “DontForgetToBuidlYourPlasmaBears”

Now going back to the email, it says “Your Snowflake ID and the following message are the key to solving your snowflake puzzle”
So you take your snowflake ID, mine is “81ab45542f0df68723888f9e0eb4ca55afbae35389034520b3ce44975f14a79f” and XOR with the phrase “DontForgetToBuidlYourPlasmaBears” you now have the key to the snowflake puzzle. My key (ID^Message) is “c5c42b20696284e046fcdbf14cc1a331c3e38c26fb532941c0a325d53a75d5ec”

My actual snowflake

Now that we have the key we can decode the snowflake. Looking the end of each snowflake branch you can see little multi colored dots which don’t appear anywhere else on the snowflake. Reading the RGB values of the pixels reveal colors such as “#2044FF”

Going through all the colors reveals they end in “FF”. Going down each colored pixel and removing “FF” results in the public address of the prize wallet “0x204444a981213016eb0e579c4911c15a186813e7”

Now going through all the segments on a branch from the bottom to top and getting the Red and Green pixel values you get another hex string. Mine is “9a86b20db8d7f87714dd2799557b44e61600be1de455ae163ea29abeb3cdb171”

Now XOR the key with the snowflake string and the result is the private key to the prize wallet. “5f42992dd1b57c975221fc6819bae7d7d5e3323b1f068757fe01bf6b89b8649d”

So the solution is simply:(Snowflake_ID^Decoded_Message)^Snowflake_Hex = Private Key

The procedural generation of the snowflakes are based on,(SHA256({Email})^Message)^Private_Key, which gives a 64 byte string. That string is then split up into 2byte chunks and given a RGB value with Blue being a constant FF (to maintain a color scheme) the size of each segment is then defined by using the 2 byte chunks and using each byte added to the x,y of the starting point on the branch to define the end point x,y of the line. This allows for completely unique snowflakes that are reversible if the xor key / SHA256 hash is known, yet makes brute forcing the key unfeasible.

A demonstration of this code, generating ETH private / public key pairs and using a random string to xor and encode the string into a snowflake can be found at https://cryptopuzzles.org/snowgen/ along with the source code.

--

--