LDAPを介してAWSDirectoryServiceに対してユーザーを認証するCentosを使用して多数のEC2インスタンスを継承しました。次に、いくつかの認証の問題をデバッグするために、同じアカウントを使用して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年前にこれらのパスワードを復号化する小さなスクリプトを書きました。
興味深いことに、[〜#〜] sss [〜#〜]の開発者は、AES-256などですが、ランダムに生成された暗号化キーがバンドルされているため、最終的には簡単に解読できます。エンコードされた文字列内。奇妙な。
私はあなたのためにそれをGitHubに置きます: https://github.com/mludvig/sss_deobfuscate
使い方は簡単です:
$ ./sss_deobfuscate AAAQABagVAjf9KgUyIxTw3A+HUfbig7N1+L0qtY4xAULt2GYHFc1B3CBWGAE9ArooklBkpxQtROiyCGDQH+VzLHYmiIAAQID
Decoded password: Passw0rd
それが役に立てば幸い:)
@MLuの答えは仕事を成し遂げるでしょうが、私はいくつかの解説を追加します。
開発者がメソッドencrypt()
およびdecrypt()
を呼び出さないのは残念です。
python module(_src/python/pysss.c
_)のソースを見ると、pysss.password.decrypt()
メソッドがありますが、_#if 0..#endif
_で囲まれています。 (およびc-pythonリンケージの周りの対応する_#if 0..#endif
_)が削除され、ソースが再コンパイルされます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)
_