Skip to the content.

๐Ÿ๐ŸŽฅ

Description

Look at all those emoji, can you find the flag.

Both files are the same text just with different emojis, since Unicode is dumb and doesnโ€™t play nice on all operating systems.

Other information

Value: 75 points

Included files: out.emoji, out2.emoji

Solution

This challenge was a single substitution cipher of all the characters in the Bee Movie script with the flag inserted in the middle.

For my solution I will be using a the file out2.emoji as the cipher text. The same ideas apply to out.emoji as well just with different emojis.

The way that I would approach this challenge is to first view the entropy of the file, in an attempt to find if the information we were given ahs a high likelihood of being plaintext with some form of substitution applied. Running these through CyberChefโ€™s entropy tool, we can see that the entropy is very much within the range of english plaintext.

entropy

With this knowledge, there are a variety of attacks that can occur against this. With a good option being a character frequency analysis attack. With the text being so large, there is a large amount of data available to use to determine the most likely characters, and their potential substitutions. While this unlikely to get all of the characters, after getting the first small bit of the first part of the text According to all known laws of aviation, we can determine that the text is the script from the Bee Movie, making it much easier to determine most of the missing characters. Another potential way tof igure this out is look at the title of the challenge, and realize the emojis are Bee and Movie.

Specifically this version of the script was used, but any copy would work to find the characters. This would leave us with the table below where 3 emojis do not have a substitution. That can be seen in the table below with NA being used to represent the unknown characters.

Character Substitution Character Substitution Character Substitution
` ` (Space) ๐ŸŒŒ y ๐Ÿ‘จ W ๐Ÿ•
a ๐Ÿญ z ๐Ÿ‘ฉ X โ˜•
b ๐Ÿ”ฅ A ๐Ÿ‡ฆ Y ๐Ÿ”‘
c ๐Ÿ‘ป B ๐Ÿ˜ฑ ' ๐Ÿ–
d ๐Ÿ‘ฝ C ๐Ÿฆƒ , ๐Ÿ‘‹
e ๐Ÿ‰ D ๐Ÿ“€ . ๐Ÿ›‘
f ๐ŸŽ E ๐Ÿงธ \n ๐Ÿ”ž
g โœจ F ๐Ÿฉ ! ๐Ÿ‘€
h ๐ŸŽ‚ G ๐Ÿช ? ๐Ÿ’ธ
i ๐ŸŠ H ๐Ÿ - ๐ŸŒ•
j ๐Ÿ‘ I ๐Ÿ‡ฒ : ๐ŸŒ‘
k ๐Ÿ‘Ž J ๐Ÿฅ˜ " ๐ŸŒš
l ๐ŸŒˆ K ๐Ÿ›ธ NA ๐ŸŒ
m ๐Ÿ• L ๐Ÿ‡ฎ NA ๐ŸŒž
n ๐Ÿ‘Œ M ๐Ÿ‡ณ NA ๐ŸŒ›
o ๐Ÿ‘พ N ๐Ÿ’พ 0 ๐Ÿฅœ
p ๐Ÿค– O ๐Ÿ‡ธ 1 ๐Ÿ“น
q ๐Ÿ‘บ P ๐Ÿฅž 2 ๐Ÿ“บ
r ๐Ÿ‘น Q ๐Ÿฅข 3 ๐Ÿด
s ๐Ÿ‘ฟ R ๐ŸฅŸ 4 ๐ŸงŠ
t ๐Ÿคก S ๐ŸŽ 5 ๐Ÿ†
u ๐Ÿ‡ช T ๐Ÿ 6 ๐ŸŒฎ
v ๐Ÿ‘ถ U ๐Ÿ’ณ 7 ๐Ÿ‘
w ๐Ÿ‘ฆ V ๐ŸŽ„ 8 ๐Ÿ’ป
x ๐Ÿ‘ง     9 ๐Ÿ“ฑ

Making a decoder with this table, we can decode most of the text, to see if there are context clues as to what they are. I created this first pass here that does all subistution while ignoring the 3 characters that do not have a substitution. This gives us the whole script of the Bee Movie, with a partially decoded flag right in the middle.

Not yet it isn't. But is this what it's come to for you? Exploiting tiny, helpless bees so you don't have to rehearse your part and learn your lines, sir?
sp00ky๐ŸŒth4ts๐ŸŒ›4l0t๐ŸŒ›0f๐ŸŒ›subs๐ŸŒž
Watch it, Benson! I could blow right now!

Knowing the flag format is sp00ky{flag}, there smiling moon and sun can be swapped for the curly braces. Leaving a single emoji needing figured out. You could randomly guess, but the flag has leet speak for thats alot of subs, so a good guess with context is _ which is common in leet speak spaces. Replacing these gives the final flag of sp00ky{th4ts_4l0t_0f_subs}.

The final decoder, that will read in out2.emoji and output the whole script with the flag is here.

Extra

If you are looking to do a similar challenge, both encoders have been included with the encoder pulling down the script upon running. Encoder and Encoder2.