【问题标题】:Gameresearch / Understanding generation of player idGameresearch / 了解玩家 id 的生成
【发布时间】:2018-06-11 19:06:25
【问题描述】:

我根据游戏统计数据收集了数据。

我无法弄清楚生成玩家 ID 背后的功能可能是什么。我认为它基于用户/玩家的注册时间。

这是一个玩家 ID 的示例,已排序:

59f39d7046b16841df49bb76
59f39d7046b16841e06b1b47
59f39d7102153a762c796c35
59f39d7202153a762c796d09
59f39d7246b168428d63c984
59f39d73144ead375c438735
59f39d73144ead375e50c1b8
59f39d7346b16841e26556e6
59f39d7388a45020da797776
59f39d7388a450215c320555
59f39d7388a45021a905bf17
59f39d74144ead375c43880d
59f39d7488a45020d7701094
59f39d7502153a758a3c362b
59f39d7502153a759859c5f9
59f39d75144ead37a75db0a4
59f39d7546b16841df49bd14
59f39d7546b16841e06b1c21
59f39d7546b16841e26557bf
59f39d7546b168424d2fef07
59f39d7588a45021a905bfc7
59f39d7588a45026b77d1ced
59f39d7602153a758b1b7518
59f39d7602153a762c796dea

此处提供更长的示例:http://pastebin.com/raw/iFy5tc5k

前 8 个字节是当前的 hex 时间。就像现在它的 5A4AEC0A。我想知道最后 16 个。

它们随着时间的推移而增加。十六进制表示法。

它不是通常的哈希值,因为它不会像这样增加。

我很乐意提出建议。朝正确的方向抬头就足够了。我想明白。

【问题讨论】:

  • 我投票结束这个问题,因为它似乎是关于逆向工程。
  • 你错了哥们,但我能理解你的评论。我不想做任何游戏代码或东西,我只想了解这背后的逻辑。
  • 我认为它是逆向工程,因为您有一些算法的输出,但没有任何关于如何生成该输出的详细信息,并且您正在寻求重新创建算法的帮助。我也认为这里没有足够的信息来回答这个问题(以一种有用的方式)——您通常还需要为每个输出提供很大一部分 input——没有输入更多的是创建一个随机函数,将模式与任意数量的猜测相匹配以填补空白。人们可以发现诸如重复 46b1684 之类的事情,但不能确定这意味着什么。

标签: algorithm encryption hash analytics


【解决方案1】:

这可能与 MongoDB 用于其唯一 ID 的格式相同。这也是一个 12 字节 ID,它使用 4 字节 UNIX 时间戳、机器标识符、进程标识符和具有随机起始值的每个进程计数器形成。我已经按照机器 ID 和 UNIX 时间戳对数据进行了排序,我们可以看到以下内容:

59f39d73 144ead 375c 438735
59f39d73 144ead 375e 50c1b8
59f39d74 144ead 375c 43880d
59f39d75 144ead 37a7 5db0a4

59f39d73 88a450 20da 797776
59f39d73 88a450 215c 320555
59f39d73 88a450 21a9 05bf17
59f39d74 88a450 20d7 701094
59f39d75 88a450 21a9 05bfc7
59f39d75 88a450 26b7 7d1ced

59f39d71 02153a 762c 796c35
59f39d72 02153a 762c 796d09
59f39d75 02153a 758a 3c362b
59f39d75 02153a 7598 59c5f9
59f39d76 02153a 758b 1b7518
59f39d76 02153a 762c 796dea

59f39d70 46b168 41df 49bb76
59f39d70 46b168 41e0 6b1b47
59f39d72 46b168 428d 63c984
59f39d73 46b168 41e2 6556e6
59f39d75 46b168 41df 49bd14
59f39d75 46b168 41e0 6b1c21
59f39d75 46b168 41e2 6557bf
59f39d75 46b168 424d 2fef07

首先,我们注意到时间戳看起来像是相当近期的 UNIX 数据/时间数据,因此检查一下。

其次,我们注意到第二列中有大量重复。如果我们每台机器有多个条目,这可能是有意义的;也许这些是服务器或支持多个客户端的东西,或者这更像是一个会话/登录表或类似的东西。

进程 ID 的共性较少,但我们确实注意到了这一点:在一台机器内,所有 PID 都相当接近,而跨机器它们是不相关的。如果这些确实是进程 ID,这就是我们所期望的情况,所以这看起来不错。

在第四列中,您可以确认只要机器和过程相同,则第一列中较晚的时间意味着第四列中的数字更大。如果计数器在每个进程的基础上递增,这就是我们所期望的。

此数据似乎使用与 MongoDB 唯一 ID 相同的格式,这似乎是一致的。这并不意味着它是正确的。

【讨论】:

    猜你喜欢
    • 2022-11-13
    • 2021-10-17
    • 1970-01-01
    • 2020-09-14
    • 2013-11-21
    • 2021-10-07
    • 2022-08-07
    • 2016-07-14
    • 1970-01-01
    相关资源
    最近更新 更多