ech*_*hox 29
linux 系统上的密码没有加密,它们是散列的,这是一个巨大的差异。
根据定义,不可能反转散列函数。有关更多信息,请参阅哈希维基百科条目。
使用哪种散列函数取决于您的系统配置。MD5和河豚是使用哈希函数的常见示例。
因此,用户的“真实”密码永远不会存储在系统中。
如果您登录,您输入的密码字符串将被散列并根据您的 /etc/shadow 文件进行检查。如果匹配,您显然输入了正确的密码。
无论如何,仍然有一些针对密码哈希的攻击媒介。您可以保留一个常用密码字典并自动尝试。互联网上有很多词典。另一种方法是尝试所有可能的字符组合,这将消耗大量时间。这被称为暴力攻击。
Rainbowtables是另一个很好的针对哈希的攻击媒介。这个概念背后的想法是简单地预先计算所有可能的散列,然后在表中查找散列以找到相应的密码。有几个分布式计算项目来创建这样的表,大小因使用的字符而异,大多是几个TB。
为了将此类查找表的风险降至最低,这是 Unix/Linux 中的一种常见做法和默认行为,即向密码哈希添加所谓的“ salt ”。您散列密码,向散列添加一个随机盐值并再次散列这个新字符串。您需要保存新的散列和盐,以便能够检查输入的值是否是正确的密码。这种方法的巨大优势是,您必须为每个唯一的盐创建新的查找表。
对不同操作系统的用户密码执行字典或蛮力攻击的流行工具是John The Ripper(或 JTR)。更多详情请见项目主页:
John the Ripper 是一种快速密码破解程序,目前可用于多种 Unix、Windows、DOS、BeOS 和 OpenVMS。它的主要目的是检测弱 Unix 密码。