识别用于生成代码的算法

时间:2009-08-13 14:41:49

标签: algorithm identification reversing

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

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

我如何确定用于生成此类代码的算法,从而能够使用相同的算法生成自己的算法?

7 个答案:

答案 0 :(得分:1)

这并不容易。如果你有程序读取代码,你可以尝试弄清楚程序是如何工作的,这为你提供了如何创建程序所需代码的线索。请参阅here

如果您只是拥有代码而不是阅读它们的程序,那么您将进入cryptography

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

答案 1 :(得分:1)

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

即使对于相对简单的加密算法,统计方法在确定加密技术方面也不是很有用。一些不良实现可能在文件中具有可用于确定加密技术的头。

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

为了成功理解特定的代码,需要了解该代码的 use 。你可以获得的知识越多,你的机会就越大。某些类型的知识包括:

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

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

要了解所涉及的内容,请查找或购买Applied Cryptography的副本。

答案 5 :(得分: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等。

答案 6 :(得分:1)

如果这真的是一个恶魔般的邀请列表,那么如果你弄明白如何制作一个,那就不重要了。他们不太可能只测试邀请代码是否与特定模式匹配。他们可能使用算法生成它们,然后将它们存储在数据库中。

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