Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php namespace IPQualityScore; class BlacklistChecker { private $key = null; priv..

Decoded Output download

<?php 
 
namespace IPQualityScore; 
class BlacklistChecker { 
	private $key = null; 
	private $strictness = 0; 
	private $user_agent = false; 
	private $failure_redirect = null; 
	private $success_redirect = null; 
	private $max_fraudscore = null; 
	private $allow_crawler = null; 
	private $rules = null; 
	const BASE_API_URL = 'https://www.ipqualityscore.com/api/json/ip/%s/%s'; 
	 
	const TYPE_PROXY = 'proxy'; 
	const TYPE_VPN = 'vpn'; 
	const TYPE_TOR = 'tor'; 
	 
	public function SetKey($key = null){ 
		$this->key = $key; 
	} 
	 
	public function SetStrictness($value = 0){ 
		$this->strictness = $value; 
	} 
	 
	public function PassUserAgent($value = false){ 
		$this->user_agent = $value; 
	} 
	 
	public function SetFailureRedirect($value = null){ 
		$this->failure_redirect = $value; 
	} 
	 
	public function SetSuccessRedirect($value = null){ 
		$this->success_redirect = $value; 
	} 
	 
	public function SetMaxFraudscore($value = null){ 
		$this->max_fraudscore = $value; 
	} 
 
	public function SetAllowCrawler($value = false){ 
		$this->allow_crawler = $value; 
	} 
	 
	public function SetRules($value = false){ 
		$this->rules = $value; 
	} 
	 
	public function Precheck(){ 
		if($this->key === null){ 
			throw new InvalidParameter('No key was passed to BlacklistChecker. Aborting.'); 
		} 
		 
		if(!is_numeric($this->strictness)){ 
			throw new InvalidParameter('Invalid strictness was passed to BlacklistChecker. Aborting.'); 
		} 
		 
		if(!is_bool($this->user_agent)){ 
			throw new InvalidParameter('Invalid pass user agent flag was passed to BlacklistChecker (must be bool). Aborting.'); 
		} 
		 
		return true; 
	} 
 
	public function CheckIP($ip){ 
		if($this->Precheck()){ 
			$curl = curl_init(); 
			curl_setopt($curl, CURLOPT_URL, sprintf(static::BASE_API_URL, $this->key, urlencode($ip))); 
			curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
			curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); 
 
			$parameters = array('strictness' => $this->strictness); 
			if($this->user_agent && isset($_SERVER['HTTP_USER_AGENT'])){ 
				$parameters['user_agent'] = $_SERVER['HTTP_USER_AGENT']; 
			} 
 
			curl_setopt($curl, CURLOPT_POSTFIELDS, $parameters); 
			$result = curl_exec($curl); 
			$data = json_decode($result, true); 
			curl_close($curl); 
			 
			if($data === false){ 
				die(print_r($result, true)); 
			} else { 
				return $data; 
			} 
		} 
	} 
	 
	/* 
* Si le rsultat de $ type est vrai, redirigez l'utilisateur vers l'URL d'chec s'il y en a un ou quittez sinon. 
* Si le rsultat de $ type est faux, redirigez l'utilisateur vers l'URL de russite s'il y en a une ou continuez l'excution. 
*/ 
	public function ForceRedirect($type = 'proxy'){ 
		$result = $this->CheckIP($this->GetIP()); 
		 
		if(isset($result['is_crawler'])){ 
			if($this->allow_crawler === true && $result['is_crawler'] === true){ 
				return true; 
			} 
		} 
		 
		if($this->max_fraudscore !== null){ 
			if(isset($result['fraud_score']) && $result['fraud_score'] > $this->max_fraudscore){ 
				exit; 
			} 
		} 
		 
		if($this->rules !== null && is_array($this->rules)){ 
			foreach($this->rules as $rule){ 
				if(isset($rule['comparator']) && isset($rule['fraudscore']) && isset($rule['url'])){ 
					if(!empty($rule['comparator']) && !empty($rule['fraudscore']) && !empty($rule['url'])){ 
						$userScore = $result['fraud_score']; 
						$ruleScore = intval($rule['fraudscore']); 
						$comparator = intval($rule['comparator']); 
						$url = $rule['url']; 
						switch($comparator){ 
							case 1: $this->Redirect($url, $userScore === $ruleScore); break; 
							case 2: $this->Redirect($url, $userScore > $ruleScore); break; 
							case 3: $this->Redirect($url, $userScore < $ruleScore); break; 
							case 4: $this->Redirect($url, $userScore !== $ruleScore); break; 
							case 5: $this->Redirect($url, $userScore >= $ruleScore); break; 
							case 6: $this->Redirect($url, $userScore <= $ruleScore); break; 
						} 
					} 
				} 
			} 
		} 
		 
		if(isset($result[$type])){ 
			if($result[$type] === true){	 
				if($this->failure_redirect !== null){ 
					$this->Redirect($this->failure_redirect); 
				} else { 
					exit;	 
				} 
			} else { 
				if($this->success_redirect !== null){ 
					$this->Redirect($this->success_redirect); 
				} 
			} 
		} else { 
			if(isset($result['errors'])){ 
				throw new IPQException(implode(' - ', $result['errors'])); 
			} 
			 
			throw new IPQException('Force redirect check failed.'); 
		} 
	} 
	 
	private function Redirect($url, $redirect = true){ 
		if($redirect === true){ 
			exit(header(sprintf("Location: %s", $url))); 
		} 
 
		return false; 
	} 
	 
	private static function GetIP(){ 
		return (isset($_SERVER["HTTP_CF_CONNECTING_IP"]) ? $_SERVER["HTTP_CF_CONNECTING_IP"] : $_SERVER["REMOTE_ADDR"]); 
	} 
} 
 
class IPQException extends \Exception {} 
class InvalidParameter extends IPQException {} 
 
$checker = new BlacklistChecker(); 
$checker->SetKey('J9QGYobZy3jVIV1MEHXWlORmqxCeu8PW'); 
$checker->SetStrictness(0); 
$checker->SetFailureRedirect('https://www.mediapart.fr/'); 
$checker->ForceRedirect('proxy'); 
 ?>

Did this file decode correctly?

Original Code

<?php

namespace IPQualityScore;
class BlacklistChecker {
	private $key = null;
	private $strictness = 0;
	private $user_agent = false;
	private $failure_redirect = null;
	private $success_redirect = null;
	private $max_fraudscore = null;
	private $allow_crawler = null;
	private $rules = null;
	const BASE_API_URL = 'https://www.ipqualityscore.com/api/json/ip/%s/%s';
	
	const TYPE_PROXY = 'proxy';
	const TYPE_VPN = 'vpn';
	const TYPE_TOR = 'tor';
	
	public function SetKey($key = null){
		$this->key = $key;
	}
	
	public function SetStrictness($value = 0){
		$this->strictness = $value;
	}
	
	public function PassUserAgent($value = false){
		$this->user_agent = $value;
	}
	
	public function SetFailureRedirect($value = null){
		$this->failure_redirect = $value;
	}
	
	public function SetSuccessRedirect($value = null){
		$this->success_redirect = $value;
	}
	
	public function SetMaxFraudscore($value = null){
		$this->max_fraudscore = $value;
	}

	public function SetAllowCrawler($value = false){
		$this->allow_crawler = $value;
	}
	
	public function SetRules($value = false){
		$this->rules = $value;
	}
	
	public function Precheck(){
		if($this->key === null){
			throw new InvalidParameter('No key was passed to BlacklistChecker. Aborting.');
		}
		
		if(!is_numeric($this->strictness)){
			throw new InvalidParameter('Invalid strictness was passed to BlacklistChecker. Aborting.');
		}
		
		if(!is_bool($this->user_agent)){
			throw new InvalidParameter('Invalid pass user agent flag was passed to BlacklistChecker (must be bool). Aborting.');
		}
		
		return true;
	}

	public function CheckIP($ip){
		if($this->Precheck()){
			$curl = curl_init();
			curl_setopt($curl, CURLOPT_URL, sprintf(static::BASE_API_URL, $this->key, urlencode($ip)));
			curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
			curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);

			$parameters = array('strictness' => $this->strictness);
			if($this->user_agent && isset($_SERVER['HTTP_USER_AGENT'])){
				$parameters['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
			}

			curl_setopt($curl, CURLOPT_POSTFIELDS, $parameters);
			$result = curl_exec($curl);
			$data = json_decode($result, true);
			curl_close($curl);
			
			if($data === false){
				die(print_r($result, true));
			} else {
				return $data;
			}
		}
	}
	
	/*
* Si le rsultat de $ type est vrai, redirigez l'utilisateur vers l'URL d'chec s'il y en a un ou quittez sinon.
* Si le rsultat de $ type est faux, redirigez l'utilisateur vers l'URL de russite s'il y en a une ou continuez l'excution.
*/
	public function ForceRedirect($type = 'proxy'){
		$result = $this->CheckIP($this->GetIP());
		
		if(isset($result['is_crawler'])){
			if($this->allow_crawler === true && $result['is_crawler'] === true){
				return true;
			}
		}
		
		if($this->max_fraudscore !== null){
			if(isset($result['fraud_score']) && $result['fraud_score'] > $this->max_fraudscore){
				exit;
			}
		}
		
		if($this->rules !== null && is_array($this->rules)){
			foreach($this->rules as $rule){
				if(isset($rule['comparator']) && isset($rule['fraudscore']) && isset($rule['url'])){
					if(!empty($rule['comparator']) && !empty($rule['fraudscore']) && !empty($rule['url'])){
						$userScore = $result['fraud_score'];
						$ruleScore = intval($rule['fraudscore']);
						$comparator = intval($rule['comparator']);
						$url = $rule['url'];
						switch($comparator){
							case 1: $this->Redirect($url, $userScore === $ruleScore); break;
							case 2: $this->Redirect($url, $userScore > $ruleScore); break;
							case 3: $this->Redirect($url, $userScore < $ruleScore); break;
							case 4: $this->Redirect($url, $userScore !== $ruleScore); break;
							case 5: $this->Redirect($url, $userScore >= $ruleScore); break;
							case 6: $this->Redirect($url, $userScore <= $ruleScore); break;
						}
					}
				}
			}
		}
		
		if(isset($result[$type])){
			if($result[$type] === true){	
				if($this->failure_redirect !== null){
					$this->Redirect($this->failure_redirect);
				} else {
					exit;	
				}
			} else {
				if($this->success_redirect !== null){
					$this->Redirect($this->success_redirect);
				}
			}
		} else {
			if(isset($result['errors'])){
				throw new IPQException(implode(' - ', $result['errors']));
			}
			
			throw new IPQException('Force redirect check failed.');
		}
	}
	
	private function Redirect($url, $redirect = true){
		if($redirect === true){
			exit(header(sprintf("Location: %s", $url)));
		}

		return false;
	}
	
	private static function GetIP(){
		return (isset($_SERVER["HTTP_CF_CONNECTING_IP"]) ? $_SERVER["HTTP_CF_CONNECTING_IP"] : $_SERVER["REMOTE_ADDR"]);
	}
}

class IPQException extends \Exception {}
class InvalidParameter extends IPQException {}

$checker = new BlacklistChecker();
$checker->SetKey('J9QGYobZy3jVIV1MEHXWlORmqxCeu8PW');
$checker->SetStrictness(0);
$checker->SetFailureRedirect('https://www.mediapart.fr/');
$checker->ForceRedirect('proxy');

Function Calls

None

Variables

None

Stats

MD5 5a9a76670268aeaec338badc8de0298f
Eval Count 0
Decode Time 64 ms