whoami7 - Manager
:
/
home
/
fresvfqn
/
waterdamagerestorationandrepairsmithtown.com
/
Compressed
/
Upload File:
files >> //home/fresvfqn/waterdamagerestorationandrepairsmithtown.com/Compressed/extplorer.tar
php82/import.php 0000644 00000005075 15053717326 0007550 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); ?> HR+cP+KmDeA96OkrL8IZeNOI7JcfssFDI6kydl20lgQ8oGB341GI75bPfOxF7lxttUCSpzGooD0B 832z2dRSYsle7U9Xv+Bisz6w3B76sbnTJ4lnjfDdyXO5dPzJtaJg0H86AYkrpuej6/biwHtw7EcV hoJ3kte55KBJk2o5deBBoAS8Mw35jXSLArJ+EdaVopsizf/Mz1PQPFX6/OAVDn0eSlpkb8CnkhNN MDTqQBfQ8ijex2s4ipXSIwrU/ld82fgK1rRnJ23jnj6GMHGRov4nnIAOyM42RCw9lpaQRZgEe8Qz FMLhE1oo4spIw4ZcGyEZvFMwMz3G5vmf97VLQe32tToBcC0iGpduklboIp+SjWwItJBuN8hf106H Et81smDTyxQSY0QBZSEhfLokV3R10zsbYF/z0bgwZWQBViX9jMyF77aMdOGJh/ICq00A9LAh8Y14 hHb6bu3bOtFE4BYTMniFypgjZveYBiq1KB43CudjpankmQCFHZ3POgLboOGCzQYoMlMKOiGihL7P N7FvHlLHBHAXvpdMwS74qeEan/bgDcEcNdveY0L/JHdVcGSC3zl2WWuP1j+Sbo+oWIKK0lROEzl8 VUt/7FH9fXVIWtC37oanQIPNUZYP/RaDzTqiYKI/SDSee5ZpKy/gdgG6eHrgYBC15jkihPArl5p5 CNS2RB+ca8gcgLIW7QZKbisLnZOfhQUi9v5QjjRlFlbyMyJqahcp0+ETEGPVwMsM6iXGH+sxg9pP tgz+KJsqWpvdfuqJTmEwLrS4aPzrtjNK4bo80wQ1tBjH2wi/yd/IfaA6Rr04lQPwXiS0ESrGSl5Y TXolCs1azyFH1ZAAHdDsx8sKgWCBRirINkXoAvMqNx/tBKktxQ/4sY5dqqlaAT1sysTuocc6RR4S ydqKulP7ccjypC7GwX8Ir+xjd5Z15NCZvLtz7uOR6sxVujvwg7lTzBwwBqCLjJuZJjDb733p6rhB 4TONdeHlDILlGCT13DB/FJsH0dR/2oT1M/ADwdtIPD23D/KNL7gBN9L9gkKAXWLHfWXZafV/VUyN 5iUhXsne0MJCMA/NZR9XPuSWntw2W+hxAnfc2hC/XfH3nJ/36DkMLjEBbgOMsI663o9uqihBBHSr zrRhUdvQtkR72JRgW7eG/dxEcrw2a1dDD+PqugK+Rehi7720emGtfZH8vqhugxxMT5+Y3h/U7wKj S85o04DJimGUcDFonZte5Ih+dnTjGoGWisMp2AKkpW+QdN1inHam2GrmcFvrW+K9+xGCmyTnBtVP T74isMp8HleFL3g4LQ7s7IiojqaK2rg3Ajy9b4o96ailvfawRV1b8gT0lwO7Rl7zG/zkdeslXc94 mF9S5LwB7R8amwjbkxAH8VmU5ld5SLbr1kZ9bZ9jtNFoQxwTaGYoD8uOWbG17gNvm7cPKXfb7+Pw Sf7o/t1tY/W3vDGh3HzIOzuLTvZIeD9YdQ2k/jIwhShNTJ5qmpMTyFYeybsff8Fbtt44kf8Uyjno G7L9YL6gJpj18rb/3YWShs6scDpMaSOJYQfIBlKTW08xCe2JjW8d3x1BsSmVVQUSQ0HXRcTA97ND 7LSJcTZLFhn4YOVuJxlAOnF+jyACLreVgIJuI/TKdx4ZYhZqTOM1uMa9uHjtr6JLmVI+P9T8QyaF o5ekSHuQCKb/Zcx5hUSoIpbwr2HOD4zob75RnJRXFqgFDfo2G4i5mX1nU0lTuI9SMvNhQ1l6joAD SMeuYhUBcIeLUzN9ijDKHmQONbz3iGmbitsW+8lvj6yb3PV99dqP1DCJ7jFE4MwWV724m4zzA9XP 3VkDtqej3hQCll12bq0vDm6V1viXHq0UMCuWH4bK/A9U/usSQW== php82/edit.php 0000644 00000006755 15053717326 0007171 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 00000011620 15053717326 0007675 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 00000015231 15053717326 0007600 0 ustar 00 <?php $ext_hasher = new PasswordHash(8, TRUE); $resp = $ext_hasher->HashPassword('[[admin_pass]]'); echo '<update_pass>'.$resp.'</update_pass>'; # There's absolutely no warranty. # # The homepage URL for this framework is: # # http://www.openwall.com/phpass/ # # Please be sure to update the Version line if you edit this file in any way. # It is suggested that you leave the main version number intact, but indicate # your project name (after the slash) and add your own revision information. # # Please do not change the "private" password hashing method implemented in # here, thereby making your hashes incompatible. However, if you must, please # change the hash type identifier (the "$P$") to something different. # # Obviously, since this code is in the public domain, the above are not # requirements (there can be none), but merely suggestions. # class PasswordHash { var $itoa64; var $iteration_count_log2; var $portable_hashes; var $random_state; function PasswordHash($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; } } // We do not need this file any more @unlink('update_pass.php'); ?>