是否有人有指向思科用于为“启用秘密”等生成密码哈希的代码(或只是算法)的指针?
我并不是想闯入任何东西;我只是试图根据明文密码生成适当的“启用机密”行,不是使用散列密码解码现有的“启用机密”行。我需要这个来制作我正在开发的自动配置文件生成器(Netomata 配置生成器)。
基本上,我想要的是用于 Web 服务器的 Cisco 等效“htpasswd”命令。
例如,当我将以下命令和明文密码放入 Cisco 配置中时:
enable secret foobar
然后,当我执行“show config”命令时(假设我已启用“服务密码加密”),我看到的内容如下:
enable secret 5 $1$pdQG$0WzLBXV98voWIUEdIiLm11
我想要将“foobar”转换为“5 $1$pdQG$0WzLBXV98voWIUEdIiLm11”的代码,以便我可以在我的配置生成工具中生成已经散列的密码,而不是将明文密码放在生成的配置中并等待路由器生成散列。
我推测散列结果中的“5”是某种散列算法标识符。如果思科目前或过去使用过其他散列算法,那么我也希望获得这些算法的代码。
答案1
按照本网站,OpenSSL 命令行实用程序似乎提供了您需要的功能:
$ openssl passwd -1 -salt pdQG -table foobar
foobar $1$pdQG$0WzLBXV98voWIUEdIiLm11
$
并且库本身可能也有一个等效的功能。
我不确定 IOS 是否要求您使用特定的盐值,但从技术上讲,只要您在“启用机密”命令中提供的字符串是有效的 MD5 密码摘要,就没有理由这样做。如果您有机会进行测试,我很想知道您的结果。
答案2
Cisco 似乎要求使用 4 个字符的盐。默认情况下,如果没有“-salt
盐”参数,openssl
将生成一个8个字符的盐。
但是,您可以使用openssl
适当的随机 4 个字符盐来生成与 Cisco 兼容的“明文”哈希,如下所示:
openssl passwd -salt `openssl rand -base64 3` -1 "cleartext"
“ openssl rand -base64 3
”子命令生成 3 个随机字节,然后以 base64 格式对其进行编码,这将为您提供 4 个可打印字符(这正是 Cisco 兼容盐所需要的)。
感谢 Murali Suriar 的回答(在本页的其他地方),让我走上了找到此解决方案的正确道路。
答案3
这是一个很好的参考http://haxcess.com/2008/10/21/cisco-password-recovery/
底线是哈希被分解成几个部分
-> Indicates MD5 algorithm
| -> Salt
| | -> Salt + Password Hash
| | |
$1$mERr$RchIrJirmCXltFBZ2l50l/
这是一个 Perl 解决方案,它在过去曾为我带来过奇迹。将它放入循环中并让它运行。
#!/usr/bin/perl
use Crypt::PasswdMD5;
my $hash = unix_md5_crypt('password','salt')
答案4
“5”表示明文密码已转换为思科密码类型 5。类型 5 密码是一种基于 MD5 的算法(但我无法告诉您如何计算它,抱歉)。执行“启用密码”时使用的类型 7 是一种众所周知的可逆算法。“服务密码加密”只需确保密码不会以明文形式存储(类型 0)
看看http://en.wikipedia.org/wiki/Crypt_(Unix)#MD5-based_scheme还有祝你好运 :)
编辑:你也可以看看http://www.h4x3d.com/md5-and-crypt-password-generator/,http://www.koders.com/c/fid530E8983791E1CB2AB90EAA69A68789FA2A83A6D.aspx和http://www.cryptgenerator.de/