Answers:
linux系统上的密码未加密,而是经过哈希处理,这是一个很大的区别。
根据定义,不可能反转哈希函数。有关更多信息,请参见Hash Wikipedia条目。
使用哪种哈希函数,取决于您的系统配置。MD5和河豚是使用的哈希函数的常见示例。
因此,用户的“真实”密码永远不会存储在系统上。
如果登录,输入的密码字符串将被散列,并对照/ etc / shadow文件进行检查。如果匹配,您显然输入了正确的密码。
无论如何,仍然存在一些针对密码哈希的攻击媒介。您可以保留常用密码的字典,然后自动尝试。互联网上有很多词典。另一种方法是仅尝试所有可能的字符组合,这将消耗大量时间。这称为蛮力攻击。
Rainbowtables是另一个针对哈希的不错的攻击媒介。这个概念背后的思想是简单地预先计算所有可能的哈希值,然后在表中查找哈希以找到相应的密码。有多个分布式计算项目可创建此类表,其大小因所使用的字符而异,并且多数为TB。
为了最大程度地减少这种查找表的风险,在Unix / Linux中,通常的做法是使用默认行为,即在密码哈希中添加所谓的“ 盐 ”。您对密码进行哈希处理,向哈希添加一个随机的salt值,然后再次对这个新字符串进行哈希处理。您需要保存新的哈希值和盐值,以便能够检查输入的值是否是正确的密码。这种方法的巨大优势在于,您将必须为每种唯一的盐创建新的查找表。
John The Ripper(或JTR)是一种流行的工具,可以对不同操作系统的用户密码执行字典或蛮力攻击。有关更多详细信息,请参见项目主页:
开膛手约翰(John the Ripper)是一个快速的密码破解者,目前可用于Unix,Windows,DOS,BeOS和OpenVMS的许多版本。其主要目的是检测弱Unix密码。
由于这些密码口令是单向加密的,因此实际上是不可能解密的。
正如其他人所说,您不能真正解密影子文件。
您可以尝试的唯一方法是使用开膛手约翰(John the Ripper)之类的工具强行猜测密码。这可能成功也可能不会成功,并且几乎肯定会花费很长时间。