【发布时间】:2011-02-22 20:14:02
【问题描述】:
所以,几个月来我一直在努力解决这个问题,部分是因为这是一个附带兴趣,部分是因为我不擅长编程。我在整个网络上进行了搜索和研究,但没有任何运气(除了一点点成功;见下文),所以我想我可以尝试问问专家。
正如标题所示,我要做的是根据“事实上的”标准从密码短语生成 40/64 位 WEP 密钥。 (诸如http://www.powerdog.com/wepkey.cgi 之类的站点会产生预期的输出。)我已经编写了脚本的一部分,它们接受输入并将它们写入文件;其中一个输入将是密码短语,已过滤为小写。
很长一段时间以来,我都不知道事实上的标准是什么,更不用说如何实施它了。我终于偶然发现了一篇论文 (http://www.lava.net/~newsham/wlan/WEP_password_cracker.pdf),它揭示了我对这个问题的了解(第 18 页有相关部分)。显然,密码短语“通过 XOR 映射到 32 位值”,然后将其结果用作“线性同余 PRNG(Python 的几个 PRNG 之一适合这个描述,我不知道)”的种子不知道),然后从该结果中提取几位结果。我不知道如何实现这一点,因为描述相当模糊。
我需要的是帮助我用 Python 编写生成器,以及了解密钥是如何生成的。换句话说,我需要将“jackson”变成“09F38AF593”的代码。 (请不要告诉我 jackson = 09F38AF593; print (jackson))
我不是一个程序员,所以解释也很感激。
(是的,我知道 WEP 不安全。)
【问题讨论】:
-
目前尚不清楚您希望从这个问题中得到什么。您已经指出了实现该算法的 JS 源代码。从源代码 (netpoint.com/wep.htm) 来看,这是一个相当长且重要的编码。您为什么不花一些时间尝试理解该实现,并就您尝试理解代码的具体问题询问 SO?
-
我断断续续地花了将近一个月的时间试图理解这个实现。这样一个新手,它几乎超出了我的范围。但是,我要说的是,我提供的第二个链接的 C 程序似乎不需要如此复杂的设置。据我所知,生成 64 位 wep 密钥时在 JS 页面上调用的唯一函数是 ToHex 和 MM_FindObj。根本不使用转换。但是,我可能读错了。但是,我会尝试进一步了解并回复我遇到的具体问题,而不是像我那样胡思乱想。
-
顺便说一句,算法本身可以在 4 行 C 源代码中实现。懂了就没有那么复杂了。
-
这是我逃脱的理解。 :D