25个字符的产品密钥如何工作?

时间:2010-12-01 05:58:17

标签: windows registration

Microsoft产品和其他产品通常具有5组5个字符的产品密钥,如下所示:

  

ABCDE-12345-ABCDE-12345-VWXYZ

产品如何知道密钥是否有效?某种密码学?如果我想在我的代码中使用这种产品密钥,是否有库?

3 个答案:

答案 0 :(得分:5)

您可能希望了解如何实现序列号验证功能的this article。它还涉及一些先进的技术,例如如何保持密钥,泄漏密钥等等。

简而言之,这种密钥通常有三个基础字段:

  • 实际序列号,文章称之为“种子”
  • 一些验证数据;部分验证数据实际上是由代码
  • 检查的
  • 校验和,CRC或其他简单的打字错误机制

通过仅在代码中执行部分验证数据检查,您可以执行“正确验证”(在这种情况下,其余验证发生在您的服务器上)或通过检查验证的不同子集来锁定密钥新版本中的数据。

答案 1 :(得分:2)

特别是对于Microsoft产品,可以获得一些知识。

Windows XP上的产品密钥使用自定义字母表进行base24编码。它由一个序列号(源代码称为"原始产品密钥")和一个数字签名组成。 source

Windows 8及更高版本的产品密钥在软件专利申请WO 2012067888 A1中有一些文档。它仍然是base24编码的(act 57 et seq。,实际上意味着' N'的位置被用作解码的第一个字符)。它的要点是Windows 8及以上产品密钥有这些部分:

  • 组ID,表示类型/编辑/系列/分发渠道,参见第34步)
  • 序列号(表格"原始产品密钥"连同组ID)
  • 安全值1和2(不同级别的安全性,两者都可能是签名,参见行为34 et seqq。,46,55)
  • Checksum(行为56,实际上是在键上截断POSIX cksum)
  • 升级位

答案 2 :(得分:0)

确认密钥有四种方法。

  1. 简单比较exe中的现有字符串(极易破解)
  2. 算法与输入的字符串比较(几乎和#1一样简单。完全取决于饼干的逆向工程技能)。
  3. 通过互联网与服务器进行比较。 (可以规避)
  4. 硬件加密狗。
  5. 根据您从microsoft获得的产品,他们使用上述前3种机制之一。例如,他们的操作系统通常是电话回家;但他们的开发工具要么已经关键,要么进行算法比较。他们的一些旧操作系统用于执行算法。

    有一个修改过的选项3,但这只是让应用程序手机每隔一段时间就回家,通常是基于某些事件。在OS的情况下,MS使其验证输入的产品密钥以用于某些Windows更新和其他产品下载。此外,根据许可证密钥本身,它可能每月一次打电话回家。作为旁注,中国有一个IE6安装基础的原因。

    第四种选择也可以被规避。通常,破解者只会修补您的产品以绕过执行硬件检查的代码部分。