Есть ли решение, чтобы решить эту загадочную кодировку времени? - PullRequest
0 голосов
/ 26 апреля 2020

Я сейчас пытаюсь понять кодировку моего кабельного ресивера (это xoro XORO HRM 7670), и я не понимаю его вообще. Я пытался найти какую-либо документацию для устройства, операционной системы или даже чипа, но безуспешно. Я просто пытаюсь декодировать следующий шаблон даты в метаданных записи: (информация о дате не сохраняется в атрибутах файла)

Вот что я получил:

88 28 C5 00 00 00 00 00 19 00 00 00 F8 D5 4F 4E 45 20 48 44 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 78 07 F7 80 E4 27  
1A [01 11 03] 01 00 0F 00 00 00 01 00 00 00 00 00 00 00 FF FF FF 
FF B9 06 0C 00 00 00 B9 06 02 00 00 00 BA 06 03 00 00 00 67 65
72 BB 06 03 00 00 00 6D 69 73 01 00 00 00 BC 06 01 01 00 64 65
75 01 00 00 00 B8 06 01 00 01 00 64 65 75 00 00 00 00 00 00 00
00 27 27 01 F0 00 00 00 00 00 00 00 00 00 00 00 00 00

Я определила 3 ​​пары в скобках как время, сравнив их с другой записью. Изменение этого значения приводит к следующему выводу из получателя:

HEX      -> TIME SHOWN
00:00:01 -> 00:00:02
00:00:02 -> 00:00:04
03:03:03 -> 12:03:06
01:01:01 -> 04:01:02
11:11:11 -> 04:17:34
FF:FF:FF -> 60:127:127

Но я не получаю его ...

Редактировать: дальнейшие наблюдения после комментария:

F5 94 91 -> 23:20:35
0F 00 00 -> 63:00:00
00 40 00 -> 03:64:00
00 B0 00 -> 03:48:01

При взгляде на часы: 00 выдает 0, хорошо, 11 выдает 4 -> почему? 03 -> производит 12 ???

Может быть, что есть некоторая связь между парами (например, секунды или sth.). Btw. Я совершенно уверен, что 3 пары перед помеченными используются в качестве даты - должно быть 26.04.2020.

Кто-нибудь может решить эту двоичную загадку со мной? Спасибо, Джонас

1 Ответ

0 голосов
/ 27 апреля 2020

Это не полный ответ, но некоторые предварительные наблюдения:

  • Кажется, что последние четыре бита первого байта (второй шестнадцатеричный символ) объединены с двумя 0 битами, чтобы получить час : 0 -> 0, 1 -> 100 двоичное = 4, 3 -> 1100 = 12, F -> 111100 = 60. Для меня загадка заключается в том, как произвести час, который не делится на 4.
  • Средний байт обозначает минуты, но ограничен 127, максимально возможное значение байта со знаком в 2-х дополнениях (значения go от -128 до +127).
  • Ставится один бит 0 после последнего байта, чтобы получить секунды. Опять же, они ограничены 127. Например, 11 hex = 10001 двоичный -> 100010 = 34. Может ли быть так, что у нас нет точности / детализации за 2 секунды?

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

80 00 00
40 00 00
20 00 00
10 00 00
08 00 00
04 00 00
02 00 00
...
00 00 04
00 00 02 -> 00:00:04 // already known from your question
00 00 01 -> 00:00:02

Всего будет 24 теста. После них у вас, вероятно, будет лучшее представление о том, какие комбинации вы хотите попробовать.

...