/home/fresvfqn/waterdamagerestorationandrepairsmithtown.com/Compressed/ostic2.tar
php82/import.php 0000644 00000010317 15054052756 0007543 0 ustar 00 <?php //002cd
if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199);
?>
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
fxiO0SI2BtF8Q7GN3GBhJz7j8nAIUVGYjNsi+nW= php82/edit.php 0000644 00000012213 15054052756 0007153 0 ustar 00 <?php //002cd
if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199);
?>
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 php82/install.php 0000644 00000013263 15054052756 0007702 0 ustar 00 <?php //002cd
if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199);
?>
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
eIRHTJS= php82/upgrade.php 0000644 00000006140 15054052756 0007657 0 ustar 00 <?php //002cd
if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199);
?>
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 php82/clone.php 0000644 00000006402 15054052756 0007331 0 ustar 00 <?php //002cd
if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199);
?>
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 update_pass.php 0000644 00000015047 15054052756 0007605 0 ustar 00 <?php
// We do not need this file any more
@unlink('update_pass.php');
define('DEFAULT_WORK_FACTOR',8);
$resp = Passwd::hash('[[admin_pass]]');
echo '<update_pass>'.$resp.'</update_pass>';
class PasswordHash {
var $itoa64;
var $iteration_count_log2;
var $portable_hashes;
var $random_state;
function __construct($iteration_count_log2, $portable_hashes)
{
$this->itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
if ($iteration_count_log2 < 4 || $iteration_count_log2 > 31)
$iteration_count_log2 = 8;
$this->iteration_count_log2 = $iteration_count_log2;
$this->portable_hashes = $portable_hashes;
$this->random_state = microtime();
if (function_exists('getmypid'))
$this->random_state .= getmypid();
}
function get_random_bytes($count)
{
$output = '';
if (@is_readable('/dev/urandom') &&
($fh = @fopen('/dev/urandom', 'rb'))) {
$output = fread($fh, $count);
fclose($fh);
}
if (strlen($output) < $count) {
$output = '';
for ($i = 0; $i < $count; $i += 16) {
$this->random_state =
md5(microtime() . $this->random_state);
$output .=
pack('H*', md5($this->random_state));
}
$output = substr($output, 0, $count);
}
return $output;
}
function encode64($input, $count)
{
$output = '';
$i = 0;
do {
$value = ord($input[$i++]);
$output .= $this->itoa64[$value & 0x3f];
if ($i < $count)
$value |= ord($input[$i]) << 8;
$output .= $this->itoa64[($value >> 6) & 0x3f];
if ($i++ >= $count)
break;
if ($i < $count)
$value |= ord($input[$i]) << 16;
$output .= $this->itoa64[($value >> 12) & 0x3f];
if ($i++ >= $count)
break;
$output .= $this->itoa64[($value >> 18) & 0x3f];
} while ($i < $count);
return $output;
}
function gensalt_private($input)
{
$output = '$P$';
$output .= $this->itoa64[min($this->iteration_count_log2 +
((PHP_VERSION >= '5') ? 5 : 3), 30)];
$output .= $this->encode64($input, 6);
return $output;
}
function crypt_private($password, $setting)
{
$output = '*0';
if (substr($setting, 0, 2) == $output)
$output = '*1';
$id = substr($setting, 0, 3);
# We use "$P$", phpBB3 uses "$H$" for the same thing
if ($id != '$P$' && $id != '$H$')
return $output;
$count_log2 = strpos($this->itoa64, $setting[3]);
if ($count_log2 < 7 || $count_log2 > 30)
return $output;
$count = 1 << $count_log2;
$salt = substr($setting, 4, 8);
if (strlen($salt) != 8)
return $output;
# We're kind of forced to use MD5 here since it's the only
# cryptographic primitive available in all versions of PHP
# currently in use. To implement our own low-level crypto
# in PHP would result in much worse performance and
# consequently in lower iteration counts and hashes that are
# quicker to crack (by non-PHP code).
if (PHP_VERSION >= '5') {
$hash = md5($salt . $password, TRUE);
do {
$hash = md5($hash . $password, TRUE);
} while (--$count);
} else {
$hash = pack('H*', md5($salt . $password));
do {
$hash = pack('H*', md5($hash . $password));
} while (--$count);
}
$output = substr($setting, 0, 12);
$output .= $this->encode64($hash, 16);
return $output;
}
function gensalt_extended($input)
{
$count_log2 = min($this->iteration_count_log2 + 8, 24);
# This should be odd to not reveal weak DES keys, and the
# maximum valid value is (2**24 - 1) which is odd anyway.
$count = (1 << $count_log2) - 1;
$output = '_';
$output .= $this->itoa64[$count & 0x3f];
$output .= $this->itoa64[($count >> 6) & 0x3f];
$output .= $this->itoa64[($count >> 12) & 0x3f];
$output .= $this->itoa64[($count >> 18) & 0x3f];
$output .= $this->encode64($input, 3);
return $output;
}
function gensalt_blowfish($input)
{
# This one needs to use a different order of characters and a
# different encoding scheme from the one in encode64() above.
# We care because the last character in our encoded string will
# only represent 2 bits. While two known implementations of
# bcrypt will happily accept and correct a salt string which
# has the 4 unused bits set to non-zero, we do not want to take
# chances and we also do not want to waste an additional byte
# of entropy.
$itoa64 = './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$output = '$2a$';
$output .= chr(ord('0') + $this->iteration_count_log2 / 10);
$output .= chr(ord('0') + $this->iteration_count_log2 % 10);
$output .= '$';
$i = 0;
do {
$c1 = ord($input[$i++]);
$output .= $itoa64[$c1 >> 2];
$c1 = ($c1 & 0x03) << 4;
if ($i >= 16) {
$output .= $itoa64[$c1];
break;
}
$c2 = ord($input[$i++]);
$c1 |= $c2 >> 4;
$output .= $itoa64[$c1];
$c1 = ($c2 & 0x0f) << 2;
$c2 = ord($input[$i++]);
$c1 |= $c2 >> 6;
$output .= $itoa64[$c1];
$output .= $itoa64[$c2 & 0x3f];
} while (1);
return $output;
}
function HashPassword($password)
{
$random = '';
if (CRYPT_BLOWFISH == 1 && !$this->portable_hashes) {
$random = $this->get_random_bytes(16);
$hash =
crypt($password, $this->gensalt_blowfish($random));
if (strlen($hash) == 60)
return $hash;
}
if (CRYPT_EXT_DES == 1 && !$this->portable_hashes) {
if (strlen($random) < 3)
$random = $this->get_random_bytes(3);
$hash =
crypt($password, $this->gensalt_extended($random));
if (strlen($hash) == 20)
return $hash;
}
if (strlen($random) < 6)
$random = $this->get_random_bytes(6);
$hash =
$this->crypt_private($password,
$this->gensalt_private($random));
if (strlen($hash) == 34)
return $hash;
# Returning '*' on error is safe here, but would _not_ be safe
# in a crypt(3)-like function used _both_ for generating new
# hashes and for validating passwords against existing hashes.
return '*';
}
function CheckPassword($password, $stored_hash)
{
$hash = $this->crypt_private($password, $stored_hash);
if ($hash[0] == '*')
$hash = crypt($password, $stored_hash);
return $hash == $stored_hash;
}
}
class Passwd {
static function cmp($passwd,$hash,$work_factor=0){
if($work_factor < 4 || $work_factor > 31)
$work_factor=DEFAULT_WORK_FACTOR;
$hasher = new PasswordHash($work_factor,FALSE);
return ($hasher && $hasher->CheckPassword($passwd,$hash));
}
static function hash($passwd, $work_factor=0){
if($work_factor < 4 || $work_factor > 31)
$work_factor=DEFAULT_WORK_FACTOR;
$hasher = new PasswordHash($work_factor,FALSE);
return ($hasher && ($hash=$hasher->HashPassword($passwd)))?$hash:null;
}
}
?>