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

时间:2017-06-02 16:42:39

标签: datetime timestamp hex reverse-engineering puzzle

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

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

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

有人看到了解决方案吗?

由于

2 个答案:

答案 0 :(得分:0)

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

|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组:我有预感这是小时/分钟/秒。至少,这和第2组以某种方式联系在一起。
  • 第5组:与时间戳不太相关。
  • 填充:我假设这只是一个从未使用过的空白区域。

真正能够扭转协议的唯一方法就是拥有大量不同的信息。日期/月/天和时间戳不同的日期,时间相似但分钟/秒不同等等。

道歉,如果这对你没什么帮助,无论哪种方式都好运!

答案 1 :(得分:0)

你的答案。

我发现了如何解码日期和时间。 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年我得到了正确的日期和时间。