Что делает этот PHP? Это кодировщик / декодер?

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

Следуя функции PHP ниже в текстовом файле, есть несколько тысяч символов текста, например:

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

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

EDIT: Клиент говорит, что у него есть полное право собственности и права на код, разработанный кем-то другим. Как он будет декодироваться? Требуется ли пароль?

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

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

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

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

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

Вот код, отформатированный:

 <?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: похоже, вы отформатировали текст, пока я отвечал.

Согласно этому сайту, это кодер. Я предполагаю, что это для обфускации кода.

http://www.ioncube.com/

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