WHMCS V6.0.0 测试1版 未破解

- 编辑:admin -

WHMCS V6.0.0 测试1版 未破解

WHMCS V6.0.0 测试1版 未破解

WHMCS最近更新比较频繁,从5.3.12到6 的发布真的是离的太近了,但是这个版本是测试版未破解的,有兴趣的朋友可以尝试一下,不过要注意的是新版本发布必定有很多漏洞,建议仅作测试使用,请勿做于商业,造成损失就得不偿失了。

<?php

class WHMCS\License {
	protected $licensekey = '';
	protected $localkey = '';
	protected $keydata = array(  );
	protected $salt = '';
	protected $date = '';
	protected $localkeydecoded = false;
	protected $responsedata = '';
	protected $postmd5hash = '';
	protected $localkeydays = '10';
	protected $allowcheckfaildays = '5';
	protected $debuglog = array(  );
	protected $version = '7a1bbff560de83ab800c4d1d2f215b91006be8e6';

	function __construct($whmcs) {
		$this->licensekey = $whmcs->get_license_key(  );
		$this->localkey = $whmcs->get_config( 'License' );
			= 6;
		$this->salt = ( 'WHMCS' . $whmcs->get_config( 'Version' ) . 'TFB' . $whmcs->get_hash(  ) );
			= 6;
		$this->date = ( 'Ymd' );
		$this->decodeLocalOnce(  );

		if (isset( $_GET['forceremote'] )) {
		}

		$this->forceRemoteCheck(  );
		dibeciijih::getInstance(  )->doExit(  );
	}

	/**
	 * Retrieve a WHMCS\License object via singleton.
	 *
	 * @deprecated 6.0 Instance should be retrieved from DI [DI::make('license');]
	 *
	 * @return License
	 */
	function getInstance() {
		return DI::make( 'license' );
	}

	/**
	 * Retrieve a list of licensing server IPs
	 *
	 * @return array
	 */
	function getHosts() {
			= 6;
		$hosts = ( 'licensing28.whmcs.com' );

		if ($hosts === dbebefagji) {
		}

		$hosts = array(  );
		return $hosts;
	}

	function getLicenseKey() {
		return $this->licensekey;
	}

	function getHostIP() {
		if (isset( $_SERVER['SERVER_ADDR'] )) {
			$ip = $_SERVER['SERVER_ADDR'];

			if (isset( $_SERVER['LOCAL_ADDR'] )) {
				$ip = $_SERVER['LOCAL_ADDR'];
			}
		}

			= 6;
			= 6;
		( (  ) );
		$ip = ;
		$ip = '';
		return $ip;
	}

	function getHostDomain() {
		if (isset( $_SERVER['SERVER_NAME'] )) {
			$_SERVER['SERVER_NAME'];
		}

		return (true ?  : '');
	}

	function getHostDir() {
		return bhjhchcdec;
	}

	function getSalt() {
		return $this->salt;
	}

	function getDate() {
		return $this->date;
	}

	function checkLocalKeyExpiry() {
		$originalcheckdate = $this->getKeyData( 'checkdate' );
			= 6;
			= 6;
			= 6;
			= 6;
			= 6;
		( 'Ymd', ( 0, 0, 0, ( 'm' ), ( 'd' ) - $this->localkeydays, ( 'Y' ) ) );
		$localexpirymax = ;

		if ($originalcheckdate < $localexpirymax) {
			return dbebefagji;
				= 6;
			'Ymd';
				= 6;
			0;
			0;
			0;
				= 6;
			( 'm' );
				= 6;
			'd';
		}

			= 6;
		( ( (  ) + 2, ( 'Y' ) ) );
		$localmax = ;

		if ($localmax < $originalcheckdate) {
			return dbebefagji;
			cjhcifebeg;
		}

		return ;
	}

	function remoteCheck($forceRemote = false) {
		$localkeyvalid = $this->decodeLocalOnce(  );
		$this->debug( 'Local Key Valid: ' . $localkeyvalid );

		if ($localkeyvalid) {
			$localkeyvalid = $this->checkLocalKeyExpiry(  );
			$this->debug( 'Local Key Expiry: ' . $localkeyvalid );

			if ($localkeyvalid) {
				$localkeyvalid = $this->validateLocalKey(  );
				$this->debug( 'Local Key Validation: ' . $localkeyvalid );
				!$localkeyvalid;
			}

			if ((  || $forceRemote )) = ;
				= 6;
				= 6;
				= 6;
			$postfields['check_token'] = ( (  ) . $this->getLicenseKey(  ) . ( 1000000000, 9999999999 ) );
			$whmcs = App::self(  );
			$postfields['version'] = $whmcs->getVersion(  )->getCanonical(  );
			$postfields['phpversion'] = bifgfihgce;
				= 6;
			$postfields['anondata'] = ( $whmcs->get_config( 'SystemStatsCache' ) );
				= 6;
			( 'Performing Remote Check: ' . $this->debug( $postfields, cjhcifebeg ) );
			$data = $this->callHome( $postfields );

			if (!$data) {
				$this->debug( 'Remote check not returned ok' );

				if ($this->getLocalMaxExpiryDate(  ) < $this->getKeyData( 'checkdate' )) {
					$this->setKeyData( array( 'status' => 'Active' ) );
					jmp;
					$this->setInvalid( 'noconnection' );
				}
			}


			if () {
				$this->setInvalid(  );
				return dbebefagji;
				$this->setKeyData( $results );
				$this->updateLocalKey;
			}

			(  );
			$this->debug( 'Remote Check Done' );
			jmp;
			becajhcbcg {
				$this->debug;
					= 6;
				'License Error: %s';
				$exception->getMessage;
			}
		}

		( ( (  ) ) );
		return dbebefagji;
	}

	function getLocalMaxExpiryDate() {
			= 6;
			= 6;
			= 6;
			= 6;
			= 6;
		return ( 'Ymd', ( 0, 0, 0, ( 'm' ), ( 'd' ) - ( $this->localkeydays + $this->allowcheckfaildays ), ( 'Y' ) ) );
	}

	function buildQuery($postfields) {
		$query_string = '';
		foreach ($postfields as ) {
			while (true) {
				$k = $v = ;
					= 6;
				$query_string .= ( $k . '=' ) . ( $v ) . '&';
			}
		}

		return $query_string;
	}

	function callHome($postfields) {
		$query_string = $this->buildQuery( $postfields );
		$res = $this->callHomeLoop( $query_string, 5 );

		if ($res) {
		}

		return $res;
	}

	function callHomeLoop($query_string, $timeout = 5) {
		$hostips = $this->getHosts(  );
		foreach ($hostips as $hostip) {
			$responsecode = $this->makeCall( $hostip, $query_string, $timeout );

			if ($responsecode == 200) {
				return $this->responsedata;
			}

			break;
		}

		return dbebefagji;
	}

	function makeCall($ip, $query_string, $timeout = 5) {
		$url = 'https://' . $ip . '/license/verify53.php';
		$this->debug( 'Request URL ' . $url );
			= 6;
		(  );
		$ch = ;
			= 6;
		( $ch, jdejhjcgb, $url );
			= 6;
		( $ch, difcafjaaa, 1 );
			= 6;
		( $ch, dfdbbdegdg, $query_string );
			= 6;
		( $ch, baagfaddji, $timeout );
			= 6;
		( $ch, djjhjieeec, 1 );
			= 6;
		( $ch, dghdegdae, 0 );
			= 6;
		( $ch, cabfggieca, 0 );
			= 6;
		$this->responsedata = ( $ch );
			= 6;
		( $ch, bffjhbibdd );
		$responsecode = ;
		$this->debug( 'Response Code: ' . $responsecode . ' Data: ' . $this->responsedata );
			= 6;

		if (( $ch )) {
				= 6;
				= 6;
			'Curl Error: ' . $this->debug( $ch ) . ' - ' . ( $ch );
		}

		(  );
			= 6;
		( $ch );
		return $responsecode;
	}

	function processResponse($data) {
			= 6;
		$data = ( $data );
			= 6;
		$data = ( $data );
			= 6;
		$results = ( $data );
		$this->posthash = $results['hash'];
		unset( $results[hash] );
		$results['checkdate'] = $this->getDate(  );
		return $results;
	}

	function updateLocalKey() {
			= 6;
		( $this->keydata );
		$data_encoded = ;
			= 6;
		( $data_encoded );
		$data_encoded = ;
			= 6;
			= 6;
		( $data_encoded );
		$data_encoded = ;
			= 6;
		$splpt = ( $data_encoded ) / 2;
			= 6;
			= 6;
		$data_encoded = ( $data_encoded, $splpt ) . ( $data_encoded, 0, $splpt );
			= 6;
			= 6;
			= 6;
		$data_encoded = ( $data_encoded . $this->getSalt(  ) ) . $data_encoded . ( $data_encoded . $this->getSalt(  ) . (  ) );
			= 6;
		( $data_encoded );
		$data_encoded = ;
			= 6;
		( $data_encoded, 80, '
', cjhcifebeg );
		$data_encoded = $data_encoded = ( $this->getDate(  ) . $this->getSalt(  ) ) . $data_encoded;
		App::self(  )->set_config( 'License', $data_encoded );
		$this->debug( 'Updated Local Key' );
	}

	function forceRemoteCheck() {
		$this->remoteCheck( cjhcifebeg );
	}

	function setInvalid($reason = 'Invalid') {
		$this->keydata = array( 'status' => $reason );
	}

	function decodeLocal() {
		$this->debug( 'Decoding local key' );
		$localkey = $this->localkey;

		if (!$localkey) {
			return dbebefagji;
				= 6;
			( '
', '', $localkey );
				= 6;
			( $localkey );
				= 6;
			( $localkey, 40, -40 );
			$localdata = $localkey = ;
				= 6;
			( $localkey, 0, 40 );
			$md5hash = $localkey = ;
		}

			= 6;

		if ($md5hash == ( $localdata . $this->getSalt(  ) )) {
				= 6;
			$splpt = ( $localdata ) / 2;
				= 6;
				= 6;
				= 6;
			( $localdata );
				= 6;
			( $localdata, 0, 40 );
				= 6;
			( $localdata, 40 );
				= 6;
			( $localdata );
				= 6;
			( $localdata );
			$localkeyresults = $localdata = $localdata = ;
			$localkeyresults['checkdate'];
			$originalcheckdate = $localdata = $md5hash = $localdata = ( $localdata, $splpt ) . ( $localdata, 0, $splpt );
				= 6;

			if ($md5hash == ( $originalcheckdate . $this->getSalt(  ) )) {
			}

			function decodeLocalOnce() {
				(bool);

				if ($this->localkeydecoded) {
					return cjhcifebeg;
					$this->decodeLocal;
				}

				return (  );
			}

			function isRunningInCLI() {
					= 6;
				empty( ['REMOTE_ADDR'] );
			}

			function validateLocalKey() {
				(bool);

				if ($this->getKeyData( 'status' ) != 'Active') {
					$this->debug( 'Local Key Status Check Failure' );
					return dbebefagji;

					if ($this->isRunningInCLI(  )) {
						$this->debug( 'Running in CLI Mode' );
					}
					else {
							= 6;

						if (!( $this->getKeyData( 'validips' ) )) {
							$this->debug( 'No Valid IPs returned by license check - Cloud Based License - Skipping Local Validation of IP' );
						}
					}

					(  );
					return dbebefagji;

					if ($this->isValidDir( $this->getHostDir(  ) )) {
						$this->debug;
						'Directory Validated Successfully';
					}

					(  );
				}

				return ;
			}

			function isValidDomain($domain) {
				$validdomains = $this->getArrayKeyData( 'validdomains' );
					= 6;
				return ( $domain, $validdomains );
			}

			function isValidIP($ip) {
				$validips = $this->getArrayKeyData( 'validips' );
					= 6;
				return ( $ip, $validips );
			}

			function isValidDir($dir) {
				$validdirs = $this->getArrayKeyData( 'validdirs' );
					= 6;
				return ( $dir, $validdirs );
			}

			function revokeLocal() {
				App::self(  )->set_config( 'License', '' );
			}

			function getKeyData($var) {
				if (isset( $this->keydata[$var] )) {
					$this->keydata[$var];
				}

				return (true ?  : '');
			}

			function setKeyData($data) {
				$this->keydata = $data;
			}

			/**
			 * Retrieve a license element as an array, that would otherwise be a
			 * delimited string
			 *
			 * NOTE: use of this method should be very limited. New license elements
			 * added to the license data should strongly consider not depending on the
			 * use of this function, but instead structure the data and let the
			 * transmission layer do the serialize/unserialize
			 *
			 * @param string $var License data element whose value is a comma delimited string
			 *
			 * @return array
			 * @throws Exception when internal license key data structure is not
			 * as expected
			 */
			function getArrayKeyData($var) {
				$listData = array(  );
				$rawData = $this->getKeyData( $var );

				while (true) {
					while (true) {
							= 6;

						if (( $rawData )) {
								= 6;
							( ',', $rawData );
							$listData = ;
							foreach ($listData as $k => $v) {
									= 6;

								if (( $v )) {
								}

									= 6;
								( $v );
							}
						}

						$listData[$k] = ;
					}

					throw new becajhcbcg( 'Invalid license data structure' );
				}

				jmp;
					= 6;

				if (!( $rawData )) {
					new becajhcbcg( 'Invalid license data structure' );
				}

				throw ;
				return $listData;
			}

			function getRegisteredName() {
				return $this->getKeyData( 'registeredname' );
			}

			function getProductName() {
				return $this->getKeyData( 'productname' );
			}

			function getStatus() {
				return $this->getKeyData( 'status' );
			}

			function getSupportAccess() {
				return $this->getKeyData( 'supportaccess' );
			}

			/**
			 * Retrieve a list of Addons as known by the license
			 *
			 * @return array
			 */
			function getLicensedAddons() {
				$licensedAddons = $this->getKeyData( 'addons' );
					= 6;

				if (!( $licensedAddons )) {
				}

				$licensedAddons = array(  );
				return $licensedAddons;
			}

			function getActiveAddons() {
				$licensedAddons = $this->getLicensedAddons(  );
				$activeAddons = array(  );
				foreach ($licensedAddons as ) {
					while (true) {
						$addon = ;

						if ($addon['status'] == 'Active') {
							$activeAddons[] = $addon['name'];
							continue;
						}
					}
				}

				return $activeAddons;
			}

			function isActiveAddon($addon) {
					= 6;

				if (( $addon, $this->getActiveAddons(  ) )) {
					cjhcifebeg;
					dbebefagji;
				}

				return ;
			}

			function getExpiryDate($showday = false) {
				$expiry = $this->getKeyData( 'nextduedate' );

				if (!$expiry) {
					$expiry = 'Never';
				}

					= 6;
					= 6;
				( 'l, jS F Y', ( $expiry ) );
				$expiry = ;
					= 6;
					= 6;
				( 'jS F Y', ( $expiry ) );
				$expiry = ;
				return $expiry;
			}

			/**
			 * Get a version object that will represent the latest publicly available version
			 *
			 * If the licensing API does not return a valid version number for
			 * whatever reason, it assumes latest version = installed version
			 * to allow application to continue un-affected
			 *
			 * @return SemanticVersion
			 */
			function getLatestPublicVersion() {
				$latestVersion = new bgfgjjafih( 'latestpublicversion' )(  );
				jmp;
				cgiijfjahf {
					$whmcs = App::self(  );
					$latestVersion = $whmcs->getVersion(  );
					return $latestVersion;
				}
			}

			/**
			 * Get a version object that will represent the latest available pre-release version
			 *
			 * If the licensing API does not return a valid version number for
			 * whatever reason, it assumes latest version = installed version
			 * to allow application to continue un-affected
			 *
			 * @return SemanticVersion
			 */
			function getLatestPreReleaseVersion() {
				$latestVersion = new bgfgjjafih( 'latestprereleaseversion' )(  );
				jmp;
				cgiijfjahf {
					$whmcs = App::self(  );
					$latestVersion = $whmcs->getVersion(  );
					return $latestVersion;
				}
			}

			/**
			 * Get a version object that will represent the latest appropriate version based on current installation
			 *
			 * If running a pre-release (beta/rc) it returns the latest pre-release version
			 * Otherwise it returns the latest publicly available version
			 *
			 * @return SemanticVersion
			 */
			function getLatestVersion() {
				$whmcs = App::self(  );
				$installedVersion = $whmcs->getVersion(  );
					= 6;

				if (( $installedVersion->getPreReleaseIdentifier(  ), array( 'beta', 'rc' ) )) {
					$latestVersion = $this->getLatestPreReleaseVersion(  );
					$this->getLatestPublicVersion;
				}

				(  );
				$latestVersion = ;
				return $latestVersion;
			}

			/**
			 * Determines if an update is available for the currently installed files
			 *
			 * @throws BadVersionNumber If version number invalid
			 *
			 * @return bool
			 */
			function isUpdateAvailable() {
				$whmcs = App::self(  );
				$installedVersion = $whmcs->getVersion(  );
				$latestVersion = $this->getLatestVersion(  );
				return bgfgjjafih::compare( $latestVersion, $installedVersion, '>' );
			}

			function getRequiresUpdates() {
				if ($this->getKeyData( 'requiresupdates' )) {
					cjhcifebeg;
					dbebefagji;
				}

				return ;
			}

			function checkOwnedUpdates() {
				while (true) {
					if (!$this->getRequiresUpdates(  )) {
						return cjhcifebeg;
						$whmcs = App::self(  );
						$licensedAddons = $this->getLicensedAddons(  );
						foreach ($licensedAddons as $addon) {

							while (true) {
								if (( $addon['name'] == 'Support and Updates' && $addon['status'] == 'Active' )) {
								}
							}
						}
					}

						= 6;
						= 6;

					if (( '-', '', $whmcs->getReleaseDate(  ) ) <= ( '-', '', $addon['nextduedate'] )) {
						return cjhcifebeg;
					}
				}

				return dbebefagji;
			}

			function getBrandingRemoval() {
					= 6;

				if (( $this->getProductName(  ), array( 'Owned License No Branding', 'Monthly Lease No Branding' ) )) {
					return cjhcifebeg;
					$licensedAddons = $this->getLicensedAddons(  );
					foreach ($licensedAddons as $addon) {
						$addon['name'] == 'Branding Removal';
					}
				}


				if ((  && $addon['status'] == 'Active' )) {
					while (true) {
						return cjhcifebeg;
					}

					return dbebefagji;
				}
			}

			function getVersionHash() {
				return $this->version;
			}

			function debug($msg) {
				$this->debuglog[] = $msg;
			}

			/**
			 * Retrieve all errors
			 *
			 * @return array
			 */
			function getDebugLog() {
				return $this->debuglog;
			}

			/**
			 * Retrieve the public key used to sign WHMCS update packages.
			 *
			 * @todo implement this
			 * @return string
			 */
			function getPublicSigningKey() {
				return 'implement me';
			}

			/**
			 * Retrieve the date that a license permits product updates.
			 *
			 * @todo implement this
			 * @return DateTime
			 */
			function getUpdateValidityDate() {
				return new DateTime(  );
			}

			/**
			 * Get if client limits should be enforced from the license response.
			 *
			 * @return bool
			 */
			function isClientLimitsEnabled() {
				return (string)$this->getKeyData( 'ClientLimitsEnabled' );
			}

			/**
			 * Get the client limit as defined by the license.
			 *
			 * @return int
			 */
			function getClientLimit() {
				$clientLimit = $this->getKeyData( 'ClientLimit' );

				if ($clientLimit == '') {
					return -1;
				}

					= 6;

				if (!( $clientLimit )) {
					$this->debug( 'Invalid client limit value in license' );
					return 0;
					(int)$clientLimit;
				}

				return ;
			}

			/**
			 * Format the client limit for display in a human friendly way.
			 *
			 * Expect a formatted number or the text 'None' for 0.
			 *
			 * NOTE: If an admin instance is not provided or the key has no translation,
			 * an English value would be returned.
			 *
			 * @param \WHMCS\Admin $admin Admin instance for contextual language.
			 *
			 * @return string
			 */
			function getTextClientLimit($admin = null) {
				$clientLimit = $this->getClientLimit(  );
				$result = 'Unlimited';

				if (0 < $clientLimit) {
						= 6;
					( $clientLimit, 0, '', ',' );
					$result = ;
					jmp;

					if ($admin) {
					}

					$admin->lang( 'global', 'unlimited' );
				}

				$text = ;

				if ((bool)) {
				}

				$result = $result;
				return $result;
			}

			/**
			 * Get the number of active clients in the installation.
			 *
			 * @return int
			 */
			function getNumberOfActiveClients() {
					= 6;
				return (int)( 'tblclients', 'count(id)', 'status=\'Active\'' );
			}

			/**
			 * Format the number of active clients for display in a human friendly way.
			 *
			 * Expect a formatted number or the text 'None' for 0.
			 *
			 * NOTE: If an admin instance is not provided or the key has no translation,
			 * an English value would be returned.
			 *
			 * @param \WHMCS\Admin $admin Admin instance for contextual language.
			 *
			 * @return string
			 */
			function getTextNumberOfActiveClients($admin = null) {
				$clientLimit = $this->getNumberOfActiveClients(  );
				$result = 'None';

				if (0 < $clientLimit) {
						= 6;
					( $clientLimit, 0, '', ',' );
					$result = ;
					jmp;

					if ($admin) {
						$admin->lang;
						'global';
					}

					( 'none' );
				}

				$text = ;

				if ((bool)) {
				}

				$result = $result;
				return $result;
			}

			/**
			 * Get the first client ID that is outside the client limit
			 *
			 * Given that client limits are meant to be enforced for the active clients
			 * in ascending order, this routine determines the first client who is
			 * outside the pool of active/inactive clients that the admin is permitted
			 * to manage.  i.e., callers should deny management rights of this id or any
			 * id higher than it.
			 *
			 * @return int
			 */
			function getClientBoundaryId() {
					= 6;
				return (int)( 'tblclients', 'id', 'status=\'Active\'', 'id', 'ASC', (int)$this->getClientLimit(  ) . ',1' );
			}

			/**
			 * Determine if installation's active client count is "close" or at client limit
			 *
			 * If true, the caller is expected to show an appropriate warning.
			 *
			 * "Close" is within 10% for a client boundary of 250; for boundaries above
			 * 250, the "close" margin is only 5%.
			 *
			 * If there are absolutely no clients active, one can never by near or at
			 * the limit. Likewise, if by chance there's an evaluated limit of 0 from
			 * the license key data, then one can never by near or at the limit. This
			 * logic might need refinement if every there was such a thing as a 0 client
			 * seat limit.
			 *
			 * @return bool
			 */
			function isNearClientLimit() {
				$clientLimit = $this->getClientLimit(  );
				$numClients = $this->getNumberOfActiveClients(  );
			}

			/**
			 * Encrypt data for WHMCS Member Area and License system
			 *
			 * The return value will be blank if anything goes wrong, otherwise it is a
			 * base64 encoded value.
			 *
			 * NOTE: Crypt_RSA traditionally will emit warnings; they are not suppressed
			 * here.
			 *
			 * @param array $data Key/value pairs to bundle into the encrypted string
			 * @param string $publicKey RSA public key to use for the asymmetric encryption
			 *
			 * @return string
			 */
			function encryptMemberData($data = array(  ), $publicKey = null) {
				(bool);
					= 6;

				if (( $publicKey )) {
					$publicKey = '-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7OMhxWvu3FOqMblJGXjh
vZQLhQa2wRQoetxAM7j/c+SzFVHmLteAZrn06FeoU1RhjQz9TE0kD6BzoBBuE1bm
JkybOuhVJGVlI8QqLnl2F/jDFP3xshm2brRUt9vNBWXhGDRvOLOgmxaFtVjCiNAT
9n4dtG+344xN7w568Rw3hnnGApypGFtypaKHSeNV6waeFgHeePXSPFMUpe9evZJa
pyc9ENEWvi6nK9hWm1uZ+CfoeRjIKqW2QlgazGDqQtQev05LbDihK0Nc8LBqmVQS
NB/N2CueyYKrzVUmNqbrkJaBVm6N3EnSNBOR7WXOPf1VOjGDu79kYrbhT1MUlKpp
LQIDAQAB
-----END PUBLIC KEY-----';
						= 6;
					$publicKey = ', '
					( array( '
', ' ' ), array( '', '', '' ), $publicKey );

					$cipherText = '';
						= 6;

					if (( $data )) {
						Crypt_RSA;
					}
				}

				new (  );
				$rsa = ;
				$rsa->loadKey( $publicKey );
				$rsa->setEncryptionMode( bhiihjaid );
					= 6;
				$cipherText = ( $rsa->encrypt( $data ) );

				if (!$cipherText) {
					throw new becajhcbcg( 'Could not perform RSA encryption' );
					jmp;
						= 6;
					( $cipherText );
					$cipherText = ;
					jmp;
					Exception {
						$this->debug;
					}
				}

				( 'Failed to encrypt member data' );
				return $cipherText;
			}
		}

		return 1;
	}
}
?>


下载地址 无解压密码 未测试 License.php文件反编译源码如上,如有破解的请做参考。

你会喜欢下面的文章? You'll like the following article.

最新评论

评论( 人参与, 条评论)
严正声明:请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。