Я унаследовал несколько экземпляров EC2 с Centos, которые аутентифицируют пользователей в AWS Directory Service через LDAP. Теперь мне нужно выполнить несколько запросов вручную с 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
Использование простое:
$ ./sss_deobfuscate AAAQABagVAjf9KgUyIxTw3A+HUfbig7N1+L0qtY4xAULt2GYHFc1B3CBWGAE9ArooklBkpxQtROiyCGDQH+VzLHYmiIAAQID
Decoded password: Passw0rd
Надеюсь, что это поможет :)
Ответ @ MLu выполнит свою работу, но я добавлю комментарий.
Жаль, что разработчики назвали методы encrypt ()
и decrypt ()
, так как они не делают ничего подобного.
Если вы посмотрите на исходный код модуля python ( src / python / pysss.c
), то обнаружите pysss.password .decrypt ()
, но он окружен #if 0 .. # endif
. Если они (и соответствующий #if 0 .. # endif
вокруг связи c-python) удалены и исходный код перекомпилирован, можно вызвать decrypt ()
. Например: [
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)