生成思科“秘密”密码哈希的代码?

Bre*_*man 14 cisco

有没有人有一个指向代码(或只是算法)的指针,思科使用它来为“启用机密”之类的东西生成密码哈希?

我不想闯入任何事情;我正在尝试在给定明文密码的情况下生成适当的“启用机密”行,而不是使用散列密码解码现有的“启用机密”行。我需要这个用于我正在使用的自动配置文件生成器(Netomata Config Generator)。

基本上,我想要的是 Cisco 相当于用于 Web 服务器的“htpasswd”命令。

例如,当我将以下带有明文密码的命令放入 Cisco 配置时:

enable secret foobar
Run Code Online (Sandbox Code Playgroud)

然后当我执行“show config”命令时(假设我启用了“服务密码加密”),我看到的是这样的:

enable secret 5 $1$pdQG$0WzLBXV98voWIUEdIiLm11
Run Code Online (Sandbox Code Playgroud)

我想要将“foobar”转换为“5 $1$pdQG$0WzLBXV98voWIUEdIiLm11”的代码,以便我可以在我的配置生成工具中生成已经散列的密码,而不是将明文密码放入生成的配置中并等待路由器生成哈希。

我认为散列结果中的“5”是某种散列算法标识符。如果思科目前或历史上有其他哈希算法,那么我也希望拥有这些算法的代码。

Mur*_*iar 18

根据本网站,OpenSSL 命令行实用程序似乎提供了您需要的功能:

$ openssl passwd -1 -salt pdQG -table foobar
foobar  $1$pdQG$0WzLBXV98voWIUEdIiLm11
$
Run Code Online (Sandbox Code Playgroud)

并且在库本身中大概有一个等效的功能。

我不确定 IOS 是否要求您使用特定的盐值,但从技术上讲,只要您在“启用机密”命令中提供的字符串是有效的 MD5 密码摘要,就没有理由这样做。如果您有机会进行测试,我很想知道您的结果。


Bre*_*man 11

Cisco 似乎需要 4 个字符的盐。默认情况下,如果没有“ -salt salt ”参数,openssl将生成一个 8 个字符的盐。

您可以使用openssl适当的随机 4 字符盐生成 Cisco 兼容的“明文”哈希,如下所示:

openssl passwd -salt `openssl rand -base64 3` -1 "cleartext"
Run Code Online (Sandbox Code Playgroud)

" openssl rand -base64 3" 子命令生成 3 个随机字节,然后以 base64 格式对它们进行编码,从而为您提供 4 个可打印字符(正是 Cisco 兼容 salt 所需的字符)。

感谢 Murali Suriar 的答案(在本页的其他地方),这让我开始了这个解决方案的正确道路。