Possível obter senha de texto simples?

5

Tenho hospedagem hospedada em mais de 20 servidores Plesk, versão 11. Como nas versões anteriores, as senhas não foram criptografadas, então se eu tivesse que projetar algumas ferramentas para gerenciar as contas de hospedagem, eu apenas peguei as senhas em texto puro do banco de dados. mas como agora as senhas são criptografadas, existe alguma maneira de descriptografar as senhas? através da API ou de qualquer outra forma para que eu possa integrar o meu gerenciamento de hospedagem baseada em php com o plesk 11?

    
por Farhan 06.09.2012 / 23:51

3 respostas

10

O código fornecido por Giulio não é útil, aqui está um script Python que realmente funciona. Requer PyCrypto (python-crypto). Presume que a chave secreta do Plesk esteja armazenada em /etc/psa/private/secret_key . Basta executá-lo e passar senhas criptografadas como argumentos:

./deplesk.py '$AES-128-CBC$T82uDt6NSdytfhjQaOIKGg==$CMJ6FIdAD8zJ0PgwQ3DosA=='

Script:

#!/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'
./deplesk.py '$AES-128-CBC$T82uDt6NSdytfhjQaOIKGg==$CMJ6FIdAD8zJ0PgwQ3DosA=='
') print(plain.decode('utf8'))
    
por 30.10.2013 / 02:24
11

Por que não apenas descobrir qual algoritmo de hashing o Plesk usa e replicar essa funcionalidade em seu aplicativo PHP? Você não precisa da versão não criptografada de uma senha autenticada, e nunca deseja armazenar uma senha claramente ou com uma criptografia reversível.

    
por 07.09.2012 / 00:30
2
Teoricamente, se o programa puder obter a senha de criptografia, sim, você poderá recuperar a senha em texto simples.
EDITAR : código de decodificação adicionado.

function decrypt_password($pass,$key)
{

$base64encoded_ciphertext = $pass;

$res_non = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($base64encoded_ciphertext), ‘ecb’);

$decrypted = $res_non;
$dec_s2 = strlen($decrypted);

$padding = ord($decrypted[$dec_s2-1]);
$decrypted = substr($decrypted, 0, -$padding);

return  $decrypted;
}
    
por 07.09.2012 / 00:38

Tags