我目前正在尝试在网络上重新创建影子哈希+格式(用于 CTF 挑战和可能需要重新创建影子密码或破解非常我不确定 /etc/shadow 中的密码是什么格式(我经常使用简单的密码——我经常使用 Chromebook,因此对我来说在网上购买它很方便)。我不确定 /etc/shadow 中的密码是什么格式。我目前所知道的是,它当然是一个哈希值(取决于版本$x$
),带有盐值($x$salt
),然后是一个$x$salt$hash
带有自定义字母表的 base64 哈希值——我不确定这些信息是否正确或它使用什么字母表——我已经有了哈希值,但是它使用的编码是欺骗我的部分。
正如您所尝试的,在线哈希编码器不会产生与 /etc/shadow 中使用的相同的哈希值,这是我当前的格式问题。
答案1
这些哈希值由 crypt(3) 函数创建。虽然这个函数最初是 libc 的一部分,但现在libxcrypt库在新的 Linux 发行版中提供了它,并附带一个地穴(5)手册页稍微描述了它支持的格式。
首先请注意,例如,虽然$5$
描述为“SHA-256”,但不是实际上是普通的 SHA-256,它被称为“sha256crypt”,涉及几千轮 SHA-256(显然它基于 PBKDF1),如你所见在源中。因此,即使您正确添加盐,普通的 SHA-256 哈希器也永远不会产生正确的结果。
盐和哈希都使用 Base64 编码,字母表略有自定义。但在同一个源代码中,你可以看到,至少对于某些算法,盐不是使用前解码 – 对于$5$SaLt$hAsH
,整个SaLt$
直接用作盐。这可能会有所不同 – bcrypt做例如,解码盐。