将十六进制值反向工程为时间日期格式

reverse engineer hex values to time date format

我记录了两个设备之间的蓝牙传输,我想对协议进行逆向工程。我想通了一切,但不是日期时间格式。 我有以下已知的十六进制值和日期对:

00:fe:a6:11:f5:0d:c7:19:00:ff:01:09:00:00:00:00  --> 03.06.2017 - 07:44:06
00:fe:68:40:f4:0d:da:15:00:ff:01:09:00:00:00:00  --> 02.06.2017 - 16:51:20
00:fe:33:3d:f4:0d:c6:14:00:ff:01:09:00:00:00:00  --> 02.06.2017 - 16:37:39
00:fe:83:1d:f4:0d:ba:15:00:ff:01:09:00:00:00:00  --> 02.06.2017 - 14:22:27
00:fe:c2:19:f4:0d:7d:16:00:ff:01:09:00:00:00:00  --> 02.06.2017 - 14:06:26
00:fe:f5:15:f4:0d:b2:16:00:ff:01:09:00:00:00:00  --> 02.06.2017 - 13:50:13
00:fe:67:14:f4:0d:e4:16:00:ff:01:09:00:00:00:00  --> 02.06.2017 - 13:43:35
00:fe:80:0f:f4:0d:6a:17:00:ff:01:09:00:00:00:00  --> 02.06.2017 - 13:22:40

如何将其从十六进制值转换为 date/time 格式?我已经尝试过他们是否以 unix 时间戳格式传输 date/time,但他们似乎使用了不同的东西。

有人看到解决方案了吗?

谢谢

我需要更多的数据才能完全理解正在发生的事情,但以下是我可以从有限的可用数据中收集到的信息:

|Grp 1 |Grp 2 |Grp 3 |Grp 4 | Grp 5     | Padding?   |
|------|------|------|------|-----------|------------|
|00 fe |a6 11 |f5 0d |c7 19 |00 ff 01 09|00 00 00 00 | : 03.06.2017 - 07:44:06
|00 fe |68 40 |f4 0d |da 15 |00 ff 01 09|00 00 00 00 | : 02.06.2017 - 16:51:20
|00 fe |33 3d |f4 0d |c6 14 |00 ff 01 09|00 00 00 00 | : 02.06.2017 - 16:37:39
|00 fe |83 1d |f4 0d |ba 15 |00 ff 01 09|00 00 00 00 | : 02.06.2017 - 14:22:27
|00 fe |c2 19 |f4 0d |7d 16 |00 ff 01 09|00 00 00 00 | : 02.06.2017 - 14:06:26
|00 fe |f5 15 |f4 0d |b2 16 |00 ff 01 09|00 00 00 00 | : 02.06.2017 - 13:50:13
|00 fe |67 14 |f4 0d |e4 16 |00 ff 01 09|00 00 00 00 | : 02.06.2017 - 13:43:35
|00 fe |80 0f |f4 0d |6a 17 |00 ff 01 09|00 00 00 00 | : 02.06.2017 - 13:22:40
  • 第 1 组:年份?
  • 第 2 组:不确定。可能与时间的计算方式有关。
  • 第 3 组:我相当有信心今天和这个月。如果我的猜测是正确的话,它包装得很紧。
  • 第4组:我有预感这是hour/minutes/seconds。至少,这和第2组在某种程度上是联系在一起的。
  • 第 5 组:不太可能与时间戳相关。
  • 填充:我假设这只是空的 space,从未使用过。

真正能够逆转协议的唯一方法是拥有大量不同的信息。具有不同 years/months/days 的日期和具有相似时间但不同 minutes/seconds 的时间戳等

如果这对您没有太大帮助,我们深表歉意,祝您好运!

谢谢你的回答。

我发现了日期和时间是如何解码的。 Grp 3 和 Grp 2 是 unix 时间的小端,但奇怪的是从 2010 年开始,而不是从 1970 年开始。

所以我必须加上 40 年才能得到正确的年份。

例如:

00:fe:a6:11:f5:0d:c7:19:00:ff:01:09:00:00:00:00  --> 03.06.2017 - 07:44:06

unix 时间解码:

0d:f5:11:a6 --> 234164646 -> unix time stamp 1977-06-03T05:44:06+00:00 in ISO 8601

向这个 unix 时间戳添加 40 年我得到正确的日期和时间。