Перейти к содержанию

Дампы

Сырые данные, на которых построен реверс протокола. Устройство: GANSS ARDOR_Katana, USB 0C45:8006.

Дампы снимались в Windows 11 на виртуальной машине: Wireshark с компонентом usbpcap и штатный конфигуратор Ardor Katana&Wakizashi. Файлы имеют расширение *.pcapng.gz и открываются в Wireshark.

Состав

Все снимки лежат в gzip (*.pcapng.gz) и разбиты по темам. Прежние дампы собраны в _old/.

Корень

Файл Содержимое
static-key-light.pcapng.gz Раскраска одной клавиши: все красным, затем Esc зеленым, синим, выкл
factory-reset.pcapng.gz Сброс: макросы, переназначения, раскраска, подсветка
test_macro1.xml Тестовый макрос из штатного конфигуратора
usb-devices-output.txt Дескрипторы устройства Linux

color-modes

20 дампов, по одному на режим: 01-static.pcapng.gz … 19-shuttle.pcapng.gz и 20-off.pcapng.gz.

Каждый режим снят в полном объёме: включение, цвет R→G→B, спектр, минимальная и максимальная яркость, минимальная и максимальная скорость, направления и нажатия клавиш. После каждой настройки идёт поток живых кадров.

Что видно по самим дампам:

  • яркость перебиралась только по краям слайдера — 0x01 и 0x0f;
  • скорость — тоже по краям, у mountains встречается 0x04, у статики всегда вендорское 0x0a;
  • у flower и spectrum байт моно/спектра всегда 0x01: переключатель на них не влияет;
  • у реактивных режимов (keypress, fade, horizontal, vertical, splash) после смены скорости записаны нажатия Q → B → P.

Живые кадры снимались отдельно: каждый режим включался без сохранения во флеш на скорости 2 и яркости 15, затем 20 секунд читался поток 04 f5 — около 310 кадров с шагом примерно 0,064 секунды. Режимы снимались дважды: спектром и одним цветом. Исключение — keypress: его снимали с вендорской паузой 40 мс, и кадр приходил раз в 0,5 секунды.

keybind

Переназначается клавиша Meta (слот 0x5c), канал 04 11.

Файл Содержимое
1-default.pcapng.gz сброс клавиши в действие по умолчанию
2-mouse.pcapng.gz кнопки мыши: ЛКМ, СКМ, ПКМ, вперёд, назад
3-keys1.pcapng.gz комбинации букв: A, Shift+B, Ctrl+C, Alt+D, Win+E
3-keys2.pcapng.gz служебные клавиши: Esc, Tab, CapsLock, Backspace, Enter
3-keys3.pcapng.gz мультимедиа: Проводник, Калькулятор, Почта, Плеер
4-multimedia.pcapng.gz 18 мультимедиа и веб-функций
5-editor.pcapng.gz 9 функций текстового редактора
6-macro.pcapng.gz макрос: однократно, до останова, 1, 5 и 8 повторов

_old

Старые снимки, которых нет в новых дампах:

  • bright.pcapng — полная шкала яркости;
  • animation-speed.pcapng — полная шкала скорости;
  • perkey-modes.pcapng — per-key стриминг канала 04 20;
  • macros-create.pcapng — запись содержимого макроса;
  • macros-call.pcapng — исполнение макроса прошивкой;
  • keybind-editor.pcapng, keybind-hotkeys.pcapng, keybind-multimedia.pcapng — эталоны тестов;
  • test.xml, macros-create-test.xml — вендорские XML макросов.

Дампы, которые новый датасет переснял полностью (перебор режимов и цветов, переключение моно/спектра и направлений, кнопки мыши, привязка макроса), из архива удалены — за ними обращайтесь к истории git.

Формат .pcapng — сырой захват USB-трафика, .plain.txt — тот же трафик, разобранный в лог control-трансферов. Для новых дампов .plain.txt в репозитории не хранятся: их можно получить конвертером.

Реестр

Пути к дампам собраны в raw-data/katana-v1/manifest.json. Это единственное место, где записаны имена файлов.

Секция Содержимое
sets наборы дампов и их каталоги: color-modes, keybind, archive
refs файлы-эталоны для тестов и генераторов фикстур
from misc import dataset

dataset.set_dir("keybind")
dataset.ref("xml-macro1")

Добавили дамп — впишите его в sets или refs.

Как снять дамп

Все операции выполняются только на Windows.

  1. Установите Wireshark, при установке выберите компонент usbpcap.
  2. Установите фирменную утилиту настройки клавиатуры: ardor-gaming.com или dns-shop.ru.
  3. Запустите утилиту и подключите клавиатуру.
  4. Запустите Wireshark, выберите usbpcap и начните захват.
  5. Выполните нужные операции в утилите.
  6. Остановите захват и сохраните файл <имя>.pcapng.

В захват должна попасть хотя бы одна целая транзакция: begin → data-begin → payload → commit → save.

VirtualBox

После установки утилиты предоставьте виртуальной машине доступ к клавиатуре. Настройте общую папку, чтобы сохранять дампы на хост.

Доступ к клавиатуре в VirtualBox

Настройка USB-фильтра для клавиатуры в VirtualBox

Как конвертировать

Новые дампы лежат в gzip, поэтому сначала их нужно распаковать.

gzip -dc raw-data/katana-v1/color-modes/01-static.pcapng.gz > /tmp/01-static.pcapng
./misc/analyze_pcap.py /tmp/01-static.pcapng /tmp/01-static.plain.txt

Без второго аргумента парсер пишет результат в /tmp/tx_log.txt.

Прежние дампы из _old/ распаковывать не нужно.

./misc/analyze_pcap.py raw-data/katana-v1/_old/bright.pcapng /tmp/bright.plain.txt

Формат строки лога:

SET #N if=I t=T rid=R len=L: <hex-байты>
  • if — номер USB-интерфейса, конфиг-канал имеет if=0;
  • t — 21 для SET_REPORT, a1 для GET_REPORT;
  • rid — report id, у всех команд 00;
  • пакеты GET склеиваются по irpid: setup и data приходят разными записями, парсер сопоставляет их автоматически.

Дескрипторы

usb-devices | grep -B 2 -A 8 'Vendor=0c45' > usb-devices-output.txt

В выводе видно два HID-интерфейса: boot keyboard и mouse/consumer. Оба под usbhid, interrupt-эндпоинты 0x81 и 0x82. Конфигурационный канал — feature-репорты интерфейса 0.

Замечания

  • Новые дампы систематичны: в color-modes/ на каждый режим приходится полный набор параметров и поток кадров.
  • Чего нет в новых дампах: полных шкал яркости и скорости, стриминга 04 20, записи и исполнения реального макроса — за этим обращайтесь к _old/.
  • Приложение датасет не читает: генератор кладёт нужные выжимки в его фикстуры.

Расшифровка протокола по этим дампам — в разделе Протокол.