← Back to Writeups
CUSTOMMediumCrypto

T-8000 (Sesame / Rice Radical Encoding)

XESXOR9/10/20263 min read
#crypto#custom#medium#brute_force_offset#cjk_offset_decode#linguistic_hint_decode#unicode_range_analysis

T-8000 (Sesame / Rice Radical Encoding)

Platform: taipanbyte | Category: Crypto | Type: Challenge | Difficulty: Medium | OS: NA | Author: XESXOR | Date: 2026-02-14 | Status: Solved Techniques: brute_force_offset, cjk_offset_decode, linguistic_hint_decode, unicode_range_analysis

Summary

T-8000 (Sesame / Rice Radical Encoding) — TaipanByte CTF

Description

Черно-белый. Семена. Масло. Индика. Сахар. Это что вообще? Ничего не понимаю...

籝籋粄簺籽籼籨簼籉籼粂籨籯簹类籨籼簹籵籿簼粆

Analysis

Step 1: Linguistic analysis of the hints

The description contains five Russian words that all describe properties of sesame (кунжут / 芝麻):

HintTranslationConnection to Sesame
Черно-белыйBlack-whiteSesame seeds come in black and white varieties
СеменаSeedsSesame is a seed crop
МаслоOilSesame oil is widely used
ИндикаIndicaSesamum indicum — the botanical name
СахарSugarSesame is used in sweets (halva, kozinaki)
‍​‌‌​​‌​​​‌‌​​‌​​​​‌‌​‌​​​​‌‌‌​​‌​​‌‌​​​‌​​‌‌‌​​​​​‌‌​‌‌​​​‌‌​​​​‍

This points to a "sesame encoding" — an encoding scheme using CJK characters related to grain/rice.

Step 2: Unicode analysis of the encoded text

All 22 Chinese characters fall within a narrow Unicode range U+7C39 to U+7C86. They all share the 米 (rice/grain) radical, which is thematically connected to sesame (a grain/seed crop):

籝=0x7C5D  籋=0x7C4B  粄=0x7C84  簺=0x7C3A  籽=0x7C7D  籼=0x7C7C
籨=0x7C68  簼=0x7C3C  籉=0x7C49  籼=0x7C7C  粂=0x7C82  籨=0x7C68
籯=0x7C6F  簹=0x7C39  类=0x7C7B  籨=0x7C68  籼=0x7C7C  簹=0x7C39
籵=0x7C75  籿=0x7C7F  簼=0x7C3C  粆=0x7C86

‍​‌‌​​‌​​​‌‌​​‌​​​​‌‌​‌​​​​‌‌‌​​‌​​‌‌​​​‌​​‌‌‌​​​​​‌‌​‌‌​​​‌‌​​​​‍

Key observations:

  • All codepoints share the prefix 0x7C
  • The range spans only 77 values (0x39 to 0x86) — exactly covering printable ASCII
  • This strongly suggests a simple offset-based encoding

Step 3: Finding the decoding offset

Since the flag format is TB{...}, we know:

  • First character 籝 (U+7C5D) must map to T (ASCII 84 = 0x54)
  • Offset = 0x7C5D - 0x54 = 0x7C09

Decoding formula: ASCII = Unicode_codepoint - 0x7C09

Character-by-character decoding

CharacterCodepoint- 0x7C09ASCIIChar
籝U+7C5D840x54T
籋U+7C4B660x42B
粄U+7C841230x7B{
簺U+7C3A490x311
籽U+7C7D1160x74t
籼U+7C7C1150x73s
籨U+7C68950x5F_
簼U+7C3C510x333
籉U+7C49640x40@
籼U+7C7C1150x73s
粂U+7C821210x79y
籨U+7C68950x5F_
籯U+7C6F1020x66f
簹U+7C39480x300
类U+7C7B1140x72r
籨U+7C68950x5F_
籼U+7C7C1150x73s
簹U+7C39480x300
籵U+7C751080x6Cl
籿U+7C7F1180x76v
簼U+7C3C510x333
粆U+7C861250x7D}
‍​‌‌​​‌​​​‌‌​​‌​​​​‌‌​‌​​​​‌‌‌​​‌​​‌‌​​​‌​​‌‌‌​​​​​‌‌​‌‌​​​‌‌​​​​‍

Solution

python
#!/usr/bin/env python3
"""
T-8000 — TaipanByte CTF
Sesame encoding: CJK characters from 米 (rice) radical mapped to ASCII
via fixed offset 0x7C09.
"""

text = "籝籋粄簺籽籼籨簼籉籼粂籨籯簹类籨籼簹籵籿簼粆"
flag = ''.join(chr(ord(ch) - 0x7C09) for ch in text)
print(flag)  # TB{REDACTED}

‍​‌‌​​‌​​​‌‌​​‌​​​​‌‌​‌​​​​‌‌‌​​‌​​‌‌​​​‌​​‌‌‌​​​​​‌‌​‌‌​​​‌‌​​​​‍