<?
class padl
{
var $HASH_KEY1 = 'KD2bInfMjl9XDOsjx5qXn5Ax66w8frQi6I8QCOta';
var $HASH_KEY2 = 'JZabr6I0aTYT6koV1a9D48zq90vXI1NKDYaqIQjx';
var $HASH_KEY3 = 'kUfJBC90LUab7zhaznVxhcN1Tx5IiQ8SnEbiwHX6';
var $HASH_KEY4 = 'LlvwQUIk71JSsq4O4d7DBkPq1Hk4fGAHUONc203e';
var $ALGORITHM = 'blowfish';
var $MODE = 'ecb';
var $START_DIF = 129600;
var $ID1 = '2G74V9SoLvSv55X22gZD';
var $ID2 = 'ItaxScfhDGSvG7A7mlZW';
var $ID3 = '49Zv4iNpr0MkW9JMIOBc';
var $ID4 = '0RJLvtonC9d51I00KaB3';
var $BEGIN1 = 'BEGIN LICENSE KEY';
var $END1 = 'END LICENSE KEY';
var $WRAPTO = 80;
var $PAD = '-';
var $BEGIN2 = '_DATA{';
var $END2 = '}DATA_';
var $FORCE_UPDATE = 0;
var $DEBUG = true;
var $REQUEST_MCRYPT = 0;
var $REQUIRED_URIS = 2;
var $DATE_STRING = 'd/M/Y H:i:s';
var $RANDOM_SEED = 0;
var $RANDOM_SEED_POS = 0;
var $_DATA = array ();
var $_SERVER_INFO = array ();
var $_DAIL_HOST = '';
var $_DAIL_PATH = '';
var $_DAIL_PORT = 80;
function padl ()
{
$this->_check_secure ();
}
function _get_os_linebreak ($true_val = false)
{
$os = strtolower (PHP_OS);
switch ($os)
{
case 'freebsd':
{
}
case 'netbsd':
{
}
case 'solaris':
{
}
case 'sunos':
{
}
case 'linux':
{
$nl = '';
break;
}
case 'darwin':
{
if ($true_val)
{
$nl = '';
}
else
{
$nl = '';
}
break;
}
default:
{
$nl = '';
}
}
return $nl;
}
function _data_socket_connect ($host, $path, $query_array, $port = '80')
{
$this->_check_secure ();
$query = 'POSTDATA=' . $this->_encrypt ($query_array, 'HOMEKEY') . '&QUERYTYPE=' . $this->call_type;
$return = ''; $post_data
array ('POSTDATA' > $this->_encrypt ($query_array, 'HOMEKEY'), 'QUERYTYPE' => $this->call_type, 'USE_MCRYPT' => $this->USE_MCRYPT, 'SCRIPT_URI' => $this->_SERVER_INFO['SCRIPT_URI']);
$ssl = ($port != '80' ? 1 : 0);
$PostMethod = 'fso';
if (($ssl AND function_exists ('curl_init')))
{
$PostMethod = 'libCurlPost';
}
else
{
if (($ssl AND extension_loaded ('openssl')))
{
$PostMethod = 'fso';
}
else
{
$PostMethod = 'fso';
}
}
switch ($PostMethod)
{
case 'libCurl':
{
$return = $this->_libCurlPost (($ssl ? 'https://' : 'http://') . $host . $path, $post_data);
break;
}
case 'curl':
{
$return = $this->_curlPost (($ssl ? 'https://' : 'http://') . $host . $path, $post_data);
break;
}
case 'fso':
{
$return = $this->_fsockPost (($ssl ? 'https://' : 'http://') . $host . $path, $post_data);
break;
}
}
$leftpos = strpos ($return, $this->BEGIN2) + strlen ($this->BEGIN2);
$rightpos = strpos ($return, $this->END2) - $leftpos;
$return = substr ($return, $leftpos, $rightpos);
$return = $this->_decrypt ($return, 'HOMEKEY');
return $return;
}
function _curlpost ($url, $data)
{
foreach ($data as $i => $v)
{
$postdata .= $i . '=' . urlencode ($v) . '&';
}
exec ('' . $curl_location . ' -d "' . $postdata . '" ' . $url, $info);
$info = implode (',', $info);
return $info;
}
function _libcurlpost ($url, $data)
{
foreach ($data as $i => $v)
{
$postdata .= $i . '=' . urlencode ($v) . '&';
}
$ch = curl_init ();
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
ob_start ();
curl_exec ($ch);
$info = ob_get_contents ();
curl_close ($ch);
ob_end_clean ();
return $info;
}
function _fsockpost ($url, $data)
{
$web = parse_url ($url);
foreach ($data as $i => $v)
{
$postdata .= $i . '=' . urlencode ($v) . '&';
}
if ($web[scheme] == 'https')
{
$web[port] = '443';
$ssl = 'ssl://';
}
else
{
$web[port] = '80';
}
$fp = @fsockopen ($ssl . $web[host], $web[port], $errnum, $errstr, 30);
if (!$fp)
{
return '';
}
else
{
fputs ($fp, '' . 'POST ' . $web['path'] . ' HTTP/1.1');
fputs ($fp, '' . 'Host: ' . $web['host'] . '');
fputs ($fp, 'Content-type: application/x-www-form-urlencoded');
fputs ($fp, 'Content-length: ' . strlen ($postdata) . '');
fputs ($fp, 'Connection: close');
fputs ($fp, $postdata . '');
while (!feof ($fp))
{
$info[] = @fgets ($fp, 1024);
}
fclose ($fp);
$info = implode (',', $info);
}
return $info;
}
function _compare_domain_ip ($domain, $ips = false)
{
if (!$ips)
{
$ips = $this->_get_ip_address ();
}
$domain_ips = gethostbynamel ($domain);
if ((is_array ($domain_ips) AND 0 < count ($domain_ips)))
{
foreach ($domain_ips as $ip)
{
if ($ip == $ips)
{
return true;
continue;
}
}
}
return false;
}
function _get_ip_address ()
{
$ips = array ();
if (isset ($this->_SERVER_VARS['SERVER_NAME']))
{
$ip = gethostbyname ($this->_SERVER_VARS['SERVER_NAME']);
if (!isset ($ips[$ip]))
{
$ips[$ip] = $ip;
}
}
if (isset ($this->_SERVER_VARS['SERVER_ADDR']))
{
$name = gethostbyaddr ($this->_SERVER_VARS['SERVER_ADDR']);
$ip = gethostbyname ($name);
if (!isset ($ips[$ip]))
{
$ips[$ip] = $ip;
}
if ($ip != $this->_SERVER_VARS['SERVER_ADDR'])
{
if (!isset ($ips[$this->_SERVER_VARS['SERVER_ADDR']]))
{
$ips[$this->_SERVER_VARS['SERVER_ADDR']] = $this->_SERVER_VARS['SERVER_ADDR'];
}
}
}
if (0 < count ($ips))
{
reset ($ips);
return current ($ips);
}
return 'IP_404';
}
function _pad ($str)
{
$str_len = strlen ($str);
$spaces = ($this->WRAPTO - $str_len) / 2;
$str1 = '';
for ($i = 0; $i < $spaces; ++$i)
{
$str1 = $str1 . $this->PAD;
}
if ($spaces / 2 != round ($spaces / 2))
{
$str = substr ($str1, 0, strlen ($str1) - 1) . $str;
}
else
{
$str = $str1 . $str;
}
$str = $str . $str1;
return $str;
}
function _get_key ($key_type)
{
switch ($key_type)
{
case 'KEY':
{
return $this->HASH_KEY1;
}
case 'REQUESTKEY':
{
return $this->HASH_KEY2;
}
case 'HOMEKEY':
{
return $this->HASH_KEY3;
}
case 'SERVERKEY':
{
return $this->HASH_KEY4;
}
}
}
function _get_begin ($key_type)
{
switch ($key_type)
{
case 'KEY':
{
return $this->BEGIN1;
}
case 'REQUESTKEY':
{
return $this->BEGIN2;
}
case 'HOMEKEY':
{
return '';
}
}
}
function _get_end ($key_type)
{
switch ($key_type)
{
case 'KEY':
{
return $this->END1;
}
case 'REQUESTKEY':
{
return $this->_END2;
}
case 'HOMEKEY':
{
return '';
}
}
}
function _generate_random_string ($length
10, $seeds 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890123456789')
{
$str = '';
$seeds_count = strlen ($seeds);
list ($usec, $sec) = explode (' ', microtime ());
$seed = (double)$sec + (double)$usec * 100000;
mt_srand ($seed);
for ($i = 0; $i < $length; ++$i)
{
$str .= $seeds[mt_rand (0, $seeds_count - 1)];
}
return $str;
}
function _encrypt ($src_array, $key_type = 'KEY')
{
$this->_check_secure ();
$this->USE_MCRYPT = $this->_validate_algorithm ();
$rand_add_on = $this->_generate_random_string ($this->RANDOM_SEED);
$key = $this->_get_key ($key_type);
$key = $rand_add_on . $key;
if ($this->USE_MCRYPT)
{
$str = serialize ($src_array);
$Crypter = new Crypter ($this->HASH_KEY1);
$crypt = $Crypter->encrypt ($str);
$td = mcrypt_module_open ($this->ALGORITHM, '', $this->MODE, '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
$key = substr ($key, 0, mcrypt_enc_get_key_size ($td));
mcrypt_generic_init ($td, $key, $iv);
$crypt = mcrypt_generic ($td, $crypt);
mcrypt_generic_deinit ($td);
mcrypt_module_close ($td);
}
else
{
$crypt = '';
$str = serialize ($src_array);
$Crypter = new Crypter ($this->HASH_KEY1 . $this->HASH_KEY2);
$crypt = $Crypter->encrypt ($str);
}
return $rand_add_on . base64_encode (base64_encode ($crypt));
}
function _decrypt ($str, $key_type = 'KEY')
{
$this->_check_secure ();
$this->USE_MCRYPT = $this->_validate_algorithm ();
if (($this->REQUEST_MCRYPT AND $this->USE_MCRYPT))
{
$this->_trigger_error ('MCRYPT is not installed.');
}
$rand_add_on = substr ($str, 0, $this->RANDOM_SEED);
$str = base64_decode (base64_decode (substr ($str, $this->RANDOM_SEED)));
$key = $rand_add_on . $this->_get_key ($key_type);
if ($this->USE_MCRYPT)
{
$td = mcrypt_module_open ($this->ALGORITHM, '', $this->MODE, '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
$key = substr ($key, 0, mcrypt_enc_get_key_size ($td));
mcrypt_generic_init ($td, $key, $iv);
$decrypt = mdecrypt_generic ($td, $str);
mcrypt_generic_deinit ($td);
mcrypt_module_close ($td);
$Crypter = new Crypter ($this->HASH_KEY1);
$decrypt = $Crypter->decrypt ($decrypt);
}
else
{
$decrypt = '';
$Crypter = new Crypter ($this->HASH_KEY1 . $this->HASH_KEY2);
$decrypt = $Crypter->decrypt ($str);
}
return unserialize ($decrypt);
}
function _wrap_license ($src_array, $key_type = 'KEY')
{
$begin = $this->_pad ($this->_get_begin ($key_type));
$end = $this->_pad ($this->_get_end ($key_type));
$str = $this->_encrypt ($src_array, $key_type);
return $begin . $this->_LINEBREAK . wordwrap ($str, $this->WRAPTO, $this->_LINEBREAK, 1) . $this->_LINEBREAK . $end;
}
function _unwrap_license ($enc_str, $key_type = 'KEY')
{
$begin = $this->_pad ($this->_get_begin ($key_type));
$end = $this->_pad ($this->_get_end ($key_type));
$str = trim (str_replace (array ($begin, $end, '', '', ' '), '', $enc_str));
return $this->_decrypt ($str, $key_type);
}
function _check_secure ()
{
if (defined ('_PADL_REPORT_ABUSE_'))
{
}
if (defined ('_PADL_MADE_SECURE_BY_PHP_LICENSER_'))
{
$this->_trigger_error ('PHP has been made secure.
You have attempted to use functions that have been protected and this has terminated the application.');
}
}
function _trigger_error ($message, $fatal = true)
{
trigger_error ('
' . $message . '
', E_USER_ERROR);
if ($fatal)
{
exit ();
}
}
function _validate_algorithm ()
{
if (!function_exists ('mcrypt_module_open'))
{
return 0;
}
if (!in_array ($this->ALGORITHM, mcrypt_list_algorithms ()))
{
return 0;
}
if (!in_array ($this->MODE, mcrypt_list_modes ()))
{
return 0;
}
return 1;
}
}
class crypter
{
function crypter ($clave)
{
$this->key = $clave;
}
function setkey ($clave)
{
$this->key = $clave;
}
function keyed ($txt)
{
$encrypt_key = md5 ($this->key);
$ctr = 0;
$tmp = '';
for ($i = 0; $i < strlen ($txt); ++$i)
{
if ($ctr == strlen ($encrypt_key))
{
$ctr = 0;
}
$tmp .= substr ($txt, $i, 1) ^ substr ($encrypt_key, $ctr, 1);
++$ctr;
}
return $tmp;
}
function encrypt ($txt)
{
srand ((double)microtime () * 1000000);
$encrypt_key = substr (md5 (rand (0, 32000)), 8, 16);
$ctr = 0;
$tmp = '';
for ($i = 0; $i < strlen ($txt); ++$i)
{
if ($ctr == strlen ($encrypt_key))
{
$ctr = 0;
}
$tmp .= substr ($encrypt_key, $ctr, 1) . (substr ($txt, $i, 1) ^ substr ($encrypt_key, $ctr, 1));
++$ctr;
}
return base64_encode ($this->keyED ($tmp));
}
function decrypt ($txt)
{
$txt = $this->keyED (base64_decode ($txt));
$tmp = '';
for ($i = 0; $i < strlen ($txt); ++$i)
{
$md5 = substr ($txt, $i, 1);
++$i;
$tmp .= substr ($txt, $i, 1) ^ $md5;
}
return $tmp;
}
}
class license_application extends padl
{
var $HASH_KEY1 = 'KD2bInfMjl9XDOsjx5qXn5Ax66w8frQi6I8QCOta';
var $HASH_KEY2 = 'JZabr6I0aTYT6koV1a9D48zq90vXI1NKDYaqIQjx';
var $HASH_KEY3 = 'kUfJBC90LUab7zhaznVxhcN1Tx5IiQ8SnEbiwHX6';
var $HASH_KEY4 = 'LlvwQUIk71JSsq4O4d7DBkPq1Hk4fGAHUONc203e';
var $ALGORITHM = 'blowfish';
var $MODE = 'ecb';
var $START_DIF = 129600;
var $ID1 = '2G74V9SoLvSv55X22gZD';
var $ID2 = 'ItaxScfhDGSvG7A7mlZW';
var $ID3 = '49Zv4iNpr0MkW9JMIOBc';
var $ID4 = '0RJLvtonC9d51I00KaB3';
var $BEGIN1 = 'BEGIN LICENSE KEY';
var $END1 = 'END LICENSE KEY';
var $WRAPTO = 80;
var $PAD = '-';
var $BEGIN2 = '_DATA{';
var $END2 = '}DATA_';
var $FORCE_UPDATE = 0;
var $DEBUG = true;
var $REQUEST_MCRYPT = 0;
var $REQUIRED_URIS = 2;
var $DATE_STRING = 'd/M/Y H:i:s';
var $RANDOM_SEED = 0;
var $RANDOM_SEED_POS = 0;
var $_DATA = array ();
var $_SERVER_INFO = array ();
var $_DAIL_HOST = '';
var $_DAIL_PATH = '';
var $_DAIL_PORT = 80;
var $ALLOWED_SERVER_DIFS = 0;
var $CALL_HOME = true;
function license_application ($license_path = 'license.dat')
{
$this->_check_secure ();
$this->_LINEBREAK = $this->_get_os_linebreak ();
$this->LICENSE_PATH = $license_path;
$this->_MAC = $this->_get_mac_address ();
}
function set_dail_vars ($uri)
{
$param = array ();
$param = parse_url ($uri);
$this->_DAIL_HOST = $param['host'];
$this->_DAIL_PATH = $param['path']; $this->_DAIL_PORT
($param['scheme'] 'http' ? '80' : '443');
}
function set_server_vars ($array)
{
$this->_check_secure ();
$this->_SERVER_VARS = $array;
$this->_IPS = $this->_get_ip_address ();
$this->_SERVER_INFO = $this->_get_server_info ();
}
function write_key ($key)
{
$this->_check_secure ();
$h = @fopen ($this->LICENSE_PATH, 'w');
if (@fwrite ($h, '<?/*' . $key . '*/' . '?' . '>') === false)
{
return false;
}
fclose ($h);
return true;
}
function get_key ()
{
$this->_check_secure ();
$lines = @file ($this->LICENSE_PATH);
return trim (implode ('', @array_slice ($lines, 2, @count ($lines) - 4)));
}
function destroy_license ()
{
$this->_check_secure ();
$h = @fopen ($this->LICENSE_PATH, 'a');
@ftruncate ($h, 0);
@fclose ($h);
}
function return_key_data ($str = false)
{
$this->_check_secure ();
$dat_str = (!$str ? $this->get_key () : $str);
if (0 < strlen ($dat_str))
{
return $this->_unwrap_license ($dat_str);
}
return false;
}
function view_license ($str = false)
{
$this->_check_secure ();
$this->call_type = 'VALIDATE';
$dat_str = (!$str ? $this->get_key () : $str);
if (0 < strlen ($dat_str))
{
$data = $this->_unwrap_license ($dat_str);
if (is_array ($data))
{
$id1 = md5 ($this->ID1);
$id2 = md5 ($this->ID2);
switch ($data['ID'])
{
case $id2:
{
$data['RESULT'] = 'PENDING';
break;
}
case $id1:
{
break;
}
default:
{
$data['RESULT'] = 'CORRUPT';
}
}
}
}
return $data;
}
function validate ($str
false, $product 0, $simple_result = false)
{
$this->_check_secure ();
$this->call_type = 'VALIDATE';
$dat_str = (!$str ? $this->get_key () : $str);
if (0 < strlen ($dat_str))
{
$data = $this->_unwrap_license ($dat_str);
if (is_array ($data))
{
$id1 = md5 ($this->ID1);
$id2 = md5 ($this->ID2);
switch ($data['ID'])
{
case $id2:
{
$data['RESULT'] = 'PENDING';
break;
}
case $id1:
{
break;
}
default:
{
$data['RESULT'] = 'CORRUPT';
}
}
if ($data['PRODUCT'] != $product)
{
$data['RESULT'] = 'PRODUCT_MISMATCH';
}
if ($data['BINDING']['DATE'])
{
if (time () + $this->START_DIF < $data['DATE']['START'])
{
$data['RESULT'] = 'DATE_MISMATCH';
}
if (($data['DATE']['END'] - time () < 0 AND $data['DATE']['SPAN'] != 'NEVER'))
{
$data['RESULT'] = 'DATE_MISMATCH';
}
$data['DATE']['HUMAN']['START'] = @date ($this->DATE_STRING, $data['DATE']['START']);
$data['DATE']['HUMAN']['END'] = @date ($this->DATE_STRING, $data['DATE']['END']);
}
if ($data['BINDING']['SERVER'])
{ $os
$data['SERVER']['OS'] PHP_OS; $mac
$data['SERVER']['MAC'] $this->_MAC;
if ((!$os OR !$mac))
{
$data['RESULT'] = 'ILLEGAL_MAC';
}
}
if ($data['BINDING']['PATH'])
{ $path
$this->_SERVER_INFO['INSTALL_PATH'] $data['SERVER']['PATH'];
if (!$path)
{
$data['RESULT'] = 'ILLEGAL_PATH';
}
}
if ($data['BINDING']['DOMAIN'])
{ $license_domain
(strtolower (substr ($data['SERVER']['DOMAIN'], 0, 4)) 'www.' ? substr ($data['SERVER']['DOMAIN'], 4) : $data['SERVER']['DOMAIN']); $server_domain
(strtolower (substr ($this->_SERVER_VARS['HTTP_HOST'], 0, 4)) 'www.' ? substr ($this->_SERVER_VARS['HTTP_HOST'], 4) : $this->_SERVER_VARS['HTTP_HOST']); $domain
$license_domain $server_domain;
$valid_domain = $this->_compare_domain_ip ($data['SERVER']['DOMAIN'], $this->_IPS);
if ((!$valid_domain OR !$domain))
{
$data['RESULT'] = 'ILLEGAL_DOMAIN';
}
}
if ($data['BINDING']['IP'])
{ $ip
$this->_IPS $data['SERVER']['IP'];
if (!$ip)
{
$data['RESULT'] = 'ILLEGAL_IP';
}
}
if (!$data['BINDING']['LOCAL'])
{ $local
(('127.0.0.1' $this->_IPS OR $this->_SERVER_INFO['SERVER_ADDR'] == '127.0.0.1') OR $this->_SERVER_INFO['HTTP_HOST'] == '127.0.0.1');
if ($local)
{
$data['RESULT'] = 'ILLEGAL_LOCAL';
}
}
if (($data['BINDING']['REMOTE'] AND (($data['RESULT'] == 'PENDING' OR $data['CALLSPAN'] <= time () - $data['LASTCALL']) OR $this->FORCE_UPDATE == 1)))
{
$stuff_to_send = array ();
$stuff_to_send['LICENSE_DATA'] = $data;
$stuff_to_send['LICENSE_DATA']['KEY'] = md5 ($dat_str);
$RESULT = $this->_call_home ($stuff_to_send, $this->_DAIL_HOST, $this->_DAIL_PATH, $this->_DAIL_PORT);
if (is_array ($RESULT))
{
$data['UPDATE_KEY'] = $RESULT['UPDATE_KEY'];
$data['CUSTOM'] = $RESULT['CUSTOM'];
if ((!isset ($data['RESULT']) OR $data['RESULT'] == 'PENDING'))
{
$data['RESULT'] = $RESULT['RESULT'];
}
if ($RESULT['RESULT'] == 'LICENSE_UPDATED')
{
$data['RESULT'] = 'LICENSE_UPDATED';
}
}
else
{
if ((!isset ($data['RESULT']) OR $data['RESULT'] != 'PENDING'))
{
$data['RESULT'] = $RESULT;
}
if ($RESULT == 'LICENSE_UPDATED')
{
$data['RESULT'] = 'LICENSE_UPDATED';
}
}
}
else
{
if (!isset ($data['RESULT']))
{
$data['RESULT'] = 'OK';
}
}
if ($simple_result)
{ $data
($data['RESULT'] 'OK' ? true : false);
}
return $data;
}
else
{
return ($simple_result ? false : array ('RESULT' => 'INVALID'));
}
}
return ($simple_result ? false : array ('RESULT' => 'EMPTY'));
}
function query_license ($keycode, $product, $local_key = false)
{
$this->_check_secure ();
$this->call_type = 'VALIDATE';
$data = array ();
if ((count ($this->_SERVER_INFO) < $this->REQUIRED_URIS AND $bind_to_server))
{
return array ('RESULT' => 'SERVER_FAIL');
}
if (!$this->_compare_domain_ip ($this->_SERVER_INFO['HTTP_HOST'], $this->_IPS))
{
return array ('RESULT' => 'DOMAIN_IP_FAIL');
}
$data['ID'] = md5 ($this->ID4);
$data['KEYCODE'] = $keycode;
$data['PRODUCT'] = $product;
$data['SERVER']['IP'] = $this->_IPS;
$data['SERVER']['DOMAIN'] = $this->_SERVER_INFO['HTTP_HOST'];
$data['SERVER']['MAC'] = $this->_MAC;
$data['SERVER']['OS'] = PHP_OS;
$data['SERVER']['PATH'] = $this->_SERVER_INFO['INSTALL_PATH'];
$other['_PHP_VERSION'] = PHP_VERSION;
$data['DATA'] = $other;
$key = $this->_wrap_license ($data);
$stuff_to_send = array ();
$stuff_to_send['LICENSE_DATA'] = $data;
$stuff_to_send['LICENSE_DATA']['KEY'] = md5 ($key);
$RESULT = $this->_call_home ($stuff_to_send, $this->_DAIL_HOST, $this->_DAIL_PATH, $this->_DAIL_PORT);
$data['UPDATE_KEY'] = $RESULT['UPDATE_KEY'];
$data['CUSTOM'] = $RESULT['CUSTOM'];
$data['RESULT'] = $RESULT['RESULT'];
return $data;
}
function make_secure ($report = false)
{
if ($report)
{
define ('_PADL_REPORT_ABUSE_', true);
}
foreach (array_keys (get_object_vars ($this)) as $value)
{
unset ($this[$value]);
}
define ('_PADL_MADE_SECURE_BY_PHP_LICENSER_', 1);
}
function _get_os_var ($var_name, $os)
{
$var_name = strtolower ($var_name);
switch ($os)
{
case 'freebsd':
{
}
case 'netbsd':
{
}
case 'solaris':
{
}
case 'sunos':
{
}
case 'darwin':
{
switch ($var_name)
{
case 'conf':
{
return '/sbin/ifconfig';
}
case 'mac':
{
return 'ether';
}
case 'ip':
{
return 'inet ';
}
}
break;
}
case 'linux':
{
switch ($var_name)
{
case 'conf':
{
return '/sbin/ifconfig';
}
case 'mac':
{
return 'HWaddr';
}
case 'ip':
{
return 'inet addr:';
}
}
break;
}
}
return false;
}
function _get_config_file ()
{
$this->_check_secure ();
if (ini_get ('safe_mode'))
{
return 'SAFE_MODE';
}
$os = strtolower (PHP_OS);
if (substr ($os, 0, 3) == 'win')
{
@exec ('ipconfig/all', $lines);
if (count ($lines) == 0)
{
return 'ERROR_OPEN';
}
$conf = implode ($this->_LINEBREAK, $lines);
}
else
{
$os_file = $this->_get_os_var ('conf', $os);
$fp = @popen ($os_file, 'rb');
if (!$fp)
{
return 'ERROR_OPEN';
}
$conf = @fread ($fp, 4096);
@pclose ($fp);
}
return $conf;
}
function _get_mac_address ()
{
$conf = $this->_get_config_file ();
$os = strtolower (PHP_OS);
if (substr ($os, 0, 3) == 'win')
{
$lines = explode ($this->_LINEBREAK, $conf);
foreach ($lines as $key => $line)
{
if (preg_match ('/([0-9a-f][0-9a-f][-:]){5}([0-9a-f][0-9a-f])/i', $line))
{
$trimmed_line = trim ($line);
return trim (substr ($trimmed_line, strrpos ($trimmed_line, ' ')));
continue;
}
}
}
else
{
$mac_delim = $this->_get_os_var ('mac', $os);
$pos = strpos ($conf, $mac_delim);
if ($pos)
{
$str1 = trim (substr ($conf, $pos + strlen ($mac_delim)));
return trim (substr ($str1, 0, strpos ($str1, '')));
}
}
return 'MAC_404';
}
function _get_server_info ()
{
if (empty ($this->_SERVER_VARS))
{
$this->set_server_vars ($_SERVER);
}
$data = array ();
$data['SCRIPT_DIR'] = dirname ('E:\\classes\\phplicencer\\license_class\\app.php');
if (isset ($this->_SERVER_VARS['SERVER_ADDR']))
{
$data['SERVER_ADDR'] = $this->_SERVER_VARS['SERVER_ADDR'];
}
if (isset ($this->_SERVER_VARS['HTTP_HOST']))
{
$data['HTTP_HOST'] = (strtolower (substr ($this->_SERVER_VARS['HTTP_HOST'], 0, 4)) == 'www.' ? substr ($this->_SERVER_VARS['HTTP_HOST'], 4) : $this->_SERVER_VARS['HTTP_HOST']);
}
if (isset ($this->_SERVER_VARS['SERVER_NAME']))
{
$data['SERVER_NAME'] = $this->_SERVER_VARS['SERVER_NAME'];
}
if (isset ($this->_SERVER_VARS['PATH_TRANSLATED']))
{
$data['PATH_TRANSLATED'] = $data['INSTALL_PATH'] = substr ($this->_SERVER_VARS['PATH_TRANSLATED'], 0, strrpos ($this->_SERVER_VARS['PATH_TRANSLATED'], '/'));
}
else
{
if (isset ($this->_SERVER_VARS['SCRIPT_FILENAME']))
{
$data['SCRIPT_FILENAME'] = $data['INSTALL_PATH'] = substr ($this->_SERVER_VARS['SCRIPT_FILENAME'], 0, strrpos ($this->_SERVER_VARS['SCRIPT_FILENAME'], '/'));
}
}
if (isset ($_SERVER['SCRIPT_URI']))
{
$data['SCRIPT_DIR_URI'] = substr ($this->_SERVER_VARS['SCRIPT_URI'], 0, strrpos ($this->_SERVER_VARS['SCRIPT_URI'], '/'));
}
if (isset ($_SERVER['PHP_SELF']))
{
$data['SCRIPT_URI'] = $this->_SERVER_VARS['HTTP_HOST'] . $this->_SERVER_VARS['PHP_SELF'];
}
else
{
if (isset ($_SERVER['SCRIPT_NAME']))
{
$data['SCRIPT_URI'] = $this->_SERVER_VARS['HTTP_HOST'] . $this->_SERVER_VARS['SCRIPT_NAME'];
}
else
{
if (isset ($_SERVER['REQUEST_URI']))
{
$data['SCRIPT_URI'] = $this->_SERVER_VARS['HTTP_HOST'] . $this->_SERVER_VARS['REQUEST_URI'];
}
}
}
if ($this->_SERVER_VARS['HTTP_USER_AGENT'] == 'PHPLICENSER')
{
$this->FORCE_UPDATE = 1;
}
if (count (array_unique ($data)) < $this->REQUIRED_URIS)
{
return 'SERVER_FAILED';
}
return $data;
}
function _call_home ($data, $dialhost, $dialpath, $dialport)
{
$data = $this->_data_socket_connect ($dialhost, $dialpath, $data, $dialport);
return (empty ($data['RESULT']) ? 'SOCKET_FAILED' : $data);
}
}
class license_architect extends license_application
{
var $HASH_KEY1 = 'KD2bInfMjl9XDOsjx5qXn5Ax66w8frQi6I8QCOta';
var $HASH_KEY2 = 'JZabr6I0aTYT6koV1a9D48zq90vXI1NKDYaqIQjx';
var $HASH_KEY3 = 'kUfJBC90LUab7zhaznVxhcN1Tx5IiQ8SnEbiwHX6';
var $HASH_KEY4 = 'LlvwQUIk71JSsq4O4d7DBkPq1Hk4fGAHUONc203e';
var $ALGORITHM = 'blowfish';
var $MODE = 'ecb';
var $START_DIF = 129600;
var $ID1 = '2G74V9SoLvSv55X22gZD';
var $ID2 = 'ItaxScfhDGSvG7A7mlZW';
var $ID3 = '49Zv4iNpr0MkW9JMIOBc';
var $ID4 = '0RJLvtonC9d51I00KaB3';
var $BEGIN1 = 'BEGIN LICENSE KEY';
var $END1 = 'END LICENSE KEY';
var $WRAPTO = 80;
var $PAD = '-';
var $BEGIN2 = '_DATA{';
var $END2 = '}DATA_';
var $FORCE_UPDATE = 0;
var $DEBUG = true;
var $REQUEST_MCRYPT = 0;
var $REQUIRED_URIS = 2;
var $DATE_STRING = 'd/M/Y H:i:s';
var $RANDOM_SEED = 0;
var $RANDOM_SEED_POS = 0;
var $_DATA = array ();
var $_SERVER_INFO = array ();
var $_DAIL_HOST = '';
var $_DAIL_PATH = '';
var $_DAIL_PORT = 80;
var $ALLOWED_SERVER_DIFS = 0;
var $CALL_HOME = true;
function license_architect ($license_path = 'license.dat')
{
$this->_check_secure ();
$this->_LINEBREAK = $this->_get_os_linebreak ();
$this->license_application ($license_path);
}
function set_register_account ($username, $password)
{
$this->register_username = $username;
$this->register_password = $password;
}
function register_install ($keycode, $product, $other = array ())
{
$this->_check_secure ();
$this->call_type = 'REGISTER';
$domain = $this->_SERVER_INFO['HTTP_HOST'];
if (empty ($keycode))
{
return array ('RESULT' => 'KEYCODE_404');
}
if (empty ($domain))
{
return array ('RESULT' => 'DOMAIN_404');
}
if (4 < @filesize ($this->LICENSE_PATH))
{
return array ('RESULT' => 'KEY_EXISTS');
}
if (!$this->_compare_domain_ip ($domain, $this->_IPS))
{
return array ('RESULT' => 'DOMAIN_IP_FAIL');
}
$data = array ();
$data['ID'] = md5 ($this->ID3);
$data['USERNAME'] = $this->register_username;
$data['PASSWORD'] = $this->register_password;
$data['KEYCODE'] = $keycode;
$data['PRODUCT'] = $product;
$data['SERVER']['OS'] = PHP_OS;
$data['SERVER']['DOMAIN'] = $domain;
$data['SERVER']['IP'] = $this->_IPS;
$data['SERVER']['MAC'] = $this->_MAC;
$data['SERVER']['PATH'] = $this->_SERVER_INFO['INSTALL_PATH'];
$other['_PHP_VERSION'] = PHP_VERSION;
$data = $this->_data_socket_connect ($this->_DAIL_HOST, $this->_DAIL_PATH, $data, $this->_DAIL_PORT);
return (empty ($data['RESULT']) ? array ('RESULT' => 'SOCKET_FAILED') : $data);
}
function _generate_keycode ($sep = '-')
{
$str = $this->_generate_random_string (16, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234567890');
return substr ($str, 0, 4) . $sep . substr ($str, 4, 4) . $sep . substr ($str, 8, 4) . $sep . substr ($str, 12, 4);
}
}
function trace ()
{
$message = '';
for ($i = 0; $i < func_num_args (); ++$i)
{
if (is_array (func_get_arg ($i)))
{
trace_r (func_get_arg ($i));
}
else
{
$message .= func_get_arg ($i);
}
if ($i <= func_num_args () - 2)
{
$message .= ' : ';
continue;
}
}
echo '
' . $message . ' ';
}
function trace_r ($array = 'array is empty')
{
echo '';
print_r ($array);
echo '
';
}
?>
Afficher la suite