2010-10-12 105 views
1

我正在为C中的linux编写一个程序,以从Windows注册表配置单元中提取wpa/wep密钥。Windows注册表解密(CryptUnprotectData)WPA密钥

最初我希望使用Wine的CryptUnprotectData函数,但现在我意识到葡萄酒使用了不同的算法,只是模仿了窗口的版本。我也意识到只有加密数据的用户才能解密它。

我使用aircrack-ng套件中的wzcook作为指导。 http://tools.assembla.com/b6stFY7MOr2QtlaaeP0Qfc/browser/Windows/wzcook/wzcook.c

我已经从蜂巢提取数据没有问题,但我有点卡在如何解密密钥。

如果密钥在注册表中为一个用户加密,那么另一个用户如何解密该数据?我确定他们不必重新键入psk /密码,如果它已经存储了?

即使在离线状态(从linux访问配置单元)时,数据是否完全加密?

解决此问题的任何其他解决方案,而不是逆向工程微软的算法? :D

任何帮助/建议你可以给予真的很感激,

谢谢。

+0

我可以想像它实际是加密的。 – 2010-10-12 13:05:31

+0

您可能对chntpw感兴趣 - 另一个项目,它可以脱机读取/写入Windows注册表(即从Linux)。他们的目标是更改用户密码,我不确定是否使用相同的加密/解密机制。 http://freshmeat.net/projects/chntpw/ – Piskvor 2010-10-12 13:08:05

+0

谢谢,我知道chntpw。据我所知,它只是改变或空白用户的密码,而不是解密它。我知道你可以对Windows密码哈希进行字典攻击,所以我猜测它不是一样的加密。我对此不太了解。 感谢您的回复。 – jcul 2010-10-12 17:41:04

回答

0

据我所知,DPAPI使用从用户的实际密码计算出来的散列,所以你需要一个开源的Crypt函数实现和一个来自用户的明确密码。

已经有上最近执行CryptUnprotectData一些工作:DPAPIck

+0

感谢您的链接!在想,我不得不放弃这一点,但也许有一种方法。 他们还没有发布他们的源代码,但是我在http://ly.tl/t6a上找到了他们的论文。 它看起来很有趣,会通读它。 至少我应该知道更多关于它是如何工作的以及是否可以实现。 感谢您的帮助。 – jcul 2010-10-12 17:47:09

+0

刚刚通读了那篇论文。正是我所需要的。谢谢。 – jcul 2010-10-12 20:53:19

+0

太好了!我很高兴,如果这是可行的,上次我看着这是一个死路一条。 – bobince 2010-10-12 21:20:54