My journey to solving the first codearkive puzzle that won me 10k TNBC.
Tags: codeciphers, thenewboston, codearkive
Published: 2021-08-03 16:16:50

---
title: My journey to solving the first codearkive puzzle that won me 10k TNBC.
published: true
description: a cryptographic brain teaser from thenewboston community
tags: ["CodeCiphers", "thenewboston", "codearkive"]
---

## Backstory 

I remember the first code cipher that I encountered was the [GCHQ Christmas puzzle of 2015](https://www.gchq.gov.uk/information/director-gchq-s-christmas-puzzle-2015---part-1). The following puzzle is a [nonogram](https://en.wikipedia.org/wiki/Nonogram).

![Nonogram](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rjvhkvdsu3c5h3dw10le.png)

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](https://en.wikipedia.org/wiki/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:

1. I'm not getting into cryptography as a career (it's a really deep rabbit hole... _the GCHQ puzzle had something like 10 stages_)
2. 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 [![Intro](https://img.youtube.com/vi/D-3i1g5YFik/0.jpg)](https://www.youtube.com/watch?v=D-3i1g5YFik)

- 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

![Site](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6shgl5llszvs144i89nf.png)

Clicking on the `getting started` takes us to the following.

![CodeArkive Puzzle-one](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h0c4m3mt3p9vfrdxtquu.png)

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


![Response](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wqu28e1vbemltssupdx0.png)

... 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 

![All Letters](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/98014irdxaep4awh1806.PNG)

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 -->```

![Web Inspector](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cdhxjg0tqqs2v3rfrt62.png)


---

## Step 2: Early win...

From there you're taken to 

![Clue-one](https://i.imgur.com/TlsUFFl.png)

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.

![Step 3](https://i.imgur.com/9mZt1oU.png)

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
![Adjusting Hue](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6jwupmuh7a0hfb4lqb9i.png)



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 video

> FilterUnfiltered:  
> 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 code

> hussu:  
> morse code? where?


I looked at the svg on the puzzle page

<img src="https://codearkive.pythonanywhere.com/static/puzzleone/code_square.svg" />

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](https://www.youtube.com/watch?v=fR1rf5eczSw) 

[![Youtube Video](https://img.youtube.com/vi/fR1rf5eczSw/0.jpg)](https://www.youtube.com/watch?v=fR1rf5eczSw)


### 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](https://morsecode.world/international/translator.html).

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

![Cameo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qp4sverx4vghoa2lqtdf.png)

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](https://en.wikipedia.org/wiki/Blaise_de_Vigen%C3%A8re)

So it turns out the algorithm that he's famous for is the [Vigenère cipher](https://en.wikipedia.org/wiki/Blaise_de_Vigen%C3%A8re#Vigen%C3%A8re_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](https://www.poetryfoundation.org/poems/44272/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.

1. **Document everything!** (_Your thoughts, theories...
   This becomes your memory storage as you investigate avenues._. )

2. **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.)_

3. **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._)

4. **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_)

5. **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! 👋🏼.