安装

安装

我继承了一些带有 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 中更改它,因为它在许多服务器上使用。

答案1

大约一年前,我碰巧编写了一个解密这些密码的小脚本。

有趣的是南海开发人员在混淆算法上花费了很大功夫,使用AES-256例如,但最终它仍然很容易被破译,因为它们捆绑了随机生成的加密密钥在编码的字符串中。很奇怪。

我把它放到了 GitHub 上供你参考:https://github.com/mludvig/sss_deobfuscate

使用方法很简单:

$ ./sss_deobfuscate AAAQABagVAjf9KgUyIxTw3A+HUfbig7N1+L0qtY4xAULt2GYHFc1B3CBWGAE9ArooklBkpxQtROiyCGDQH+VzLHYmiIAAQID
Decoded password: Passw0rd

希望有帮助:)

答案2

@MLu 的回答可以完成这项工作,但我会添加一些评论。

遗憾的是,开发人员调用了这些方法encrypt(),但decrypt()他们并没有做这样的事情。

如果你查看 python 模块的源代码(src/python/pysss.c),你会发现有一个pysss.password.decrypt()方法,但它被包围了。如果删除#if 0..#endif那些(以及 c-python 链接周围的对应内容)并重新编译源代码,则可以调用。例如:#if 0..#endifdecrypt()

import pysss

password = 'swordfish'
print(password)

obfobj = pysss.password()
obfpwd = obfobj.encrypt(password, obfobj.AES_256)
print(obfpwd)

decrypted_password = obfobj.decrypt(obfpwd)
print(decrypted_password)

答案3

https://github.com/jteppinette/python-sssd-ldap-auth

我根据@MLu 的工作创建了一个 python 包。


安装

$ pip install sssdldapauth

用法

命令行界面

$ sssdldapauth deobfuscate <obfuscated_password>
<password>

图书馆

from sssdldapauth import deobfuscate

password = deobfuscate("<obfuscated_password>")

相关内容