Backstory
I remember the first code cipher that I encountered was the GCHQ Christmas puzzle of 2015. The following puzzle is a nonogram.
As a fairly new programmer at the time, I remember becoming fairly obsessed at trying to solve the puzzle during a tech meetup (remember still having those?).
During that evening, I realised that the nonogram revealed a QR code (by solving one of the sections). Which lead me down a path of looking up the format of a QR Code. Interestingly enough, QR codes are quite robust, and without solving the entire nonogram, by scanning a partial QR code, you can still retrieve the embedded information.
There's an exhilaration diving from one concept, to another, and learning something along the way.
This feeling has stuck with me ever since.
Since that 2015 Christmas puzzle, I would often look at forums and solutions to see how each stage of the puzzle was constructed. By analyzing discovering the solutions and the discussions around them, I came to two conclusions:
- I'm not getting into cryptography as a career (it's a really deep rabbit hole... the GCHQ puzzle had something like 10 stages)
- Even the best cryptographers talk with one another.
A short intro to thenewboston blockchain community.
thenewboston is a blockchain platform for everyone. We are an open source community developing decentralized apps with the goal of helping the whole world move into the cryptocurrency era.
Bucky Roberts (Prolific O.G. Youtuber) emerged back in Nov 2020 with a new community project, which is how I got introduced to the discord server
- Discord Invite link -> https://discord.com/invite/thenewboston
The start of the journey
So what's the above got to do with My journey of the last 24 hours to solve codearkive puzzle that got me 10k TNBC?
Well, this article will outline my thoughts throughout codearkive
puzzle_one created by @niekon
.
At 5:41am UTC, thenewboston
discord was presented with a message in the #code-breaking
channel.
Niekon:
Hello @everyone .
I hope everyone is well and doing good.
I also hope you were anticipating what this channel is for. So, here it is:I have devised a code-breaking competition for everyone in the TNB community,
and the reward for solving it is a total of 10,000 TNBC.Here's the link: https://codearkive.pythonanywhere.com/
In order to take part in this competition, all you need to do is be a community member of TNB.
Please make sure you go through the rules before starting:
http://codearkive.pythonanywhere.com/rules/The competition aims to be a healthy one and wishes to promote active discussions among the members of the community, educate you, as well as to invite people who are interested in code-breaking, cryptocurrencies or programming.
This will give us a chance to promote our digital currency to communities outside the general ones.
As the rules say, you can attempt this competition individually or in groups,
and I personally promote that the entire community come together to try and reach the end.If the competition becomes a success,
I may organize more in the future.Some Background:
Recently, I completed a year with the TNB community,
and in order to celebrate that,
I wanted to do a giveaway.
I had originally decided to give away 2k coins, but the general idea of doing a simple giveaway was not good enough.
That was when a crazy idea occurred to me.
How about I give everyone a chance to win the giveaway prize?
This is how I ended up organizing this event.
When I discussed it with Bucky, he liked my idea,
and was generous enough to add another 8k coins to the prize pool.
However, he does not know a thing about what I am doing, which means he will also be taking part in the competition.
I hope you like this approach and will actively take part in promoting TNB and solving the puzzle.The competition will be open until the end of August,
but I am sure you guys will be able to solve it within a day or two.
I am looking forward to it.
With that, best wishes to everyone.
I will see you at the end!
Here begins the challenge
When navigating to the site
Clicking on the getting started
takes us to the following.
Here - we were given the quotation and question...
"I am the bard who penned it down"... "Who am I?"
To the right, it appears to be a grid of random letters.
Step 1 - Viewing the puzzle.
My first instinct was google "I am the bard who penned it down". I tried William Shakespeare
as a guess to which the creator responded
... Hmm - worth a try.
From there I tried submitting the form to see what the server response might be.
I tried filling in the answer as "bob" and trying inspect the network. The response seemed to be server-side rendered (and there was a JSON object being returned, so nothing to inspect there).
The next thought was to collect all the letters from the grid and count the occurrences of each letter.
which lead me to
I tried googling famous bards and tried to cross-reference to the letters in the grid, but the closest bard that might be it could've been Taliesin, but it didn't use all the letters.
...🤔
At this point, I used the inspector and saw this interesting HTML comment.
<!-- https://imgur.com/TlsUFFl -->
Step 2: Early win...
From there you're taken to
There you're presented with a message of Very Good
and bunch of binary numbers.
01101001 01101101
01100111 01110101
01110010 00101111
00111001 01101101
01011010 01110100
00110001 01101111
01010101
I used those numbers and converted it to ASCII
.
which gives us imgur/9mZt1oU
Step 3: Feeling lucky
Typing imgur/9mZt1oU
gives me a google search, so navigating to imgur.com/9mZt1oU
gives us the following image.
At this point, I thought felt that if I were to type everything, I'd go a bit frustrated, so I saved the image and uploaded it to a get characters from image
google search.
After massaging the output (as the service bundled some of the numbers together).
I get the following:
01000100 01101001 01100100
00100000 01111001 01101111
01110101 00100000 01100001
01100011 01110100 01110101
01100001 01101100 01101100
01111001 00100000 01110100
01101000 01101001 01101110
01101011 00100000 01101001
01110100 00100000 01110111
01101111 01110101 01101100
01100100 00100000 01100010
01100101 00100000 01110100
01101000 01101001 01110011
00100000 01100101 01100001
01110011 01111001 00111111
From here I perform the same as before and convert the above binary to ascii
.
Which gives Did you actually think it would be this easy?
Step 4: Confused
Confused, I thought that this was a clue or perhaps it was a taunt. I initially thought about that the image might've contained a clue, perhaps it contained embedded data. Which led me down Steganography
.
I tried to install CryptoSteganography
on my local machine but I don't typically use python
for my day to day - so I reached out to the creator whether I should invest an hour or two debugging the installation.
To which they replied
You are thinking out of the box, but I couldn't go that far
People in the community are not all coders
Ok - hmmm, perhaps the above library wasn't necessary.
It was about this instance that I started talking about the process.
I tried the following google searches:
How to embed data into .png
png comments
I opened the image https://i.imgur.com/9mZt1oU.png
as a text file. Skimming through the file, it didn't seem obvious that there was any information.
It was getting to (hour = H) H+3 and I started noticing in the channel
that people were replying with Apple Emojis. 🍎. I thought that might've been a clue and saw that the text file had ascii and thought that might've been a clue. I stared at the jumbled text file for the next couple of hours.
I thought about adjusting the image (hue/contrast/brightness) to perhaps see if there was a watermark hidden in image itself... Close but no cigar.
Adjusting Hue
It was getting late and was trying to think of creative ideas.
Step 5: the following morning.
The breakthrough was that the realisation that there was dead-ends 🤦🏻♂️.
I noticed in the channel a discussion
Tyler:
the last line in the first image is name = "dcodeMe" id , then a string of ascii numbers that come back as unlstd_yt/fR1rf5
no idea what this is though
thought it might be some unlisted youtube videoFilterUnfiltered:
yes it is. It leads to a 2 minute fire video
which has a hidden image and morse code in it
yet to figure out what is meant by the morse codehussu:
morse code? where?
I looked at the svg on the puzzle page
There at the last section of svg is
<path xmlns="http://www.w3.org/2000/svg" name="dcodeME" id="117 110 108 115 116 100 095 121 116 047 102 082 049 114 102 053 101 099 122 083 119"/>
This section i skipped as hussu
has already found the unlisted video
Step 6: Getting somewhere.
There was discussion about morsecode
in the video. I'm not familiar with morsecode, but wanted to identify what the sounds were within the video.
I added .
and -
just to separate the sounds.
-..
-.
-.-
-..-
..--
-.
--
.-..
If I converted the above morsecode, I got DNKXÜNML
from this convertor.
I had a hunch that perhaps my conversion of morse code was incorrect, so I inverted the morse code to the following
.--
.-
.-.
.--.
--..
.-
..
-.--
This yielded the following text WARPZAIY
.
At this moment I wasn't sure what these two keys meant.
Step 7: Blaise de Vigenère
KakashiHat4ke:
What does this "Blaise de Vigenère" guy has to do with the morse code?
He makes a cameo at 1:09
At this time:
There was also talk about converting the morse to binary by KakashiHat4ke
100 10 101 1001 0011 10 11 0100
If you joined the binary you can get three eight-digit binaries
10010101 10010011 10110100
Converting these binaries to decimal yields 149 147 180
I tried converting to ascii, but that doesn't give me anything to work,
converting to decimal and doing a lookup?
The first search result I found was
https://theasciicode.com.ar/extended-ascii-code/letter-o-grave-accent-lowercase-ascii-code-149.html
149: ò
147: ô
180: ┤
This didn't seem right to me, so ended up trying to look elsewhere.
Step 8: Hussu's hint
Hussu:
we might need to decrypt the message somewhere usnig the autoclave-cipher algorithm
https://www.dcode.fr/autoclave-cipher
theory: the old guy in fire video developed this algorithm
When you reach the end, you will be able to tell what the square is. Niekon
I tried using the letters in the original square
e t f d j
t p c k n
v a d s a
r n a m t
k e l s u
and pasted DNKXÜNML
as the keyword and it yielded
b g v g p
g d r j h
a u o m x
a e t m z
w s o s q
This seemed wrong to me. (there's no obvious clue from this).
I tried WARPZAIY
as the keyword,
i t o o k
t h e c u
h m t z t
n l g f h
r f s f j
This seemed agonisingly close, but not quite...
I looked up the Blaise de Vigenère
So it turns out the algorithm that he's famous for is the Vigenère cipher
Vigenère cipher
The method of encryption known as the "Vigenère cipher" was misattributed to Blaise de Vigenère in the 19th century and was in fact first described by Giovan Battista Bellaso in his 1553 book La cifra del. Sig. Giovan Battista Bellaso.(published in 1553[citation needed] Vigenère created a different, stronger autokey cipher in (1586). It differs from Bellaso's in several ways:
Bellaso used a "reciprocal table" of five alphabets; Vigenère used ten;
Bellaso's cipher was based on the first letter of the word; Vigenère used a letter agreed upon before communication.
So it means that the hint https://www.dcode.fr/autoclave-cipher
is incorrect...
We need the https://www.dcode.fr/vigenere-cipher
Step 9: Vigenere Cipher
using the letters
etfdjtpcknvadsarnamtkelzu
it seems that if I try automatic detection - this yields a bunch of different ideas -
By using the passphrase WARPZAIY
it yields itooktheonelesstraveledby
...which made me think of The road not taken
- which googled would result in The Road Not Taken
... which is written by poet Robert Frost
.
When I submitted Robert Frost
,
@Niekon
asked me, "What does the square say @wakawaka?",
to which the answer is itooktheonelesstraveledby
.
Conclusion:
It was a wild 30+ hours, and I've got to hand it to @niekon for creating such a wonderful and thought-out puzzle.
I'd like to conclude with some passing thoughts.
If you're thinking of participating in a brain-teaser/cipher cracking challenge, please take the following approaches.
Document everything! (Your thoughts, theories...
This becomes your memory storage as you investigate avenues.. )Google is your friend. (There's lots I don't know from heart, I don't know morse code, binary... I'd rather focus on making connections than trying to decipher an algorithm off the top of my head.)
Be open about your theories you've tried. (I know as a competition, there's the drive to keep everything secret, but it helps to read and listen to what people are saying. If I didn't know early on that there were deadends, I'd still be at that deadend.)
Take breaks, lots of breaks (When you're on a roll, adrenaline will be start to flow as you jump from one idea to another. It's important to take a break, like a walk, or perhaps distracting yourself with cooking, such that your subconscious mind can decide clearly in on how to proceed. For me if I hadn't slept properly, I wouldn't have been able to pick up on the clues from the discord server)
Acknowledge and share the glory. (One thing I want to say is that, winning the prize money isn't the purpose of the journey, it's the fact that reaching that destination was aided by others openly discussing different theories. It's due to @hussu010 ,
@KakashiHat4ke
and@Tyler
talking with each other that I was able to eliminate alot of distractions.)
Thanks again to @hussu010
/ @KakashiHat4ke
and @Tyler
for their input and for @Niekon
for creating the puzzle. Thanks to @Bucky
for starting TNBC and for contributing to the prize pool and to all the people who participated.
Ok that's all from me now, now its time for me to get some rest. Thanks all! 👋🏼.
Latest comments (2)
Great sharing and congrats on winning!
Some comments may only be visible to logged-in visitors. Sign in to view all comments.