niimbot-proto
All checks were successful
Build and deploy mmote.ru / Build-And-Deploy (push) Successful in 33s
All checks were successful
Build and deploy mmote.ru / Build-And-Deploy (push) Successful in 33s
This commit is contained in:
parent
14cf65bbf0
commit
6c579dafc3
@ -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>`.
|
||||||
|
|
||||||
Изучив пакеты и сверившись с другими открытыми данными, получилась такая структура пакета:
|
Изучив пакеты и сверившись с другими открытыми данными, получилась такая структура пакета:
|
||||||
@ -38,3 +41,42 @@ type: default
|
|||||||
* **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.
|
||||||
|
BIN
content/posts/niimbot-proto/protocol_tasks.png
Normal file
BIN
content/posts/niimbot-proto/protocol_tasks.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
Loading…
Reference in New Issue
Block a user