niimbot-proto
All checks were successful
Build and deploy mmote.ru / Build-And-Deploy (push) Successful in 33s

This commit is contained in:
MultiMote 2024-07-25 21:35:25 +03:00
parent 14cf65bbf0
commit 6c579dafc3
2 changed files with 44 additions and 2 deletions

View File

@ -16,7 +16,7 @@ tags:
categories: categories:
- reverse-engineering - reverse-engineering
featured_image: miniature.jpg featured_image: miniature.jpg
lastmod: 2024-07-25T21:04:37+03:00 lastmod: 2024-07-25T21:34:50+03:00
telegram_entry_id: "" telegram_entry_id: ""
type: default type: default
--- ---
@ -25,6 +25,9 @@ type: default
<!--more--> <!--more-->
## Структура пакета
Сейчас в моём владении два принтера D110 и B1.
Вооружившись Wireshark и android телефоном, снял дампы обмена данными с принтером по bluetooth. Для этого нужно было включить опцию "Bluetooth HCI Snoop Log" в настройках разработчика, а потом на компьютере после печати запустить `adb bugreport <filename>`. Вооружившись Wireshark и android телефоном, снял дампы обмена данными с принтером по bluetooth. Для этого нужно было включить опцию "Bluetooth HCI Snoop Log" в настройках разработчика, а потом на компьютере после печати запустить `adb bugreport <filename>`.
Изучив пакеты и сверившись с другими открытыми данными, получилась такая структура пакета: Изучив пакеты и сверившись с другими открытыми данными, получилась такая структура пакета:
@ -37,4 +40,43 @@ type: default
* **Data length** количество байтов данных, идущих далее. * **Data length** количество байтов данных, идущих далее.
* **Data** непосредственно данные в количестве **Data length**. * **Data** непосредственно данные в количестве **Data length**.
* **Checksum** вычисляется с помощью XOR всех байтов от **Command** до последнего байта **Data**. * **Checksum** вычисляется с помощью XOR всех байтов от **Command** до последнего байта **Data**.
* **Tail** всегда 2 байта `0xAA` `0xAA`. * **Tail** всегда 2 байта `0xAA` `0xAA`.
## Важно знать
### Протокол обмена данным варьируется между разными моделями
В основном это касается набора пакетов при непосредственно печати.
### Протокол обмена данными варьируется даже в пределах ревизий одной модели
Это можно увидеть в декомпилированном коде приложения:
![](protocol_tasks.png)
### Принтер искусственно занижает плотность печати при использовании неправильной или отсутствующей RFID метке
Вот тут довольно интересно. Принтеры и приложения ведут себя по разному.
**Метки нет вообще**:
* **Niimbot Android**
- Этикетку создать невозможно в принципе.
* **Niimbot Windows**
- D110 - не поддерживается, хоть и может печатать по usb.
- B1 - печатать можно, игнорируя предупреждения, плотность очень низкая.
* **Сторонние проекты**
- D110 - печатает без проблем с нужной плотностью.
- B1 - печатает с низкой плотностью.
**Метка есть, но от бумаги размером, который не поддерживается принтером**:
* **Niimbot Android**:
- D110 - печатать можно, игнорируя предупреждения, плотность очень низкая (подлость самого приложения).
- B1 - аналогично с D110.
* **Niimbot Windows**
- D110 - печатать можно, игнорируя предупреждения, плотность очень низкая.
- B1 - печатать можно, игнорируя предупреждения, плотность очень низкая.
* **Сторонние проекты**
- D110 - печатает без проблем с нужной плотностью.
- B1 - аналогично с D110.

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB