我已经使用 Centos 继承了许多 EC2 实例,这些实例通过 LDAP 针对 AWS Directory Service 对用户进行身份验证。现在我需要ldapsearch
使用相同的帐户运行一些手动查询来调试一些身份验证问题。但是密码在配置中是加密的,如下所示:
[sssd]
domains = LDAP
services = nss, pam
[domain/LDAP]
id_provider = ldap
cache_credentials = True
ldap_schema = AD
ldap_uri = ldaps://...
ldap_search_base = ...
ldap_default_bind_dn = ...
ldap_default_authtok = AAAQAB3QDeZ7+...cBSpT0ZABu4AAQID
ldap_default_authtok_type = obfuscated_password
有什么方法可以解密/去混淆ldap_default_authtok
?我不想在 AD 中更改它,因为它已在许多服务器上使用。
大约一年前,我碰巧写了一个小脚本来解密这些密码。
有趣的是,SSS开发人员在混淆算法上做了很多工作,例如使用AES-256,但最终它仍然很容易破译,因为他们将随机生成的加密密钥捆绑在编码字符串中。诡异的。
我为你放到了 GitHub 上:https ://github.com/mludvig/sss_deobfuscate
用法很简单:
希望有帮助:)
@MLu 的回答将完成工作,但我会添加一些评论。
开发人员调用这些方法是一种耻辱
encrypt()
,decrypt()
因为他们没有这样做。如果您查看 python 模块 (
src/python/pysss.c
) 的源代码,则有一个pysss.password.decrypt()
方法,但它被#if 0..#endif
. 如果那些(以及 c-python 链接周围的相应)被删除并且可以调用#if 0..#endif
源重新编译。decrypt()
例如:https://github.com/jteppinette/python-sssd-ldap-auth
我基于@MLu 的工作创建了一个python 包。
安装
用法
命令行界面
图书馆