带盐的开膛手约翰密码文件格式不起作用

信息安全 密码 哈希 密码破解 md5 开膛手约翰
2021-08-28 00:53:33

我正在尝试在我们的一个电子商务网站中测试密码强度。我正在使用 john the ripper 暴力破解密码文件。PHP使用的算法是:

$hash = md5($salt . $pass)

没有执行其他转换,也没有在 $salt 或 pass 中执行,我手动检查了一个示例。我在文档中发现该算法附带的子格式是 dynamic_4。问题是文档中编写的 passwd 文件格式似乎不起作用,John 无法加载哈希,这是我使用的格式:

// user:$dynamic_4$hash$salt
emi:$dynamic_4$83a3f08cfb2d9d0bac5d1a1619d8b7dd$Z3MkG2FZsaoV9EDCpmSRWvgANQAeXOeN7oadrAugu0rKEvfKqoNj6D9a

我试图改变哈希的盐,但仍然没有

我尝试了以下参数组合:

john --single passwd
john --format=dynamic_4 --single passwd
john --subformat=dynamic_4 --single passwd
john --format=md5 --single passwd
john --format=raw-md5 --single passwd
1个回答

我查看了 John the ripper 源代码和您使用 John The Ripper 的语法。

  • 在 john 中,开膛手动态哈希子格式盐的长度是有限的。
src/dynamic_preloads.c:

静态 DYNAMIC_Setup 设置 [] =
{
    { “dynamic_0: md5($p) (raw-md5)”, _Funcs_0, _Preloads_0, _ConstDefault, MGF_NO_FLAG, MGF_KEYS_INPUT },
    { "dynamic_1: md5($p.$s) (joomla)", _Funcs_1, _Preloads_1, _ConstDefault, MGF_SALTED, MGF_NO_FLAG, -32 },
    { “dynamic_2: md5(md5($p)) (e107)”, _Funcs_2, _Preloads_2, _ConstDefault, MGF_NO_FLAG, MGF_KEYS_INPUT|MGF_SET_INP2LEN32 },
    { "dynamic_3: md5(md5(md5($p)))", _Funcs_3, _Preloads_3, _ConstDefault, MGF_NO_FLAG, MGF_KEYS_INPUT|MGF_SET_INP2LEN32 },
    { "dynamic_4: md5($s.$p) (OSC)", _Funcs_4, _Preloads_4, _ConstDefault, MGF_SALTED, MGF_NO_FLAG, -24 },
    { "dynamic_5: md5($s.$p.$s)", _Funcs_5, _Preloads_5, _ConstDefault, MGF_SALTED, MGF_NO_FLAG, -12, 31, 56 },
    { "dynamic_6: md5(md5($p).$s)", _Funcs_6, _Preloads_6, _ConstDefault, MGF_SALTED, MGF_KEYS_BASE16_IN1, -23, 55, 80 },
    ...
    ...
    ...

例如 dynamic_0 是 32 字节,dynamic_4 是 24 字节,dynamic_5 是 12 字节,并且 ... 。

您必须修改源代码并重新编译 JTR 以支持超过默认值 salts 。


  • 在 passwd 文件中不允许使用 dynamic_4 字段。

破解盐渍哈希的简单方法:

sajjad@xxx:~/Downloads/john-1.7.9-jumbo-7/run$ cat pass.txt
管理员:d5fedea70cf14c3191fc8e94fe4ca8b9$Y0g7Wx78AdpjIdZd

sajjad@xxx:~/Downloads/john-1.7.9-jumbo-7/run$ ./john -form=dynamic_1 -w=password.lst pass.txt
已加载 1 个密码哈希 (dynamic_1: md5($p.$s) (joomla) [128x1 (MD5_Body)])
管理员(管理员)
    ...
    ...
    ...

为了显示破解密码,使用--show选项

sajjad@xxx:~/Downloads/john-1.7.9-jumbo-7/run$ ./john --show pass.txt