iSeries(AS / 400)数据库文件:密码加密

时间:2011-08-09 17:40:59

标签: .net encryption cryptography passwords ibm-midrange

我正在帮助一个项目,其中iSeries上的旧软件系统正在应用一个全新的.NET UI。它很顺利......除了......

为了允许用户登录并保持与现有软件安装的兼容性,我们需要弄清楚之前供应商使用的加密/散列方法,而无需访问其源代码。

我有一个带有ID和密码列的文件。密码列似乎每个记录只包含16个字符,均为二进制文件。

以前的供应商系统的一部分是在400上以原生绿色屏幕编写的,其中一部分是用Microsoft ASP.Net编写的。

将采用何种类型的加密或散列:

  1. 由AS / 400或iSeries Green Screen应用程序使用,
  2. 由Microsoft .NET应用程序使用,
  3. 输出一致的16个二进制字节,与输入长度无关
  4. 指针非常感谢。谢谢!

2 个答案:

答案 0 :(得分:2)

i有许多内置和第三方加密方案。您最好的办法是找到供应商在其应用程序中使用的API或直接询问它们。一个设计良好的应用程序将在一个位置具有该登录代码。

注意:我已经与足够的供应商打过交道,知道我所说的就像是要求你将艾菲尔铁塔向左移动2英寸。

答案 1 :(得分:2)

第一个停靠港是旧系统的系统手册。在那之后联系供应商,并假设你支付了支付(你支付了支付费用,不是你),让他们的技术支持人员回答你的问题。

如果这不能让你到任何地方,你必须开始挖掘。 16个字符是128位,所以你可能有128位的哈希值。最有可能是MD5,特别是如果原始代码可以追溯到1991年至1996年。

接下来,您需要确定在对密码进行哈希处理之前是否在密码中添加了一个salt。在旧系统上创建两个具有不同用户名和相同密码的新用户帐户。说“user1 / password”和“user2 / password”。现在查看密码文件并找到两个新条目。如果两个哈希值相同,则不使用salt,并且您可能有一个简单的密码哈希值。如果没有,那么尝试使用用户名和密码的简单组合的MD5哈希:

user1password
passworduser1
用户1:密码
密码:USER1

如果其中一个有效,那么你就解决了它。如果没有,那么你将花费很长时间来建造彩虹桌和各种其他密码分析的东西。

如果达到这个目的,可能更容易将网络嗅探器放到您的网络上,它会触及旧系统,这样您就可以在用户密码被哈希之前读取它们。为了更加确定,请在录制密码之前检查“您正确登录”消息。他们可能会在错误的时间输错。