Files
ardor-katana-linux/docs/RAW-DATA.md
T
2026-09-06 01:06:40 +08:00

91 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Дампы 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: <hex-байты>
```
- `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)).