1.8 KiB
1.8 KiB
FvncLite
В раздатке есть клиент курьерского терминала FvncLiteCourier.apk. Нужно найти скрытую команду экспорта аудита. Начинаем с содержимого APK, который можно распаковать как ZIP.
Решение
В архиве интересуют два файла:
| Файл | Зачем нужен |
|---|---|
classes.dex |
Код сервиса и строковый ключ |
assets/fvnc_table.bin |
Зашифрованная таблица команд |
Открываем DEX в jadx, находим класс OpsService и метод decode(). Он побайтово XOR-ит таблицу повторяющимся ключом fvnc-lite-v4. Никаких дополнительных параметров устройства в расшифровке нет.
Повторяем алгоритм отдельно:
import json
import zipfile
with zipfile.ZipFile("public/FvncLiteCourier.apk") as apk:
blob = apk.read("assets/fvnc_table.bin")
key = b"fvnc-lite-v4"
plain = bytes(b ^ key[i % len(key)] for i, b in enumerate(blob))
commands = json.loads(plain)
print(commands["audit.export"])
Расшифрованный JSON описывает команды accessibility/ops-сервиса. Среди обычных операций находим audit.export, значение которой и есть флаг.
Флаг
caplag{accessibility_command_table_recovered}