Добрый Самурай

Протокол Орион Болид

102 сообщения в этой теме

ferrum    14

С CRC проблемы действительно есть, грабли не только со значениями CRC 77, но и с 117, 137, 43, 215, 232

И что с этим делать , проксоренным...

ничего, это хеш хеша. Можно просто запоминать, но это имхо не спортивно. Это не протокол, добраться до протокола можно расшифровав тело посылки(как не знаю пока).

Вот это и есть "голая правда" протокола Болид!

Вынужден огорчить, это не она )

Изменено пользователем ferrum

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
nekto    1
там ответ надо формировать соответствующий, надо вручную сконфигурить в pprog' е. О какой таблице речь? CRC вычисляется программно, в запросах от контроллера несоответствий вычисленного и принятого замечено не было.

Ничего там не надо формировать. Ответ у всех приборов прост - тип, версия. Далее переходит в разряд "постояльцев" (плюсуется 0х80) и идут обмены на присутствие и подмену.

CRC , повторяю, Болид расчитывает табличным способом, а не полиномом. Вы взяли полином с весом 0х18 - это Даласовский полином. CRC8 кодов ключей расчитывайте им (хотя возможно Болид и тут подлянку кинул) .

Табличный способ быстрее, особенно на слабых контроллерах.

С CRC проблемы действительно есть, грабли не только со значениями CRC 77, но и с 117, 137, 43, 215, 232

Проблеммы будут с любым сочетанием байтов, при условии попадания на подводный камень в таблице. Используйте табличный способ подсчета CRC8.

Изменено пользователем nekto

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
КЭС    906

Ответ у всех приборов прост - тип, версия. Далее переходит в разряд "постояльцев" (плюсуется 0х80) и идут обмены на присутствие и подмену.

Это я знаю, пробовал-получается. Просто еще не сделал в своем эмуляторе (пока). Насчет CRC наверное вы правы, я просто наобум попробовал этот алгоритм, вроде получилось. :yes:

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

Может сообща что-то и расколупаем. :yes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ferrum    14

ага, 2 направление колупания есть, корректный CRC и шифрованные команды\данные. Кстати протокол один и шифрованный и нешифрованный, и там все понятно интуитивно. Понял это когда научился ставить\снимать ШС, управлять состоянием реле сигнала-20. Команды\данные выглядят красиво, а не "1;0;254;1;255;254;"

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
КЭС    906

Команды красиво выглядят только в посылках от программ типа шлейфес, апрог и т.п. Посылки от контроллера С2000 не такие красивые, как я уже говорил, один и тот же запрос присутствия не похож на предыдущий.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ferrum    14

Команды красиво выглядят только в посылках от программ типа шлейфес, апрог и т.п. Посылки от контроллера С2000 не такие красивые, как я уже говорил, один и тот же запрос присутствия не похож на предыдущий.

ты ведь не видел их, потомучто они зашифрованы. Разные потому-что, ключ меняется с каждым запросом(предположительно инкрементируется но не факт).

Уверяю тебя они красивые. И причем здесь программы? Скажи какая программа позволяет управлять ШС и реле?Только оперативная задача Ориона и ядро Ориона-Про, дак и то в шифрованном виде. Почему я и говорю что протокол один и он красивый. Разработчики же не мазохисты. Шифрование лишь слой, сетевой уровень. Один раз написали шифратор-дешифратор и забыли, а протокол красивый и интуитивно понятный вроде того что ты назвал ребусом.

Изменено пользователем ferrum

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
КЭС    906

Своими словами я хотел сказать, что команды, указанные в посте #18- лишь частный случай, они УЖЕ зашифрованы, т.е. в таком виде их не встретить в посылках от С2000.

Похоже, мы не совсем понимаем друг друга :bye:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ferrum    14

Отчего же, понимаем. И почему не встретить, встретить. Ты просто подвергни дешифрации то что говорит С2000(пока мы этого неумеем). Сам подумай зачем разные протоколы плодить( для программ, для прииборов), он один. Если б они были разные, зачем в протоколе "для программ" реализовать функции, которые не одна из болидовских программ не использует? А ведь в МК память программ ограничена.

Все просто :

- Старший бит адреса включен - подключается слой дешифрации, с которого данные приходят в декодирование команд\данных аля "Че за команда пришла";

- Старший бит адреса выключен - тело пакета уходит в декодирование команд\данных аля "Че за команда пришла" сразу, минуя дешифрацию

они УЖЕ зашифрованы,

Что там зашифрованного? Есть Коды комманд, есть передаваемые параметры. Номер ШС 10 - значит в параметре команды постановки стоит число 10, номер реле 3 - значит параметр команды управления реле "3"

Условно в 4-х байтном теле пакета, 2 байт- команды, 2 байта параметров

Некоторые известные мне команды:

1-Поиск прибора

5-Чтение конфигурации

9-Запись конфигурации

13 - Запрос типа\версии

15 - Установка адреса

19 - Управление ШС

21 - Управление Реле

25 - Запрос состояния ШС

27 - Запрос АЦП

Ответ на команду почти всегда команда+1, тоесть всегда четное число

Изменено пользователем ferrum

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
nekto    1

Некоторые известные мне команды:

1-Поиск прибора

5-Чтение конфигурации

9-Запись конфигурации

13 - Запрос типа\версии

15 - Установка адреса

19 - Управление ШС

21 - Управление Реле

25 - Запрос состояния ШС

27 - Запрос АЦП

Ну это частный случай, скорее для Сигнал-20.

Есть команды и по 7,8 и более байт.

К примеру можно послать команду длиной 8 байт на запрос одного шлейфа, а можно послать команду длиной 30 байт на запрос состояния нескольких шлейфов.

На счет старшего бита адреса - после его присвоения, пульт исключает данный адрес из поиска приборов (который он делает постоянно), Работать продолжает с уже найденным со смещением 80H.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ferrum    14

Ну это частный случай, скорее для Сигнал-20.

Есть команды и по 7,8 и более байт.

К примеру можно послать команду длиной 8 байт на запрос одного шлейфа, а можно послать команду длиной 30 байт на запрос состояния нескольких шлейфов.

На счет старшего бита адреса - после его присвоения, пульт исключает данный адрес из поиска приборов (который он делает постоянно), Работать продолжает с уже найденным со смещением 80H.

Уже не частный, сейчас работаю С2000-БИ, многие команды подходят, естественно не все, хотябы потомучто у БИ нет АЦП,ШС,Реле.

Насчет бита все просто: Бит - признак зашифрованности пакета и все.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
nekto    1

Уже не частный, сейчас работаю С2000-БИ, многие команды подходят, естественно не все, хотябы потомучто у БИ нет АЦП,ШС,Реле.

Насчет бита все просто: Бит - признак зашифрованности пакета и все.

Ну многие подходят конечно))) , например - сброс прибора - [ADDR][06h][00h][17h][00h][00h][CRC8]

А точно шифрован? Можете проверить запрос\ответ шлейфа с упрога и пульта , и сравнить их?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ferrum    14

Можно преверить, но долго. Во всяком случае не сейчас. На 99,99% Запроссы пульта и Shleifes будут разные, т.к.пульт шифрует, а Shleifes нет. Но истинное содержание пакетов одинаковое.

Да так видно что все красиво.

В твоем формате ребуса:

[ADDR][06h][00h][15h][01h][01h][CRC8] -Включить реле №1

[ADDR][06h][00h][15h][01h][00h][CRC8] -Выключить реле №1

[ADDR][06h][00h][15h][01h][03h][CRC8] -Включить реле №1 на время

[ADDR][06h][00h][15h][02h][01h][CRC8] -Включить реле №2

[ADDR][06h][00h][15h][03h][01h][CRC8] -Включить реле №3

3 -байт номер реле

4- байт действие 0 -выкл 1-вкл 3-вкл на время ,... всякие там мигания по маске итд

Тоже самое с постановкой на охрану, только там в параметра номер ШС и действие Снять\взять.. и комманда соответственно не 0х15h а 0х13h

Изменено пользователем ferrum

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
nekto    1

[ADDR][06h][00h][15h][01h][03h][CRC8] -Включить реле №1 на время

А где время то?)) - эта команда = вызову ранее запрограммированной тактики управления из памяти прибора?

И попробуй дать теперь такую команду Сигналу-20 - [ADDR+80h][06h][00h][15h][01h][01h][CRC8]

Изменено пользователем nekto

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ferrum    14

Как где время, в настройках реле сигнала. Тактика программируется только для локального управления сосоянием ШС, при этом централизованное управление игнорируется.

Попробывал твой пакет, удивительно, но управляет)

Вот оба обмена: (В десятичном и шеснадцатитричном)

Порт COM2 открыт

1 Запрос: 1 6 0 21 1 1 78

Ответ : 1 5 22 1 1 77

2 Запрос: 129 6 0 21 1 1 164

Ответ : 129 5 22 1 1 134

Порт COM2 открыт

1 Запрос: 01 06 00 15 01 01 4E

Ответ : 01 05 16 01 01 4D

2 Запрос: 81 06 00 15 01 01 A4

Ответ : 81 05 16 01 01 86

Изменено пользователем ferrum

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
nekto    1

Порт COM2 открыт

1 Запрос: 01 06 00 15 01 01 4E

Ответ : 01 05 16 01 01 4D

2 Запрос: 81 06 00 15 01 01 A4

Ответ : 81 05 16 01 01 86

Ну и где ваша шифрация?)))

Старший бит не для этого)

Плюс еще у пульта и программы команды немного отличаются, но функция остается прежней.

Отличие скорее всего нужно, чтоб прибор знал, кто им управляет, пульт или программа.

Вероятно это учитывается для синхронизации данных и времени и еще чего-нить..

  • Не одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
КЭС    906

Мужики! Пока вы не разбежались (уж очень долго эта ветка была мертвой), скажите, у кого- нибудь мой эмулятор работает или только у меня (есть опасения, что до первой смены конфига С2000- проверю скоро)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ferrum    14

Ну и где ваша шифрация?)))

Старший бит не для этого)

Здесь согласен , что моя гипотеза идет лесом

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ferrum    14

Мужики! Пока вы не разбежались (уж очень долго эта ветка была мертвой), скажите, у кого- нибудь мой эмулятор работает или только у меня (есть опасения, что до первой смены конфига С2000- проверю скоро)?

У меня не работал, но мне это не очень интересно было, интересен был исходник

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
nekto    1

В исходнике ничего интересного нет)), програмлю на асме, все остальное идет лесом)), хотя работу программы наблюдал в отладчике - зациклилась она на приемке одной команды и умерла)

(есть опасения, что до первой смены конфига С2000- проверю скоро)?

А вы не подгоняйте под ответ ;) , одну ошибку уже вам указали - CRC8

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ferrum    14

CRCTable : array [0..255] of byte = (
0,94,188,226,97,63,221,131,194,156,126,32,163,253,31,65,
157,195,33,127,252,162,64,30,95,1,227,189,62,96,130,220,
35,125,159,193,66,28,254,160,225,191,93,3,128,222,60,98,
190,224,2,92,223,129,99,61,124,34,192,158,29,67,161,255,
70,24,250,164,39,121,155,197,132,218,56,102,229,187,89,7,
219,133,103,57,186,228,6,88,25,71,165,251,120,38,196,154,
101,59,217,135,4,90,184,230,167,249,27,69,198,152,122,36,
248,166,68,26,153,199,37,123,58,100,134,216,91,5,231,185,
140,210,48,110,237,179,81,15,78,16,242,172,47,113,147,205,
17,79,173,243,112,46,204,146,211,141,111,49,178,236,14,80,
175,241,19,77,206,144,114,44,109,51,209,143,12,82,176,238,
50,108,142,208,83,13,239,177,240,174,76,18,145,207,45,115,
202,148,118,40,171,245,23,73,8,86,180,234,105,55,213,139,
87,9,235,181,54,104,138,212,149,203,41,119,244,170,72,22,
233,183,85,11,136,214,52,106,43,117,151,201,74,20,246,168,
116,42,200,150,21,75,169,247,182,232,10,84,215,137,107,53);

KeyCode: array[1..8] of byte;
KeyCode[ 8 ] := 0;

For j := 1 to 7 do
KeyCode[ 8 ] := CRCTable[ KeyCode[ 8 ] xor KeyCode[ j ] ];

Оно чели?

Изменено пользователем ferrum
  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
nekto    1

Оно чели?

Ну там камень один, где мне лень сравнивать, вот Болидовская.

00h,5Eh,0BCh,0E2h,61h,3Fh,0DDh,83h,0C2h,9Ch,7Eh,20h,0A3h,0FDh,1Fh,41h,9Dh,0C3h,21h,7Fh,0FCh,0A2h,40h,1Eh,5Fh,01h,0E3h,0BDh,3Eh,60h,82h,0DCh,23h,7Dh,9Fh,0C1h,42h,1Ch,0FEh,0A0h,0E1h,0BFh,5Dh,03h,80h,0DEh,3Ch,62h,0BEh,0E0h,02h,5Ch,0DFh,81h,63h,3Dh,7Ch,22h,0C0h,9Eh,1Dh,43h,0A1h,0FFh,46h,18h,0FAh,0A4h,27h,79h,9Bh,0C5h,84h,0DAh,38h,66h,0E5h,0BBh,59h,07h,0DBh,85h,67h,39h,0BAh,0E4h,06h,58h,19h,47h,0A5h,0FBh,78h,26h,0C4h,9Ah,65h,3Bh,0D9h,87h,04h,5Ah,0B8h,0E6h,0A7h,0F9h,1Bh,45h,0C6h,98h,7Ah,24h,0F8h,0A6h,44h,1Ah,99h,0C7h,25h,7Bh,3Ah,64h,86h,0D8h,5Bh,05h,0E7h,0B9h,8Ch,0D2h,30h,6Eh,0EDh,0B3h,51h,0Fh,4Eh,10h,0F2h,0ACh,2Fh,71h,93h,0CDh,11h,4Fh,0ADh,0F3h,70h,2Eh,0CCh,92h,0D3h,8Dh,6Fh,31h,0B2h,0ECh,0Eh,50h,0AFh,0F1h,13h,4Dh,0CEh,90h,72h,2Ch,6Dh,33h,0D1h,8Fh,0Ch,52h,0B0h,0EEh,32h,6Ch,8Eh,0D0h,53h,0Dh,0EFh,0B1h,0F0h,0AEh,4Ch,12h,91h,0CFh,2Dh,73h,0CAh,94h,76h,28h,0ABh,0F5h,17h,49h,08h,56h,0B4h,0EAh,69h,37h,0D5h,8Bh,57h,09h,0EBh,0B5h,36h,68h,8Ah,0D4h,95h,0CBh,29h,77h,0F4h,0AAh,48h,16h,0E9h,0B7h,55h,0Bh,88h,0D6h,34h,6Ah,2Bh,75h,97h,0C9h,4Ah,14h,0F6h,0A8h,74h,2Ah,0C8h,96h,15h,4Bh,0A9h,0F7h,0B6h,0FCh,0Ah,54h,0D7h,89h,6Bh,35h,00h

  • Одобряю 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ferrum    14

Дизассемблировал болидовскую прогу?

Спасибо.

Я так понимаю последний 00h вне таблицы?

Обсчитал пару пакетов, CRC совпадает с тем что выдает прибор. Завтра на железе попробую, дома нет приборов. Хотя я также посчитал и по той таблице что привел сам, там тоже совпал, но я всего пару пакетов попробывал, поэтому возможно "камни" не вылезли

Изменено пользователем ferrum

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
nekto    1

Дизассемблировал болидовскую прогу?

Спасибо.

Я так понимаю последний 00h вне таблицы?

Обсчитал пару пакетов, CRC совпадает с тем что выдает прибор. Завтра на железе попробую, дома нет приборов. Хотя я также посчитал и по той таблице что привел сам, там тоже совпал, но я всего пару пакетов попробывал, поэтому возможно "камни" не вылезли

Да, последний на всяк случай)

Кстати прибор определяет кто его хозяин, пульт или компьютер и отвечает разными командами. Признак пульта - 0FFh

Пробуй))

[ADDR][06h][ANY][01h][ANY][000h][CRC8] - компьтер ведущий

[ADDR][06h][ANY][01h][ANY][0FFh][CRC8] - пульт ведущий

Разница в длине ответа, прибор пульту недосказывает кое-что, чтоб не нагружать его.

Но этот признак только там, где команды могут отличаться по информативности и соответственно длине ответа.

Изменено пользователем nekto

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ferrum    14

Обсчитал пару пакетов, CRC совпадает с тем что выдает прибор. Завтра на железе попробую, дома нет приборов.

Проверяю на Сигнал-20, С2000-БИ, С2000-2 полет нормальный

Изменено пользователем ferrum

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
nekto    1

Здесь согласен , что моя гипотеза идет лесом

Ну гипотеза имеет право на жизнь.

"Шифрация" вроде типо присутствует, но не зависит от старшего бита, скорее всего прибор запоминает, что с ним общается пульт и принимает извращенные команды.

В логе снифера при включении реле с пульта не наблюдается функция 15h. Какой именно третий байт пролетает отловить сложно...

Кстати какой микроконтроллер применен в пульте?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас