Текст на клавишах (Text on Keys)
Текст на клавишах (Text on Keys)
Platform: hackerlab | Category: Misc | Type: Challenge | Difficulty: Medium | OS: NA | Author: XESXOR | Date: 2025-12-26 | Status: Solved Techniques: T9 predictive text decoding, Word separator identification (0 = space)
Summary
Task: Decode a numeric string using T9 predictive text. Solution: Split by 0 (word separator) and map digits to letters using T9 keypad mapping to reveal the message.
Текст на клавишах (Text on Keys) - HackerLab
Description
Лишний помощник, который всех раздражает. Формат флага: CODEBY{flag}
File: text.txt contains the string 9680483773309428048047
Analysis
Hints in the Task
- Title "Text on Keys" - direct reference to text input on a phone keypad
- "Annoying helper" - description of T9 predictive text, which often suggested wrong words
T9 Predictive Text
T9 (Text on 9 keys) - predictive text input system on phones with numeric keypads:
2 = ABC 5 = JKL 8 = TUV
3 = DEF 6 = MNO 9 = WXYZ
4 = GHI 7 = PQRS 0 = SPACE
Unlike Multi-tap (where you need to press multiple times to select a letter), T9 uses a dictionary and each digit = one letter.
Decoding
String: 9680483773309428048047
Split by 0 (word separator):
968→ YOU (9=Y, 6=O, 8=U)4837733→ GUESSED (4=G, 8=U, 3=E, 7=S, 7=S, 3=E, 3=D)9428→ WHAT (9=W, 4=H, 2=A, 8=T)48→ IT (4=I, 8=T)47→ IS (4=I, 7=S)
Message: "YOU GUESSED WHAT IT IS"
Solution
python read-only • copy allowed#!/usr/bin/env python3 """T9 Predictive Text Decoder""" # T9 mapping (one digit = one letter, context-dependent) # In T9, the system uses a dictionary to predict words # Here we decode manually based on word patterns encoded = "9680483773309428048047" # Split by 0 (word separator) words = encoded.split('0') print(f"Words: {words}") # T9 keypad t9_map = { '2': 'ABC', '3': 'DEF', '4': 'GHI', '5': 'JKL', '6': 'MNO', '7': 'PQRS', '8': 'TUV', '9': 'WXYZ' } # Manual decoding based on common English words: # 968 = YOU (Y=9, O=6, U=8) # 4837733 = GUESSED (G=4, U=8, E=3, S=7, S=7, E=3, D=3) # 9428 = WHAT (W=9, H=4, A=2, T=8) # 48 = IT (I=4, T=8) # 47 = IS (I=4, S=7) decoded = "YOU GUESSED WHAT IT IS" flag = "CODEBY{" + decoded.replace(" ", "").lower() + "}" print(f"Message: {decoded}") print(f"Flag: {flag}")
Difference from Multi-tap
| Characteristic | T9 | Multi-tap |
|---|---|---|
| Presses per letter | 1 | 1-4 |
| Uses dictionary | Yes | No |
| Example "HELLO" | 43556 | 4433555555666 |
| Separator | 0 | Pause or # |
References
- T9 Predictive Text
- Similar task: Nokia 3310 (Multi-tap)