Mobile: writeup
Mobile
| Category | Stegano |
| Difficulty | Easy |
| Cipher | Multi-tap Phone Keypad |
| Flag | flag{CELLPHONE} |
Recon
После извлечения мобильных данных поисковик и следователь получили эту последовательность чисел. Может быть, номер телефона?
Единственный артефакт задачи:
222-33-555-555-7-44-666-66-33
Ключевые наблюдения:
- цифры только от
2до7— отсутствуют0,1,8,9 - каждая группа содержит одну и ту же цифру, повторяющуюся 1–4 раза
- групп 9 — нетипично для любого стандартного телефонного номера
Гипотеза «телефонный номер» рушится сразу: реальные номера не содержат групп из повторяющихся одинаковых цифр. Название задачи — Mobile — прямо указывает на контекст мобильного устройства.
На старых кнопочных телефонах ввод текста называется multi-tap: каждая кнопка отвечает за несколько букв, количество нажатий выбирает нужную.
Multi-Tap Decoding
Multi-tap — метод ввода текста на кнопочной клавиатуре телефона: нажатие кнопки N раз выбирает N-ю букву, назначенную этой кнопке.
Стандартная раскладка:
| Кнопка | Буквы |
|---|---|
2 | A B C |
3 | D E F |
4 | G H I |
5 | J K L |
6 | M N O |
7 | P Q R S |
8 | T U V |
9 | W X Y Z |
Пример первого шага вручную:
222 → кнопка 2, нажата 3 раза → 3-я буква "ABC" → C
Decryption
Берём группы из шифротекста 222-33-555-555-7-44-666-66-33 по одной:
| # | Группа | Кнопка | Нажатий | Буквы кнопки | Буква |
|---|---|---|---|---|---|
| 1 | 222 | 2 | 3 | ABC | C |
| 2 | 33 | 3 | 2 | DEF | E |
| 3 | 555 | 5 | 3 | JKL | L |
| 4 | 555 | 5 | 3 | JKL | L |
| 5 | 7 | 7 | 1 | PQRS | P |
| 6 | 44 | 4 | 2 | GHI | H |
| 7 | 666 | 6 | 3 | MNO | O |
| 8 | 66 | 6 | 2 | MNO | N |
| 9 | 33 | 3 | 2 | DEF | E |
Итог: C E L L P H O N E → CELLPHONE
Automation
#!/usr/bin/env python3
SEQ = "222-33-555-555-7-44-666-66-33"
# Раскладка кнопочного телефона
KEYS = {
"2": "ABC",
"3": "DEF",
"4": "GHI",
"5": "JKL",
"6": "MNO",
"7": "PQRS",
"8": "TUV",
"9": "WXYZ",
}
groups = SEQ.split("-")
# group[0] — цифра кнопки; len(group) — количество нажатий = индекс буквы
result = "".join(KEYS[g[0]][len(g) - 1] for g in groups)
print(f"flag{{{result}}}")
python3 solve.py
# flag{CELLPHONE}
Key Takeaways
Структура данных важнее содержимого. Перед расшифровкой смотри на паттерн: одинаковые цифры в группах и диапазон 2–7 мгновенно исключают «номер телефона» и указывают на посимвольное кодирование.
Multi-tap. Метод ввода текста на кнопочной клавиатуре: буква кодируется номером кнопки и количеством нажатий. В CTF встречается в задачах Stegano, Misc и Forensics при анализе мобильных артефактов.
Ложный след — «номер телефона». Цифровой формат и слово Mobile провоцируют эту гипотезу, но она рушится на первой же проверке: реальный номер не содержит групп из повторяющихся цифр. Ложный след тем опаснее, чем очевиднее он кажется с первого взгляда.
