使用PHP解密器进行RNCryptor


Using PHP Decryptor for RNCryptor

我反编译了一个iOS应用程序,看到了用于加密字符串的私钥和方法。我用charles来获取这些数据,并得到一个字符串,如下所示:Charles包裹数据

/random1/name/BQPNTF9MX8A3FbV1V5jtFozQnSkNtBK5AFJJtBJZgFkXIZWlvxd3LzH6eIQznMLW7U8V3M5FDU9j9zGrkajIc5VjqIS1q8Sy+L9tLPE51ay0xlKVlRgqjWGe0HGUBBAtlTk+rOZEeR/+TODEN79mYtgWTNpscRr9dy6DoWw7wvE7MiLIibjQ4PbcFQ/EpvIgWOzCorobYbEUoI/aw==HTTP/1.1

然后我查看了iOS代码,看到了他们的方法反汇编

所以我写了一个php服务器来解码这个加密字符串:

require __DIR__ . '/../autoload.php';
$password = "e12d33re";
$base64Encrypted = "BQN7evDaWMlRXiOOeCEIkL6+3K2dLRKv/e9tYTxrSVMTojf6gMPL7hW7gfuYHt622CIlfon5vsGpv9ykM6WbbMPdH7Q56lcbRPA2KO9aquYR5fM8e0fGGb7AQzPs3G0CJAAYG0E9i8cG1VH3uVP6VWjK5LkpRuUOk8QuoG1j3eP0fUZVY8RSjKyFZpbLlDIrANg4T5DmkigVTEN82QYCbLv2Iw==";
$cryptor = new 'RNCryptor'Decryptor();
$plaintext = $cryptor->decrypt($base64Encrypted, $password);
echo "Base64 Encrypted:'n$base64Encrypted'n'n";
echo "Plaintext:'n$plaintext'n'n";

但我无法解密。

我通过代码检查了它的版本,发现它是版本5

$base64Encrypted = "BQN7evDaWMlRXiOOeCEIkL6+3K2dLRKv/e9tYTxrSVMTojf6gMPL7hW7gfuYHt622CIlfon5vsGpv9ykM6WbbMPdH7Q56lcbRPA2KO9aquYR5fM8e0fGGb7AQzPs3G0CJAAYG0E9i8cG1VH3uVP6VWjK5LkpRuUOk8QuoG1j3eP0fUZVY8RSjKyFZpbLlDIrANg4T5DmkigVTEN82QYCbLv2Iw==";
$actualVersion = ord(substr(base64_decode($base64Encrypted), 0, 1));

我在ios二进制文件中看到了rncryptor lib。

第一张照片,我用私钥成功解密(他们用RNcryptor加密了v4字符串)http://i.stack.imgur.com/Kq5m1.png

第二张图片,他们使用了未知的方法进行加密,但肯定是100%的rncryptor(他们不加密v4字符串)http://i.stack.imgur.com/NfScg.png

我在ios二进制文件中看到了rncryptor lib。

第一张照片,我用私钥成功解密(他们用RNcryptor加密了v4字符串)版本1

第二张图片,他们使用了未知的方法进行加密,但肯定是100%的rncryptor(他们不加密v4字符串)版本2