可以获取明文密码吗?

Far*_*han 5 password

我在 20 多台 Plesk 服务器上托管了托管服务,版本 11。在以前的版本中,密码没有加密,如果我必须设计一些工具来管理托管帐户,我只是从数据库。但是现在密码是加密的,有什么办法可以解密密码吗?通过 API 或任何其他方式,以便我可以将基于 php 的托管管理与 plesk 11 集成?

Zor*_*che 12

为什么不弄清楚 Plesk 使用什么散列算法,并在您的 PHP 应用程序中复制该功能?您不需要密码的未加密版本来对其进行身份验证,并且您永远不想以明文或可逆加密方式存储密码。

  • 同意。以明文形式存储密码是*坏*的想法。 (5认同)

小智 11

Giulio 提供的代码没有帮助,这里有一个实际有效的 Python 脚本。需要 PyCrypto (python-crypto)。假设 Plesk 密钥存储在/etc/psa/private/secret_key. 只需运行它并将加密的密码作为参数传递:

./deplesk.py '$AES-128-CBC$T82uDt6NSdytfhjQaOIKGg==$CMJ6FIdAD8zJ0PgwQ3DosA=='
Run Code Online (Sandbox Code Playgroud)

脚本:

#!/usr/bin/env python
import sys
import base64
from Crypto.Cipher import AES

key = open('/etc/psa/private/secret_key', 'rb').read()

for pw in sys.argv[1:]:
    lead, typ, iv, ct = pw.split('$')
    iv = base64.b64decode(iv)
    ct = base64.b64decode(ct)
    assert typ == 'AES-128-CBC'
    plain = AES.new(key, mode=AES.MODE_CBC, IV=iv).decrypt(ct).rstrip(b'\0')
    print(plain.decode('utf8'))
Run Code Online (Sandbox Code Playgroud)