# Дампы GANSS ARDOR_Katana (katana-v1) Сырые данные, на которых построен реверс протокола (см. [PROTOCOL.md](PROTOCOL.md)). Устройство: клавиатура GANSS ARDOR_Katana, USB `0C45:8006` (Sonix SN32). ## Состав | Файл | Что это | | ---------------------------------------------------------- | ----------------------------------------------------------------------------------- | | `color-presets.pcapng` / `.plain.txt` | выбор цветовых пресетов в фирменной утилите (статика, RGB-цвета) | | `bright.pcapng` / `.plain.txt` | слайдер яркости (все 15 позиций, диапазон 0x01–0x0F) | | `animation-speed.pcapng` / `.plain.txt` | слайдер скорости анимаций (диапазон 0x02–0x0F) | | `color-modes.pcapng` / `.plain.txt` | перебор всех режимов освещения 1–19 + off | | `color-toggle-rainbow.pcapng` / `.plain.txt` | переключение статики моно/радуга (байт [11]) | | `color-toggle-direction-north-south.pcapng` / `.plain.txt` | направление водопада ↑/↓ (байт [11]) | | `color-toggle-direction-east-west.pcapng` | направление бегущей строки ←/→ (байт [11], без .plain.txt) | | `keybind-mouse-buttons.pcapng` / `.plain.txt` | переназначение LCtrl на 5 кнопок мыши по очереди + возврат на default (канал 04 11) | | `keybind-editor.pcapng` / `.plain.txt` | переназначение Caps на 9 функций текстового редактора по очереди (канал 04 11, записи `[02 01 код 00]`) | | `keybind-multimedia.pcapng` / `.plain.txt` | переназначение Caps на 18 мультимедиа/веб-функций по очереди (канал 04 11, записи `[03 usage_le 00]`) | | `keybind-hotkeys.pcapng` / `.plain.txt` | переназначение Caps на 10 горячих клавиш по очереди: A, Shift+B, Ctrl+C, Alt+D, Meta+E, Esc, F1, Num1, Fn, «Мой компьютер» (канал 04 11, записи `[02 маска код 00]` + одна мультимедиа) | | `macros-create.pcapng` / `.plain.txt` | запись содержимого двух макросов (канал 04 19) | | `macros-create-test.xml`, `test.xml` | вендорский XML тех же макросов (экспорт утилиты) | | `macros-set.pcapng` / `.plain.txt` | привязка макроса к клавише, однократно (канал 04 11, запись `[06, ...]`) | | `macros-modes.pcapng` / `.plain.txt` | привязка макроса: однократно / N повторов / до останова (канал 04 11) | | `macros-call.pcapng` / `.plain.txt` | нажатие клавиши с макросом: control-канал чист, отработка идёт через interrupt IN | | `usb-devices-output.txt` | дескрипторы устройства Linux (вывод `usb-devices`) | `.pcapng` — сырой захват USB-трафика; `.plain.txt` — тот же трафик, распарсенный в лог control-трансферов SET/GET_REPORT. ## Как получить pcapng (Windows + USBPcap) Все операции только на Windows. 1. Установить [Wireshark](https://www.wireshark.org/download.html), при установке выбрать `usbpcap`. 2. Установить фирменную утилиту для клавиатуры: - [ardor-gaming.com](https://ardor-gaming.com/drivers/29524343/katana/) - [dns-shop.ru](https://www.dns-shop.ru/product/driver/3c23900ab1b2ed20/klaviatura-provodnaa-besprovodnaa-ardor-gaming-katana-cvet-cernyj/) 3. Запустить утилиту, подключить клавиатуру. 4. Запустить Wireshark, внизу выбрать `usbpcap` и начать захват. 5. Произвести нужные операции в утилите настройки. 6. Остановить захват в Wireshark и сохранить файл `<имя>.pcapng`. Захват должен содержать весь трафик сессий: begin → data-begin → payload → commit → save. Полезно сделать в начале захвата одно полное действие, чтобы в дамп попала 1 и более целая транзакция. ### При работе в VirtualBox После установки и запуска фирменной утилиты предоставьте машине доступ к клавиатуре. ![](./vbox-usb.webp) Настройте общую папку, чтобы в неё сохранять дампы из виртуальной машины на хост. ## Как конвертировать pcapng → plain.txt На Linux, из корня репозитория: ``` python3 analyze_pcap.py raw-data/katana-v1/color-modes.pcapng raw-data/katana-v1/color-modes.plain.txt ``` Формат строки лога: ``` SET #N if=I t=T rid=R len=L: ``` - `if` — номер USB-интерфейса (конфиг-канал = `if=0`); - `t` — bmRequestType: `21` = SET_REPORT (host→device), `a1` = GET_REPORT (device→host); - `rid` — report id (все команды идут с `rid=00`); - GET-пакеты склеиваются по `irpid`: setup и data приходят разными записями, парсер сопоставляет их автоматически. ## Как узнать дескрипторы клавиатуры На Linux с подключённой клавиатурой: ``` usb-devices | grep -B 2 -A 8 'Vendor=0c45' > usb-devices-output.txt ``` В дампе видно: 2 HID-интерфейса (boot keyboard и mouse/consumer), оба под `usbhid`, interrupt-эндпоинты `0x81`/`0x82`. Конфигурационный канал — feature-репорты интерфейса 0 (эндпоинты управления, не interrupt). В `lsusb` устройство подписывается «Microdia Dual Mode Camera (8006 VGA)» — это норма: ID `0c45:8006` чипа Sonix SN32 используется и вебкамерами, и клавиатурами, а база `usb.ids` знает за ним только камеру. Подробнее — в [INSTALL.md](INSTALL.md) → «Проверка устройства». ## Замечания - Имена файлов оригинальные, включая опечатку `color-pesets.pcapng` (содержимое соответствует color-presets). - Расшифровка протокола по этим дампам — в [PROTOCOL.md](PROTOCOL.md), парсер — `analyze_pcap.py`, рабочая утилита — `katana.py` (обзор — в [SCRIPTS.md](SCRIPTS.md)).