Decifrare vecchi dati dall'estensione PHP

0

Recentemente mi sono imbattuto in un mio vecchio sito Web che avevo utilizzato l'estensione PageProtectionPlus MediaWiki per crittografare parti di. Sono curioso di vedere cosa ho scritto, ma l'estensione non è più supportata e incompatibile con MediaWiki e PHP aggiornati. Quindi devo decodificarlo "a mano", per così dire. Tutto quello che devo andare è il testo in chiaro che è stato memorizzato nel database. Un esempio:

--- BEGIN KEY: RSA,c88e147b,BLOWFISH,CBC,56,8 ---

MXSmspeImtfWZ4sS4C48nAa5ZhT6SQnNnXmfJcGJhXGlTX4jc5D7WdhSwszJhIZ8PXrG99zHuEjh 012c09ytjiZVdK1aGTFJhXDDJYO/dtzcrFHVnPeWRmCky6DN1LuVMb8V4CbYhea97ZiwadVF+2kM BqTi1UhII/jx/UdEuq8=

--- END KEY ---

MpU/3GHcYc8rHqbeJSFNgz8uMIDD6c9l7Q3Grts7RjjWrMGoYdjvFYpy3fVKLielqFkX5O+5Ws4u 4YsaPGoEQCTlHnCMW8HrWl3jdp4ZP5o=

La buona notizia è che il formato è descritto nella documentazione (al link sopra) come segue:

--- BEGIN KEY: key_encryption_algorithm, key_encrypton_identifier, txt_encryption_algorithm, txt_encryption_mode, txt_encryption_key_size, txt_encryption_iv_size ---

BASE64 encoded & RSA-encrypted symmetric key with IV attached to it & with a few random bytes (salt - why not?)

--- END KEY ---

BASE64 encoded & symmetrically encrypted text body

Ho anche la chiave privata RSA che è stata usata (o almeno credo di sì). Sembra strano condividerlo anche tu, ma non c'è motivo di in realtà tenerlo privato.

-----BEGIN RSA PRIVATE KEY----- MIICWAIBAAKBgLyI+PJuZhq7zUYNpDfsWUv8av8tsQNM2pVMFFGPGNXGayLNAoPH fZDMcatLpPCJi4l7qoHgBauNHYN787XzIBsG/cbx1roWrPb0b3mKb9GL36JDVJqk o2aUwAo+tbtJ8+l8UkT7BrOEClgaNV+izSV06CAAQrKem1IaxrJqUVVTAgMBAAEC gYBGuzCCa06dGvXxIS8J1/7MVh+iKnctYMjkmA1LZ98OXIlXHgiifdYq27iNZiy0 HTYfVyjp3qzh5mg7KuaMzXCubjpmSysTP3BD+Cwjcxxw5/XLQWiuq7ncflUmXnzW FJA3HSTp46qbcsZ05pTNPMdOZ4KsYOlqvuqAkwBxUR/SuQJA3+9vz//nCPc9Ny+/ n9d/lw/3z0+PX+/v74ff7/8PL2/333+cdyePX4+XvxHncdefNl+PbHj3Bpf/72/x z+8f7QJA14fnz78/T+9vX0Tfqu/n3+WHX3+Prxsvgi/MD8//r99f/zdPjy8v/28/ 3xfPWBeXL79il38vtycXbg8P98ciPwJAVTN9gE8mMTQYd3HUX9WXNvudVqQ3sdHR oXo6Cs8pkOvyDHg6KN/FXh99JfaC776RVhe/sw7HNhwJBam7AFlD9QJANxDaARHz sxCRe920549zxph2BcgphauEb9aWZFPYF68Sb7pJ8WM0+CYMQ4tpxjAAyIo1Pk+Y eUrbiZr/kWanMQJAR6dXJOZAhOX+9TMrFDJDu84YGBsU83GcuJtJ/lf+0ldpMx/v FIOSbYcYkFGZwA+4iJlN1V8lqQGn1DoiXkN2mg== -----END RSA PRIVATE KEY-----

Sfortunatamente, mentre ho una comprensione generale della come funziona la crittografia , mi mancano le conoscenze pratiche per capire come estrarre le informazioni da questo. (Sono sicuro che openssl può farlo, ma non so come)

Come posso estrarre i miei dati dal formato di questo plug-in?

    
posta Bobson 19.02.2015 - 05:37
fonte

2 risposte

2

Dovresti inserire lo script seguente nella directory ROOT del PLUGIN (ad esempio quello che contiene il file 'PageProtectionPlus.php'.

Lo script prende un argomento - un nome di file che contiene il tuo 'Cryptogramme', cioè il blocco di testo che hai fornito sopra.

Lo script è tutt'altro che veloce, ma nei miei test è stato possibile crittografare e decifrare il testo.

<?php
    require_once("Encryption.php");
    $cg = file_get_contents($argv[1]);
    $e = new Encryption();
    echo $me->Decrypt($cg);

Usage: php ppp-decrypt <filename>

Assicurati che il percorso in LocalSettings.php (che definisce dove sono memorizzate le tue chiavi PPP) sia valido e contenga le tue chiavi. Se il file LocalSettings.php non esiste nella root del plug-in PPP, dovrai crearlo. Di seguito è riportato un esempio di cosa dovrebbe contenere.

<?php

$wgCachePages   = false;
$wgCacheEpoch   = 'date +%Y%m%d%H%M%S';
$wgPEMsize      = 1024;                 //default key size
$wgPEMlite_size = 512;                  //lite key size
$wgPEMdir       = '/home/user/keys';  //storage for keys
$wgPEMfile      = 'default.pem';        //default key's filename
$wgPEMlite_file = 'lite.pem';           //lite key's filename

$wgPEMold       = 'private.pem';        //old key's pathname (optional)
                                        //if you've been using PageProtection

Sono anche sicuro che questo è possibile con openssl, ma sembra che il plug-in PPP faccia diverse altre cose con la chiave / i dati crittografati, quindi è stato semplicemente più semplice utilizzare il loro framework esistente.

Assicurati di eseguire il backup dei tuoi tasti (i file .pem), poiché in alcuni casi sembra che PPP cancelli la directory dei tasti.

Potrebbe anche essere necessario installare alcuni pacchetti PHP, come di seguito.

pear install Crypt_RSA-1.2.1
pear install Crypt_Blowfish-1.1.0RC2
apt-get install php5-mcrypt

Fammi sapere come vai avanti:)

    
risposta data 19.02.2015 - 14:51
fonte
0

Per codificare il contenuto, è necessaria la chiave segreta simmetrica. Sembra che sia stato crittografato tramite PKI ... il riferimento alla chiave RSA.

Usando la chiave privata RSA, decrittografare la chiave sectet. Utilizzando lo stesso algoritmo come AES256 o qualunque cosa sia stata crittografata con ... decrittografare il contenuto usando la chiave segreta.

    
risposta data 20.02.2015 - 01:37
fonte

Leggi altre domande sui tag