Что делает этот PHP?Это кодер / декодер? - PullRequest
3 голосов
/ 07 октября 2010

Я вообще не знаю PHP;это больше вопрос любопытства.

После функции PHP ниже в текстовом файле есть несколько тысяч символов текста, таких как:

xnEFstUhSNWGSx5zTq4X/AUw/rtism+klrBETWg0xE1uwb49rnRxrgrgY5EEp3Y0uvTcvLqhUFOP
4n7LDLQpQ9UACTyuUjGBKmUScQCYLCP08u06t0K3nWTNiM7Q6bQMk/iZBE+UK1ywbVC1Lzr9OOEK

Кодирует ли эта функция phpслучайно выглядящий текст в php?Можно ли из этого выяснить схему шифрования?

РЕДАКТИРОВАТЬ: Клиент говорит, что он имеет полное право собственности и права на код, разработанный кем-то другим.Как бы это было расшифровано?Требуется ли пароль?

<?php //003ac
if (!extension_loaded('ionCube Loader')) {
    $__oc = strtolower(substr(php_uname(), 0, 3));
    $__ln = 'ioncube_loader_' . $__oc . '_' . substr(phpversion(), 0, 3) . (($__oc == 'win') ? '.dll' : '.so');
    @dl($__ln);
    if (function_exists('_il_exec')) {
        return _il_exec();
    }
    $__ln   = '/ioncube/' . $__ln;
    $__oid  = $__id = realpath(ini_get('extension_dir'));
    $__here = dirname(__FILE__);
    if (strlen($__id) > 1 && $__id[1] == ':') {
        $__id   = str_replace('\\', '/', substr($__id, 2));
        $__here = str_replace('\\', '/', substr($__here, 2));
    }
    $__rd = str_repeat('/..', substr_count($__id, '/')) . $__here . '/';
    $__i  = strlen($__rd);
    while ($__i--) {
        if ($__rd[$__i] == '/') {
            $__lp = substr($__rd, 0, $__i) . $__ln;
            if (file_exists($__oid . $__lp)) {
                $__ln = $__lp;
                break;
            }
        }
    }
    @dl($__ln);
} else {
    die('The file ' . __FILE__ . " is corrupted.\n");
}
if (function_exists('_il_exec')) {
    return _il_exec();
}
echo ('Site error: the file <b>' . __FILE__ . '</b> requires the ionCube 
PHP Loader ' . basename($__ln) . '  to be installed by the site administrator.');
exit(199);
?>

Ответы [ 5 ]

11 голосов
/ 07 октября 2010

Это практически PHP-кодированный ионный куб, или, если хотите, запутанный.Ioncube - это несвободный механизм выполнения обфусцированных байт-кодов, а ioncube loader - это библиотека, которая обрабатывает запутанный код.

Стоит отметить, что 'deobfuscator' является бесплатной библиотекой, и она загружена в большинствеустановки PHP, которые я видел.

5 голосов
/ 07 октября 2010

Зашифровано ionCube . Расширение ionCube будет обрабатывать дешифрование кода. Возможно, его можно будет декодировать самостоятельно, но ознакомьтесь с лицензионным соглашением с разработчиком, поскольку нет уверенности в том, что это разрешено законом.

Эта часть кода будет проверять только то, установлено ли расширение ionCube на вашем сервере. Он не участвует в расшифровке файла (я думаю, что не так просто прочитать запутанный код: -)).

4 голосов
/ 07 октября 2010

Вот код в формате:

<?php
  //003ac
  if (!extension_loaded('ionCube Loader')) {
      $__oc = strtolower(substr(php_uname(), 0, 3));
      $__ln = 'ioncube_loader_' . $__oc . '_' . substr(phpversion(), 0, 3) . (($__oc == 'win') ? '.dll' : '.so');
      @dl($__ln);
      if (function_exists('_il_exec')) {
          return _il_exec();
      }
      $__ln = '/ioncube/' . $__ln;
      $__oid = $__id = realpath(ini_get('extension_dir'));
      $__here = dirname(__FILE__);
      if (strlen($__id) > 1 && $__id[1] == ':') {
          $__id = str_replace('\\', '/', substr($__id, 2));
          $__here = str_replace('\\', '/', substr($__here, 2));
      }
      $__rd = str_repeat('/..', substr_count($__id, '/')) . $__here . '/';
      $__i = strlen($__rd);
      while ($__i--) {
          if ($__rd[$__i] == '/') {
              $__lp = substr($__rd, 0, $__i) . $__ln;
              if (file_exists($__oid . $__lp)) {
                  $__ln = $__lp;
                  break;
              }
          }
      }
      @dl($__ln);
  } else {
      die('The file ' . __FILE__ . " is corrupted.\n");
  }
  if (function_exists('_il_exec')) {
      return _il_exec();
  }
  echo('Site error: the file <b>' . __FILE__ . '</b> requires the ionCube 
PHP Loader ' . basename($__ln) . '  to be installed by the site administrator.');
  exit(199);
?>

Похоже, что это проверяет загрузчик ionCube и декодирует зашифрованный php различными способами, если расширение найдено. В противном случае это позволяет администратору узнать, что ему нужно установить расширение.

edit: похоже, что вы отформатировали текст, когда я отвечал.

3 голосов
/ 07 октября 2010

По данным этого сайта, это кодировщик.Я думаю, что это для запутывания кода.

http://www.ioncube.com/

2 голосов
/ 07 октября 2010

Да, это для шифрования / дешифрования исходного кода PHP. Вы можете увидеть внизу, что это относится к ionCube продукции.

...