1

如何识别用于生成代码的算法?常见的开源算法和更困难的自定义未发布算法?例如,这里有一个示例......

x3vbhzcouy
g3zy453f4
srix1gtvri
3ewnubic5vz
4bu9ksba6yj
r1u3rxfd82n
fs30bew9eq
b8gr8w5f3
tz6t998ulr
ycd1zued
oizyviwv
7w6eownv0
s15zxpid9uoo
u8is4ulxm
bqg0c50luq
pqpwn6ty3

我将如何确定使用什么算法来生成这样的代码,从而能够使用相同的算法生成我自己的?

4

7 回答 7

1

这并不容易。如果您有读取代码的程序,您可以尝试弄清楚程序是如何工作的,这为您提供了如何创建程序想要的代码的线索。见这里

如果您只有代码但没有读取它们的程序,那么您正在进入密码学

在最坏的情况下,它们只是随机的一系列字节,你没有希望创建自己的字节。这就是您购买活动门票时所拥有的,并且上面有代码。此代码由售票系统记录,因此可以验证票证。创建自己的票的唯一方法是随机生成数据,希望你能走运。(或者生成一个无限数,最终必须是对的!)

于 2009-08-13T14:55:59.707 回答
1

这并不容易。如果您有一个未加密和加密的样本,您可以测试几种算法并尝试匹配。

即使对于相对简单的加密算法,统计方法在确定加密技术时也不是很有用。一些糟糕的实现可能在文件中有一个标题,可用于确定加密技术。

识别加密算法(没有提示)的最有效方法通常是解密文件。这方面的技术“超出了本文的范围”,但基本上你会尝试使用几种流行的加密技术、使用快捷方式(例如流行的密码、测试文件的一小部分等)的一堆密码。

于 2009-08-13T14:56:39.973 回答
1

您的样本显然是由我自己的、困难的、自定义的未发布算法生成的。它是如此的困难和自定义未发布,它甚至没有名字......

于 2009-08-13T14:59:59.843 回答
1

解决问题的关键是了解验证代码的条件。如果代码是随机生成并由您无权访问的第三方验证(例如预付费电话卡、在线游戏的时间码卡等),那么您就完蛋了。

于 2009-08-13T15:02:54.490 回答
1

理解代码算法是一个庞大而复杂的课题。政府的所有部门都致力于这项任务。

为了成功理解特定代码,需要了解该代码的使用。您获得的具体知识越多,您的机会就越大。一些类型的知识包括:

  • 代码创建者的能力(那些没有加密背景的人通常会留下可被利用的漏洞)
  • 代码使用的平台
  • 代码创建者的背景(往往线索来自个人生活)
  • 未编码文本的样本及其在编码文本中的等价物

任何/所有这些都会有所帮助。

要了解所涉及的内容,请查找或购买应用密码学的副本。

于 2009-08-13T15:09:35.247 回答
1

就像其他人说的那样很难知道,但是您可以对一些提示进行可视化分析,并使用足够大的样本缩小可能性并从那里开始工作,例如:

Sample: 16 codes
Alphabet Usage: 0-9, a-z (36 chars)
Length of Codes:

 - 8 = 2 samples, no digits
 - 9 = 5 samples, between 2 and 5 digits
 - 10 = 5 samples, between 0 and 4 digits (we know now that digits shouldn't be relevant)

等等...

不要假设代码是加密的,它们可以以不同的基数(例如 base64)或 rot13 编码,或者使用某种校验位算法计算,例如 Luhn、ISBN、Verhoeff 等。

于 2009-08-13T15:10:14.013 回答
1

如果这真的是一张恶魔邀请的名单,那么即使你想出了如何制作一个也无所谓。他们不太可能只测试邀请代码是否与特定模式匹配。他们可能使用算法生成它们,然后将它们存储在数据库中。

所以即使你做了一些,它们也不会在他们的数据库中。

于 2009-08-13T16:15:21.303 回答