Emojibius
Emojibius
Platform: broncoctf2026 | Category: Crypto | Type: Challenge | Difficulty: Easy | OS: NA | Author: XESXOR | Date: 2026-07-11 | Status: Solved Techniques: emoji_index_mapping, image_grid_extraction, polybius_square_decode
Summary
Task: intercepted transmission of space-separated emoji pairs plus an image of a face with 5 header emojis and a faint 5x5 character grid. Solution: title 'Emojibius' = Emoji + Polybius; header emojis index rows/cols of a 5x5 Polybius square whose cells are the grid characters, each pair (row,col) looks up a character.
Emojibius β broncoctf2026
Description
Our intelligence agency has intercepted a strange transmission. It looks like Gen-Z developed a new language. We found a cryptic image of an elderly person on a nearby server?? Can you recover the secret message?
Hint: Sometimes you can tell what's written all over someone's face.
Two artifacts are provided:
intercepted_signals.txtβ a single line of space-separated emoji pairs.artifact.pngβ a 2816x1536 close-up of an elderly person's face. Five header emojis (π π¦ π πΆ π) run across the forehead, and a faint 5x5 character grid is written across the face.
Goal: recover the hidden message.
Analysis
The title Emojibius is the key clue: Emoji + Polybius. This is a Polybius square cipher where the row/column coordinates are encoded as emojis instead of digits.
- The ciphertext uses exactly 5 distinct emojis, and each token is a pair β classic Polybius
(row, col)coordinates. - The image supplies the missing pieces the "written all over someone's face" hint points to:
-
The 5 header emojis on the forehead define the axis order (index 0-4 for both rows and columns):
[π=0, π¦=1, π=2, πΆ=3, π=4] -
The 5x5 character grid written on the face is the Polybius square content:
b r o n c { e m 0 j 1 s _ g 3 } a d f h i k l p q
-
Each intercepted pair (row_emoji, col_emoji) maps to grid[row][col].
Solution
Map every emoji to its header index, then look up the grid cell for each pair.
python read-only β’ copy allowed#!/usr/bin/env python3 # Header emoji order from the forehead -> index 0..4 for both axes header = ["π", "π¦", "π", "πΆ", "π"] idx = {e: i for i, e in enumerate(header)} # 5x5 Polybius square written across the face (row-major) grid = [ list("bronc"), list("{em0j"), list("1s_g3"), list("}adfh"), list("iklpq"), ] with open("intercepted_signals.txt", encoding="utf-8") as f: tokens = f.read().split() def emojis(tok): # each token is a pair of emoji code points return [c for c in tok if c in idx] plaintext = "" for tok in tokens: r_e, c_e = emojis(tok) plaintext += grid[idx[r_e]][idx[c_e]] print(plaintext)
Decoding the 23 pairs step by step:
ππ=(0,0)=b ππ¦=(0,1)=r ππ=(0,2)=o ππΆ=(0,3)=n ππ=(0,4)=c
ππ=o π¦π=(1,0)={ π¦π¦=(1,1)=e π¦π=(1,2)=m π¦πΆ=(1,3)=0
π¦π=(1,4)=j ππ=(2,0)=1 ππ¦=(2,1)=s ππ=(2,2)=_ ππ¦=r
ππ=_ ππ=c ππ¦=r ππ=1 ππΆ=n
ππΆ=(2,3)=g ππ=(2,4)=3 πΆπ=(3,0)=}
Concatenated: bronco{REDACTED}.