【问题标题】:reverse engineer hex values to time date format将十六进制值反向工程为时间日期格式
【发布时间】:2017-06-02 16:42:38
【问题描述】:

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

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 时间戳格式传输日期/时间,但似乎他们使用的是不同的东西。

有人看到解决方案了吗?

谢谢

【问题讨论】:

    标签: datetime timestamp hex reverse-engineering


    【解决方案1】:

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

    |组 1 |组 2 |组 3 |组 4 | 5 组 |填充? |
    |--------|------|------|------|------------|--------- ---|
    |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 组:不太可能与时间戳相关。
    • 填充:我假设这只是从未使用过的空白空间。

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

    抱歉,如果这对您没有太大帮助,祝您好运!

    【讨论】:

      【解决方案2】:

      谢谢你的回答。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-26
        相关资源
        最近更新 更多