【问题标题】:Generating an activation key from a large set of serial numbers and activation keys从大量序列号和激活密钥生成激活密钥
【发布时间】:2012-08-12 04:12:47
【问题描述】:

我有一堆序列号和它们对应的一些旧软件的激活密钥。自从最初安装它们以来,我丢失了一些激活密钥(但仍然有序列号)。我仍然有一个大约 20 个键的数据集,甚至目不转睛地观察它,我可以看出有一种方法可以疯狂地确定激活键。鉴于我的数据集很大,有没有一种方法可以反解来找出丢失信息的激活密钥。

序列号示例:14051 激活密钥:E9E9F-9993432-45543

【问题讨论】:

  • 您是否确认您的序列号与该确切的激活密钥相关联?
  • 我有顺序键有一个模式。

标签: numbers key activation-codes


【解决方案1】:

您要做的是想出一个将序列号映射到激活密钥的函数。在不了解函数性质的情况下,这可能是从非常简单(只有几个项的多项式)到非常困难(涉及大量块 XOR、替换表、复杂键调度等的多层函数)的任何地方。 .).

如果您有权访问密钥验证程序(例如,通过反汇编 - 几乎总是违反商业软件的 EULA),那么您有一个程序可以返回给定的激活密钥与否对于给定的序列号是正确的。如果这是通过计算序列号的激活密钥来完成的,那么您实际上已经完成了。如果这是通过计算密钥上的反函数来完成的,那么您的任务会稍微困难一些:您需要反转该函数以检索密钥派生算法,这可能并不那么容易。如果你最终不得不解决一些困难的数学问题(例如离散对数问题),因为该方案依赖于公钥加密,那么你希望你正在处理的值足够小,你可以蛮力或在计算可行的时间内使用已知算法(例如 Pollard 的 rho 算法)。

无论如何,您需要熟悉反汇编和调试,并希望没有反调试器措施。

否则,问题会更加困难 - 您需要做出一些有根据的猜测并尝试它们(例如,通过尝试进行多项式拟合),并希望获得最好的结果。由于可以适应任何一组输入和输出的不同可能函数种类繁多(数学上不可数,但实际上受源代码大小的限制),试图对算法本身进行已知明文攻击 em> 通常是不可行的。

【讨论】:

    【解决方案2】:

    这首先取决于该计划的愚蠢程度,但我猜这不太可能。没有固定的方法,但一般领域与破译密码相同。

    【讨论】:

    • 它非常愚蠢。例如,所有密钥都有 999 作为激活密钥第二部分的前 3 位数字。此外,激活密钥的前 5 个数字/字母与前一个激活密钥的后 5 个数字/字母相同。最后在键的第二组中,字母/数字必须是 abcdef689 的组合
    • 在您给出的示例中,第二组包含 2、3 和 4,而不仅仅是 [abcdef689]。
    • 对不起,如果您想要实际的数据集,我不想提供实际代码以避免法律问题,我可以将其设置给您
    猜你喜欢
    • 2011-11-22
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2011-08-11
    • 2010-11-24
    • 2021-02-08
    • 2011-12-27
    相关资源
    最近更新 更多