我正在帮助一个项目,其中iSeries上的旧软件系统正在应用一个全新的.NET UI。它很顺利......除了......
为了允许用户登录并保持与现有软件安装的兼容性,我们需要弄清楚之前供应商使用的加密/散列方法,而无需访问其源代码。
我有一个带有ID和密码列的文件。密码列似乎每个记录只包含16个字符,均为二进制文件。
以前的供应商系统的一部分是在400上以原生绿色屏幕编写的,其中一部分是用Microsoft ASP.Net编写的。
将采用何种类型的加密或散列:
指针非常感谢。谢谢!
答案 0 :(得分:2)
i有许多内置和第三方加密方案。您最好的办法是找到供应商在其应用程序中使用的API或直接询问它们。一个设计良好的应用程序将在一个位置具有该登录代码。
注意:我已经与足够的供应商打过交道,知道我所说的就像是要求你将艾菲尔铁塔向左移动2英寸。
答案 1 :(得分:2)
第一个停靠港是旧系统的系统手册。在那之后联系供应商,并假设你支付了支付(你支付了支付费用,不是你),让他们的技术支持人员回答你的问题。
如果这不能让你到任何地方,你必须开始挖掘。 16个字符是128位,所以你可能有128位的哈希值。最有可能是MD5,特别是如果原始代码可以追溯到1991年至1996年。
接下来,您需要确定在对密码进行哈希处理之前是否在密码中添加了一个salt。在旧系统上创建两个具有不同用户名和相同密码的新用户帐户。说“user1 / password”和“user2 / password”。现在查看密码文件并找到两个新条目。如果两个哈希值相同,则不使用salt,并且您可能有一个简单的密码哈希值。如果没有,那么尝试使用用户名和密码的简单组合的MD5哈希:
user1password
passworduser1
用户1:密码
密码:USER1
等
如果其中一个有效,那么你就解决了它。如果没有,那么你将花费很长时间来建造彩虹桌和各种其他密码分析的东西。
如果达到这个目的,可能更容易将网络嗅探器放到您的网络上,它会触及旧系统,这样您就可以在用户密码被哈希之前读取它们。为了更加确定,请在录制密码之前检查“您正确登录”消息。他们可能会在错误的时间输错。