T-8000 (Sesame / Rice Radical Encoding)
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 (кунжут / 芝麻):
| Hint | Translation | Connection to Sesame |
|---|---|---|
| Черно-белый | Black-white | Sesame seeds come in black and white varieties |
| Семена | Seeds | Sesame is a seed crop |
| Масло | Oil | Sesame oil is widely used |
| Индика | Indica | Sesamum indicum — the botanical name |
| Сахар | Sugar | Sesame 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 toT(ASCII 84 = 0x54) - Offset = 0x7C5D - 0x54 = 0x7C09
Decoding formula: ASCII = Unicode_codepoint - 0x7C09
Character-by-character decoding
| Character | Codepoint | - 0x7C09 | ASCII | Char |
|---|---|---|---|---|
| 籝 | U+7C5D | 84 | 0x54 | T |
| 籋 | U+7C4B | 66 | 0x42 | B |
| 粄 | U+7C84 | 123 | 0x7B | { |
| 簺 | U+7C3A | 49 | 0x31 | 1 |
| 籽 | U+7C7D | 116 | 0x74 | t |
| 籼 | U+7C7C | 115 | 0x73 | s |
| 籨 | U+7C68 | 95 | 0x5F | _ |
| 簼 | U+7C3C | 51 | 0x33 | 3 |
| 籉 | U+7C49 | 64 | 0x40 | @ |
| 籼 | U+7C7C | 115 | 0x73 | s |
| 粂 | U+7C82 | 121 | 0x79 | y |
| 籨 | U+7C68 | 95 | 0x5F | _ |
| 籯 | U+7C6F | 102 | 0x66 | f |
| 簹 | U+7C39 | 48 | 0x30 | 0 |
| 类 | U+7C7B | 114 | 0x72 | r |
| 籨 | U+7C68 | 95 | 0x5F | _ |
| 籼 | U+7C7C | 115 | 0x73 | s |
| 簹 | U+7C39 | 48 | 0x30 | 0 |
| 籵 | U+7C75 | 108 | 0x6C | l |
| 籿 | U+7C7F | 118 | 0x76 | v |
| 簼 | U+7C3C | 51 | 0x33 | 3 |
| 粆 | U+7C86 | 125 | 0x7D | } |
| |
Solution
python read-only • copy allowed#!/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}