gpt4 book ai didi

passwords - 如何暴力破解多次散列的密码?

转载 作者:行者123 更新时间:2023-12-04 06:22:56 27 4
gpt4 key购买 nike

我昨天问了一个关于安全散列的问题,这让我开始思考如何破解使用自定义散列算法创建的密码。我当前的(非常不安全的)密码脚本在密码上使用 sha1 的迭代,然后对由 3 位盐预先生成的哈希进行迭代。

$hash = sha1($pass1);

//creates a 3 character sequence
function createSalt()
{
$string = md5(uniqid(rand(), true));
return substr($string, 0, 3);
}

$salt = createSalt();

$hash = sha1($salt . $hash);

现在,我是这台服务器的管理员,可以完全访问源代码和密码表,加上管理工具可以简单地将用户密码重置为我想要的任何内容,但为了更好地理解安全性,我很好奇如何像黑客那样去做。我有一个名为 cain & abel 的程序,它对特定的哈希算法进行暴力破解,但是我将如何做一些事情,比如获取每个尝试过的密码,对其进行 sha1 处理,将其连接到(已知)salt,然后再次对其进行 sha1 处理?这看起来很简单,但我从来没有用像 C++ 这样的语言编程,我认为这是必要的。

编辑:

我应该指定以下内容:

这是一种离线暴力攻击。

我有一个充满哈希值和它们各自的盐的数据库。

盐是每个用户的,但我一次只想攻击一个用户的密码。

具体来说,我问的是如何使用自定义的一系列散列算法来暴力破解密码,例如我上面展示的算法:

伪代码:
$hash = sha1( 'password' );
$salt = '3Sf';
$hash = sha1( $salt.$hash);

我认为任何用于执行此操作的方法也可以用于暴力破解使用已知算法散列的密码,例如:
$hash = sha1( 'password' );
$salt = '3Sf';
for($i; $i<1000; $i++){
$hash = sha1( $salt.$hash);
}

因此,我并不是特别要求 CODE 做第一件事,而是问我可以通过什么方法针对自定义散列算法(如我上面列出的 2)运行蛮力程序。

注意:我绝不说我可能会遇到这种情况,但我想知道它是如何完成的。

最佳答案

据我所知,没有广泛可用的哈希破解工具支持此功能。

但是,正如您所说,如果有足够的时间,编写一个程序来破解散列将非常简单。

如果你的攻击者已经知道你计算加盐哈希的方法,我们可以安全地假设他可以访问你的数据库(它也必须存储盐),它的转储或访问你的应用程序和客户端之间的纯文本通信.

然后破解哈希,他会简单地复制你的 sha1($salt . $hash) 函数并开始向它输入通用密码。与纯暴力强制所有可能的组合相比,这将节省时间。他会从您的数据库中获取 $salt 并将哈希加盐哈希密码的结果与存储在同一数据库中的加盐哈希进行比较。
如果生成的哈希值匹配,则密码已被“破解”。

一般来说,为每个用户使用单独的盐是一个好主意,因为它会以指数方式增加破解整个数据库密码表的时间。与其使用单个盐对单个散列函数运行词表,他必须针对数据库中的每个散列 PW 运行整个词表。

也就是说,如果攻击者深入到您的系统中以实际获取哈希/盐,那么他将更容易更改您的代码以向他发送最初登录的用户凭据的纯文本副本。

关于passwords - 如何暴力破解多次散列的密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6344849/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com