Сейчас на форуме: rmn, exp50848, _MBK_ (+8 невидимых)

 eXeL@B —› Основной форум —› Расшифровка нумерации пакетов микропроцессорного устройства
Посл.ответ Сообщение


Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 03 декабря 2010 22:50
· Личное сообщение · #1

Есть программа которая общается с контроллером по COM порту. Данные перехватываю со стороны программы (смотрю что пишет и читает). Получаю логи и расшифровываю их. Понял уже многое, где номер команды, длина данных, где проверка CRC и как считается и где сами данные. Кроме всего прочего есть нумерация пакетов на которую всё реагирует критично. То есть с номерами напутать - работать не будет...
Ниже привожу пример лога, во вложении три полных лога.

Code:
  1. 000 R_CMD: 02, SIZE: 04, SECV: 01
  2. 000 R_CMD: 02, SIZE: 04, SECV: 01
  3. 001 W_CMD: 01, SIZE: 04, SECV: 01
  4. 002 W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  5. 002 R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF
  6. 003 W_CMD: 01, SIZE: 04, SECV: 02
  7. 004 W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  8. 004 R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF
  9. 005 W_CMD: 01, SIZE: 04, SECV: 02
  10. 006 W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  11. 006 R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF
  12. 007 W_CMD: 01, SIZE: 04, SECV: 02
  13. 008 W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  14. 008 R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF
  15. 009 W_CMD: 01, SIZE: 04, SECV: 02
  16. 00A W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  17. 00A R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF
  18. 00B W_CMD: 01, SIZE: 04, SECV: 02
  19. 00C W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  20. 00C R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF
  21. 00D W_CMD: 01, SIZE: 04, SECV: 02
  22. 00E W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  23. 00E R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF
  24. 00F W_CMD: 01, SIZE: 04, SECV: 02
  25. 010 W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  26. 010 R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF
  27. 011 W_CMD: 01, SIZE: 04, SECV: 02
  28. 012 W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  29. 012 R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF
  30. 013 W_CMD: 01, SIZE: 04, SECV: 02
  31. 014 W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  32. 014 R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF
  33. 015 W_CMD: 01, SIZE: 04, SECV: 02
  34. 015 R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF
  35. 016 W_CMD: 01, SIZE: 04, SECV: 02
  36. 017 W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  37. 017 R_CMD: 0D, SIZE: 14, SECV: 03 DATA: 0A0000D3


Всё что программа вычитывает из контроллера помечено как R_CMD, всё что посылает на него - W_CMD.
Далее сама команда, длина вместе с данными, SECV - это номер пакета с которым загвоздка и далее обрезанные до 4-х байт данные если они есть.
Читает программа побайтно через ReadFile, пишет блоком.
В начале номер (нумерую сам для удобства, инкремент счётчика по команде от программы).
В приведённом куске (последняя строка) номер вдруг стал 3 без видимых причин. Далее тоже не понятно.
Мой код будет выступать в роле контроллера, то есть данные для R_CMD мне нужно формировать самому, соответственно нужно знать в какой момент менять номер пакета что-бы программа поняла.
Буду очень благодарен за подсказку.

f4e4_03.12.2010_CRACKLAB.rU.tgz - logs.rar




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 04 декабря 2010 10:15
· Личное сообщение · #2

ToBad пишет:
SECV

Возможно это не номер пакета, а так называемый номер канала. Т.е. что то типа того (Delphi):

Code:
  1. 000 R_CMD: 02, SIZE: 04, CHANEL: 01
  2. 000 R_CMD: 02, SIZE: 04, CHANEL: 01
  3. 001 W_CMD: 01, SIZE: 04, CHANEL: 01

Code:
  1. case CHANEL of
  2.   01: begin
  3.     case CMD of
  4.       01:...
  5.       02:...
  6.       ...
  7.   end;
  8.   02: begin
  9.   ....
  10.   end;
  11.   ...


Тогда имеем набор каналов, у каждого набор команд.

-----
Yann Tiersen best and do not fuck





Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 04 декабря 2010 14:56 · Поправил: ToBad
· Личное сообщение · #3

PE_Kill пишет:
Возможно это не номер пакета, а так называемый номер канала.


Дальше в логах видно, что с определённого момента они идут с чётким приростом. То есть начинается всё с 1 и непонятно как, в итоге доходит до FF, затем сбрасывается на 0 и снова до FF. И так постоянно. Вся проблема у меня в первоначальном понимании формирования этого SECV...

Вот одно из мест перехода:
Code:
  1. 418 R_CMD: 02, SIZE: 04, SECV: FC
  2. 419 W_CMD: 05, SIZE: 50, SECV: FC DATA: 9413C60C
  3. 419 R_CMD: 01, SIZE: 04, SECV: FC
  4. 419 R_CMD: 02, SIZE: 04, SECV: FD
  5. 41A W_CMD: 05, SIZE: 8F, SECV: FD DATA: FC140700
  6. 41A R_CMD: 01, SIZE: 04, SECV: FD
  7. 41A R_CMD: 02, SIZE: 04, SECV: FE
  8. 41B W_CMD: 05, SIZE: A5, SECV: FE DATA: E815C800
  9. 41B R_CMD: 01, SIZE: 04, SECV: FE
  10. 41B R_CMD: 02, SIZE: 04, SECV: FF
  11. 41C W_CMD: 05, SIZE: 23, SECV: FF DATA: 2917CB05
  12. 41C R_CMD: 01, SIZE: 04, SECV: FF
  13. 41C R_CMD: 02, SIZE: 04, SECV: 00
  14. 41D W_CMD: 05, SIZE: 49, SECV: 00 DATA: 60170302
  15. 41D R_CMD: 01, SIZE: 04, SECV: 00
  16. 41D R_CMD: 02, SIZE: 04, SECV: 01
  17. 41E W_CMD: 05, SIZE: 11, SECV: 01 DATA: B817E061
  18. 41E R_CMD: 01, SIZE: 04, SECV: 01
  19. 41E R_CMD: 02, SIZE: 04, SECV: 02
  20. 41F W_CMD: 05, SIZE: 73, SECV: 02 DATA: D817F401
  21. 41F R_CMD: 01, SIZE: 04, SECV: 02
  22. 41F R_CMD: 02, SIZE: 04, SECV: 03
  23. 420 W_CMD: 05, SIZE: 47, SECV: 03 DATA: C8184700
  24. 420 R_CMD: 01, SIZE: 04, SECV: 03


p.s. В зависимости от первоначального обмена дальнейший номер команды, команда и SECV могут сдвигаться.

Например это место:
Code:
  1. 41F W_CMD: 05, SIZE: 73, SECV: 02 DATA: D817F401

в другом логе может выглядеть так:
Code:
  1. 41B W_CMD: 05, SIZE: 73, SECV: FF DATA: D817F401





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 04 декабря 2010 15:22
· Личное сообщение · #4

Значит зависит от данных которые передаются/принимаются у тебя в логи они порезаные сложно проанализировать.

-----
Yann Tiersen best and do not fuck





Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 04 декабря 2010 15:40
· Личное сообщение · #5

PE_Kill пишет:
Значит зависит от данных которые передаются/принимаются у тебя в логи они порезаные сложно проанализировать.


Данных зачастую вообще нет. То есть идёт пустой пакет запрос-ответ, команда, длина, номер, crc. Команды с данными часто идут однотипные. Сама DATA не отличается. Думаю вычитка из памяти контроллера.
Вот фрагмент без урезания данных:
Code:
  1. 00000000 R_CMD: 02, SIZE: 04, SECV: 01
  2. 00000000 R_CMD: 02, SIZE: 04, SECV: 01
  3. 00000001 W_CMD: 01, SIZE: 04, SECV: 01
  4. 00000002 W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  5. 00000002 R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF3FFF3F
  6. 00000003 W_CMD: 01, SIZE: 04, SECV: 02
  7. 00000004 W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  8. 00000004 R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF3FFF3F
  9. 00000005 W_CMD: 01, SIZE: 04, SECV: 02
  10. 00000006 W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  11. 00000006 R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF3FFF3F
  12. 00000007 W_CMD: 01, SIZE: 04, SECV: 02
  13. 00000008 W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  14. 00000008 R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF3FFF3F
  15. 00000009 W_CMD: 01, SIZE: 04, SECV: 02
  16. 0000000A W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  17. 0000000A R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF3FFF3F
  18. 0000000B W_CMD: 01, SIZE: 04, SECV: 02
  19. 0000000C W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  20. 0000000C R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF3FFF3F
  21. 0000000D W_CMD: 01, SIZE: 04, SECV: 02
  22. 0000000E W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  23. 0000000E R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF3FFF3F
  24. 0000000F W_CMD: 01, SIZE: 04, SECV: 02
  25. 00000010 W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  26. 00000010 R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF3FFF3F
  27. 00000011 W_CMD: 01, SIZE: 04, SECV: 02
  28. 00000011 R_CMD: 0B, SIZE: 0C, SECV: 02 DATA: 3FFF3FFF3FFF3F
  29. 00000012 W_CMD: 01, SIZE: 04, SECV: 02
  30. 00000013 W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  31. 00000013 R_CMD: 0D, SIZE: 14, SECV: 03 DATA: 0A0000D30000000501000042000000
  32. 00000014 W_CMD: 01, SIZE: 04, SECV: 03
  33. 00000015 W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  34. 00000015 R_CMD: 0D, SIZE: 14, SECV: 03 DATA: 0A0000D30000000501000042000000
  35. 00000016 W_CMD: 01, SIZE: 04, SECV: 03
  36. 00000017 W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  37. 00000017 R_CMD: 0D, SIZE: 14, SECV: 03 DATA: 0A0000D30000000501000042000000
  38. 00000018 W_CMD: 01, SIZE: 04, SECV: 03
  39. 00000018 R_CMD: 0D, SIZE: 14, SECV: 03 DATA: 0A0000D30000000501000042000000
  40. 00000019 W_CMD: 01, SIZE: 04, SECV: 03
  41. 0000001A W_CMD: 0F, SIZE: 07, SECV: 01 DATA: 00781F
  42. 0000001A R_CMD: 02, SIZE: 04, SECV: 04
  43. 0000001B W_CMD: 0F, SIZE: 07, SECV: 04 DATA: 00781F
  44. 0000001B R_CMD: 02, SIZE: 04, SECV: 04
  45. 0000001C W_CMD: 0F, SIZE: 07, SECV: 04 DATA: 00781F
  46. 0000001C R_CMD: 02, SIZE: 04, SECV: 04
  47. 0000001D W_CMD: 0F, SIZE: 07, SECV: 04 DATA: 00781F
  48. 0000001D R_CMD: 01, SIZE: 04, SECV: 04
  49. 0000001D R_CMD: 02, SIZE: 04, SECV: 05
  50. 0000001E W_CMD: 05, SIZE: 53, SECV: 05 DATA: 70200202020202000100010000004001000000000000A0010000000000000002000000 0000006002000000000000C0020000000000002003000000000000D000000020000000 9003000000000000D0
  51. 0000001E R_CMD: 01, SIZE: 04, SECV: 05
  52. 0000001E R_CMD: 02, SIZE: 04, SECV: 06
  53. 0000001F W_CMD: 06, SIZE: 04, SECV: 06
  54. 0000001F R_CMD: 01, SIZE: 04, SECV: 06
  55. 0000001F R_CMD: 02, SIZE: 04, SECV: 07
  56. 00000020 W_CMD: 05, SIZE: 13, SECV: 07 DATA: 4C18050A0000D30000000501000042
  57. 00000020 R_CMD: 01, SIZE: 04, SECV: 07
  58. 00000020 R_CMD: 02, SIZE: 04, SECV: 08
  59. 00000021 W_CMD: 06, SIZE: 04, SECV: 08
  60. 00000021 R_CMD: 01, SIZE: 04, SECV: 08
  61. 00000021 R_CMD: 02, SIZE: 04, SECV: 09
  62. 00000022 W_CMD: 04, SIZE: 14, SECV: 09 DATA: 67A0A7DF9B592E9D9028B4F6E7CD4D50
  63. 00000022 R_CMD: 01, SIZE: 04, SECV: 09



 eXeL@B —› Основной форум —› Расшифровка нумерации пакетов микропроцессорного устройства
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати