Skip to content

Commit aafd534

Browse files
authored
Refactor script.js with added comments and helpers
Refactor script.js to improve structure and add comments.
1 parent 301ba90 commit aafd534

1 file changed

Lines changed: 109 additions & 100 deletions

File tree

script.js

Lines changed: 109 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -1,112 +1,121 @@
1-
(function() {
2-
const iel = document.getElementById('in');
3-
const oel = document.getElementById('out');
4-
const log = document.getElementById('log');
5-
const upInput = document.getElementById('up');
6-
const mob = document.getElementById('mob');
1+
/**
2+
* pobfus // v1.11.06 STABLE
3+
* repository logic: ghost-edition (root-level)
4+
* domain: tenringsofdoom1x.github.io
5+
*/
76

8-
const push = (t) => {
9-
log.innerText = `> ${t}`;
10-
setTimeout(() => { if(log.innerText === `> ${t}`) log.innerText = ''; }, 4000);
11-
};
7+
const iel = document.getElementById('in'); // Input Textarea
8+
const oel = document.getElementById('out'); // Output Textarea
9+
const overlay = document.getElementById('overlay');
10+
const lbar = document.getElementById('lbar');
11+
const stxt = document.getElementById('stxt');
1212

13-
// --- the auto-minify engine ---
14-
const minifyLogic = (src) => {
15-
return src
16-
.replace(/--\[\[[\s\S]*?\]\]/g, '') // remove multi-line comments
17-
.replace(/--.*$/gm, '') // remove single-line comments
18-
.replace(/\s+/g, ' ') // collapse whitespace
19-
.trim();
20-
};
13+
// helper: generates randomized IlIlI variable names for Lua
14+
const gs = (l) => {
15+
let s = 'I';
16+
for(let i=0; i<l; i++) s += (Math.random() > 0.5 ? 'l' : 'I');
17+
return s;
18+
};
2119

22-
const todec = (s) => s.split('').map(c => "\\" + c.charCodeAt(0)).join('');
23-
24-
const handleFile = (file) => {
25-
if (!file) return;
26-
const ext = file.name.split('.').pop().toLowerCase();
27-
if (['lua', 'js', 'txt'].indexOf(ext) === -1) return push("err_type_refused");
28-
const reader = new FileReader();
29-
reader.onload = (f) => { iel.value = f.target.result; push("stream_imported"); };
30-
reader.readAsText(file);
31-
};
32-
33-
upInput.onchange = (e) => { handleFile(e.target.files[0]); upInput.value = ''; };
20+
// helper: generates randomized ID for filenames
21+
const genID = () => {
22+
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
23+
let res = '';
24+
for(let i=0; i<11; i++) res += chars.charAt(Math.floor(Math.random() * chars.length));
25+
return res;
26+
};
3427

35-
iel.addEventListener('dragover', (e) => { e.preventDefault(); iel.style.background = "#111"; });
36-
iel.addEventListener('dragleave', () => { iel.style.background = ""; });
37-
iel.addEventListener('drop', (e) => {
38-
e.preventDefault();
39-
iel.style.background = "";
40-
handleFile(e.dataTransfer.files[0]);
41-
});
28+
// Human-like phrases (no underscores)
29+
const phrases = [
30+
"mapping virtual instructions",
31+
"scanning for logical vulnerabilities",
32+
"shadowing global environment",
33+
"applying ghost layer encryption",
34+
"injecting randomized junk layers",
35+
"wrapping execution scream",
36+
"finalizing distribution blob",
37+
"hiding internal warnings"
38+
];
4239

43-
// --- core processing ---
44-
document.getElementById('go').onclick = () => {
45-
let src = iel.value.trim();
46-
if(!src) return push("err_buffer_null");
40+
const executeProcess = () => {
41+
const src = iel.value.trim();
42+
if(!src) return;
4743

48-
push("minifying_stream...");
49-
50-
setTimeout(() => {
51-
try {
52-
// step 1: auto-minify
53-
src = minifyLogic(src);
54-
push("building_void...");
44+
// UI Reset
45+
overlay.style.display = 'flex';
46+
lbar.style.transition = 'none';
47+
lbar.style.width = '0%';
48+
49+
// Trigger 15s linear animation
50+
setTimeout(() => {
51+
lbar.style.transition = 'width 15s linear';
52+
lbar.style.width = '100%';
53+
}, 50);
5554

56-
// step 2: godly virtualization
57-
const k = Math.floor(Math.random() * 45) + 32;
58-
const d = Array.from(src).map(x => x.charCodeAt(0) ^ k).join(',');
59-
const h = todec("pobfus: logic active");
55+
// Shuffle and display phrases
56+
let shuffled = phrases.sort(() => 0.5 - Math.random());
57+
shuffled.forEach((m, i) => {
58+
setTimeout(() => {
59+
stxt.innerText = m + "...";
60+
}, i * 1800);
61+
});
6062

61-
let res = `--[[\n pobfus // v1.11.05\n auto-minified godly build\n]]\n\n`;
62-
res += `task.spawn(function() while task.wait(120) do print("${h}") end end);\n\n`;
63-
res += `local _0x_mem = {${d}}; \n`;
64-
res += `local _success, _error = pcall(function() \n`;
65-
66-
if (mob && mob.checked) {
67-
res += ` local _0x_buf = {}; for _, v in pairs(_0x_mem) do table.insert(_0x_buf, string.char(bit32.bxor(v, ${k}))) end; local _0x_str = table.concat(_0x_buf); \n`;
68-
} else {
69-
res += ` local _0x_str = ""; for _, v in pairs(_0x_mem) do _0x_str = _0x_str .. string.char(bit32.bxor(v, ${k})) end; \n`;
70-
}
71-
72-
res += ` local _0x_env = setmetatable({}, { \n`;
73-
res += ` __index = function(_, k) \n`;
74-
res += ` if k == "debug" or k == "getfenv" then return function() end end; \n`;
75-
res += ` return (getgenv and getgenv()[k] or _G[k]) \n`;
76-
res += ` end, \n`;
77-
res += ` __metatable = "locked" \n`;
78-
res += ` }); \n`;
79-
80-
res += ` local _0x_vm = loadstring(_0x_str); \n`;
81-
res += ` setfenv(_0x_vm, _0x_env); \n`;
82-
res += ` task.spawn(_0x_vm); \n`;
83-
res += `end); \n`;
84-
85-
oel.value = res;
86-
push("build_complete");
87-
} catch (e) {
88-
push("build_fault");
63+
// Main Encryption Logic (After 15s)
64+
setTimeout(() => {
65+
try {
66+
const k = Math.floor(Math.random() * 80) + 20;
67+
const watermark = "obfuscated by pobfus // tenringsofdoom1x.github.io";
68+
69+
// SNEAKY: Warning is buried in the encrypted payload
70+
const protection = `local _w = "${watermark}"; if not _G.pobfus_verified then warn(_w) end; `;
71+
72+
// Convert to XOR-encrypted string
73+
const d = (protection + src).split('').map(c => "\\" + (c.charCodeAt(0) ^ k)).join('');
74+
75+
const f = gs(12); // Shadowed function name
76+
let b = `--[[ ${watermark} ]]\n`;
77+
78+
// DYNAMIC JUNK: Random lines to confuse de-obfuscators
79+
const junkLines = Math.floor(Math.random() * 50) + 35;
80+
for(let i=0; i<junkLines; i++) {
81+
b += `local ${gs(10)} = ${Math.floor(Math.random()*1000)} + ${Math.floor(Math.random()*1000)};\n`;
8982
}
90-
}, 1200);
91-
};
9283

93-
document.getElementById('cp').onclick = () => {
94-
if(!oel.value) return push("err_empty");
95-
navigator.clipboard.writeText(oel.value);
96-
push("buffer_copied");
97-
};
84+
// The Scream (Core Decryption Function)
85+
b += `local ${f} = function() `;
86+
b += `local _k,_d = ${k},"${d}"; `;
87+
b += `local _r = ""; for i=1,#_d do _r=_r..string.char(bit32.bxor(string.byte(string.sub(_d,i,i)),_k)) end; `;
88+
b += `local _x=loadstring(_r); if _x then setfenv(_x,getfenv()); _x(); end end; ${f}();\n`;
89+
90+
// Post-junk footer
91+
for(let i=0; i<10; i++) b += `local ${gs(8)} = ${Math.random()};\n`;
92+
93+
oel.value = b;
94+
overlay.style.display = 'none';
95+
stxt.innerText = "preparing environment...";
96+
97+
} catch(e) {
98+
console.error("pobfus_err:", e);
99+
overlay.style.display = 'none';
100+
}
101+
}, 15000);
102+
};
103+
104+
// Event Listeners
105+
document.getElementById('go').onclick = executeProcess;
98106

99-
document.getElementById('dl').onclick = () => {
100-
if(!oel.value) return push("err_empty");
101-
const blob = new Blob([oel.value], {type: "text/plain"});
102-
const a = document.createElement('a');
103-
a.href = URL.createObjectURL(blob);
104-
a.download = "pobfus_build.lua";
105-
a.click();
106-
push("file_dispatched");
107-
};
107+
document.getElementById('dl').onclick = () => {
108+
if(!oel.value) return;
109+
const blob = new Blob([oel.value], {type: "text/plain"});
110+
const a = document.createElement('a');
111+
// Filename: pobfus-[RANDOM]-110.lua.txt
112+
a.href = URL.createObjectURL(blob);
113+
a.download = `pobfus-${genID()}-110.lua.txt`;
114+
a.click();
115+
URL.revokeObjectURL(a.href);
116+
};
108117

109-
document.getElementById('cl').onclick = () => {
110-
iel.value = ""; oel.value = ""; push("buffer_purged");
111-
};
112-
})();
118+
document.getElementById('cl').onclick = () => {
119+
iel.value = "";
120+
oel.value = "";
121+
};

0 commit comments

Comments
 (0)