Skip to main content

Mobile: writeup

Mobile

CategoryStegano
DifficultyEasy
CipherMulti-tap Phone Keypad
Flagflag{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-ю букву, назначенную этой кнопке.

Стандартная раскладка:

КнопкаБуквы
2A B C
3D E F
4G H I
5J K L
6M N O
7P Q R S
8T U V
9W X Y Z

Пример первого шага вручную:

222  →  кнопка 2, нажата 3 раза  →  3-я буква "ABC"  →  C

Decryption

Берём группы из шифротекста 222-33-555-555-7-44-666-66-33 по одной:

#ГруппаКнопкаНажатийБуквы кнопкиБуква
122223ABCC
23332DEFE
355553JKLL
455553JKLL
5771PQRSP
64442GHIH
766663MNOO
86662MNON
93332DEFE

Итог: C E L L P H O N ECELLPHONE


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

  1. Структура данных важнее содержимого. Перед расшифровкой смотри на паттерн: одинаковые цифры в группах и диапазон 2–7 мгновенно исключают «номер телефона» и указывают на посимвольное кодирование.

  2. Multi-tap. Метод ввода текста на кнопочной клавиатуре: буква кодируется номером кнопки и количеством нажатий. В CTF встречается в задачах Stegano, Misc и Forensics при анализе мобильных артефактов.

  3. Ложный след — «номер телефона». Цифровой формат и слово Mobile провоцируют эту гипотезу, но она рушится на первой же проверке: реальный номер не содержит групп из повторяющихся цифр. Ложный след тем опаснее, чем очевиднее он кажется с первого взгляда.