Descifrando datos antiguos de la extensión PHP

0

Recientemente encontré un viejo sitio web mío en el que había usado PageProtectionPlus MediaWiki extensión para cifrar partes de. Tengo curiosidad por ver lo que escribí, pero la extensión ya no es compatible e incompatible con MediaWiki y PHP actualizados. Así que tengo que descifrarlo "a mano", por así decirlo. Todo lo que tengo que seguir es el texto que se almacenó en la base de datos. Un ejemplo:

  

--- CLAVE DE INICIO: RSA, c88e147b, BLOWFISH, CBC, 56,8 ---

     

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

     

--- TECLA FINAL ---

     

MpU / 3GHcYc8rHqbeJSFNgz8uMIDD6c9l7Q3Grts7RjjWrMGoYdjvFYpy3fVKLielqFkX5O + 5Ws4u   4YsaPGoEQCTlHnCMW8HrWl3jdp4ZP5o =

La buena noticia es que el formato se describe en la documentación (en el enlace anterior) de la siguiente manera:

  

--- PRINCIPIO DE LA TECLA: key_encryption_algorithm, key_encrypton_identifier, txt_encryption_algorithm, txt_encryption_mode,   txt_encryption_key_size, txt_encryption_iv_size ---

     

BASE64 codificado & Clave simétrica encriptada RSA con IV adjunto   a ello & con algunos bytes aleatorios (sal, ¿por qué no?)

     

--- TECLA FINAL ---

     

BASE64 codificado & Cuerpo de texto cifrado simétricamente

También tengo la clave privada RSA que se usó (o al menos creo que sí). Se siente raro compartirlo también, pero no hay razón para en realidad mantenerlo en privado.

  

----- COMIENCE LA CLAVE RSA PRIVADA -----   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 ==   ----- CLAVE PRIVADA DE LA RSA -----

Desafortunadamente, aunque tengo una comprensión general de cómo funciona la criptografía , carezco de conocimientos prácticos para descubrir cómo extraer la información de esto. (Estoy seguro de que openssl puede hacerlo, pero no sé cómo)

¿Cómo puedo extraer mis datos del formato de este complemento?

    
pregunta Bobson 19.02.2015 - 05:37
fuente

2 respuestas

2

Debe colocar el siguiente script en el directorio ROOT del PLUGIN (es decir, el que contiene el archivo 'PageProtectionPlus.php'.

El script toma un argumento: un nombre de archivo que contiene su 'Cryptogramme', es decir, el bloque de texto que proporcionó anteriormente.

El script es todo menos rápido, pero en mis pruebas ha podido cifrar y descifrar texto.

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

Usage: php ppp-decrypt <filename>

Asegúrese de que la ruta en LocalSettings.php (que define dónde están almacenadas sus claves PPP) sea válida y contenga sus claves. Si el archivo LocalSettings.php no existe en la raíz del complemento PPP, deberá crearlo. A continuación se muestra un ejemplo de lo que debería contener.

<?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

También estoy seguro de que esto es posible con openssl, pero parece que el complemento PPP hace varias otras cosas con la clave / datos encriptados, por lo que fue más fácil utilizar su marco existente.

Asegúrese de hacer una copia de seguridad de sus claves (los archivos .pem), ya que en ocasiones PPP parece que borra el directorio de claves.

Es posible que también necesite instalar algunos paquetes PHP, como se muestra a continuación.

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

Hazme saber cómo te va :)

    
respondido por el Seidr 19.02.2015 - 14:51
fuente
0

Para descifrar el contenido, se necesita la clave secreta simétrica. Parece que se ha cifrado a través de PKI ... la referencia de la clave RSA.

Usando la clave privada RSA, descifre la clave de sección. Usando el mismo algoritmo como AES256 o lo que sea que esté cifrado con ... descifre el contenido usando la clave secreta.     

respondido por el Darrell Teague 20.02.2015 - 01:37
fuente

Lea otras preguntas en las etiquetas