Пользователь купил Creative Sound Blaster Katana V2X — звуковую панель, которая должна была заменить старые колонки Logitech. В ней оказался USB-порт: через него можно не только передавать звук, но и настраивать эквалайзер и LED-подсветку. Проблема в том, что для этого нужна фирменная утилита Creative App, которая работает только под Windows. Использовать её в виртуальной машине было неудобно, так что автор решил разобраться с протоколом сам.
Он начал с декомпиляции. Установочная папка и множество DLL сразу выдали, что это .NET-приложение — автор загрузил его в dnSpy. Но большая часть модулей оказалась обфусцирована. Поэтому он переключился на USB-трафик, записав всё через Wireshark и USBPcap. Первым делом приложение предложило обновить прошивку — автор дал согласие и заметил, что полезная нагрузка передаётся открытым текстом. Затем он методично прошёлся по всем настройкам, сделал около сотни захватов и восстановил логику команд.
Оказалось, что устройство общается через CDC ACM serial и видно в Linux как /dev/ttyACM*. Все proprietary-команды используют простой фрейм: 5A [cmd] [len] [payload]. Но прежде чем слать команды, нужно пройти challenge-response аутентификацию. Автор нашёл бинарную DLL CTCDC.dll, открыл её в Ghidra и выяснил, что применяется необычная схема на базе AES-256-GCM: ключ собирается из статичных данных DLL и USB PID устройства. Зачем компания Creative сделала такое шифрование вместо обычного HMAC — осталось загадкой.
Разобравшись с аутентификацией, автор написал на Rust библиотеку и CLI-утилиту — v2x-ctl (или просто v2x). Инструмент позволяет управлять Katana V2X из Linux. Он проверен на последней версии прошивки 1.3.230619.1820, но может работать и с другими Sound Blaster, если поменять ключ и идентификаторы.
Параллельно автор извлёк прошивку из дампа USB-трафика. Пакеты строились по схеме: стартовый маркер 5B 98, длина, команда, счётчик и размер данных. Извлечённый файл оказался контейнером формата CIFF (Creative Image File Format). Он состоит из секций: CINF (информация об устройстве, строка "Creative MarvelX One"), CIN2 (версия), DATA (сами прошивки) и CHK2 (SHA-256 контрольная сумма). Внутри нашлись загрузчик ARM32 (FBOOT), основная прошивка на FreeRTOS (FMAIN), аудиопромпты в Opus и прошивка 8051-микроконтроллера — автор планирует изучать их дальше.