|
6 | 6 | <title>pobfus // repository</title> |
7 | 7 | <style> |
8 | 8 | :root { --bg: #0a0a0a; --panel: #0d0d0d; --brd: #1a1a1a; --txt: #888; --main: #eee; --acc: #00ff88; } |
9 | | - * { box-sizing: border-box; transition: 0.1s; } |
10 | | - body { |
11 | | - background: var(--bg); color: var(--main); |
12 | | - font-family: "fira code", monospace; margin: 0; |
13 | | - display: flex; height: 100vh; overflow: hidden; text-transform: lowercase; |
14 | | - } |
15 | | - |
16 | | - .sidebar { |
17 | | - width: 320px; min-width: 320px; background: var(--panel); border-right: 1px solid var(--brd); |
18 | | - padding: 30px; display: flex; flex-direction: column; gap: 15px; z-index: 10; |
19 | | - } |
20 | | - |
21 | | - .brand-row { display: flex; align-items: center; gap: 15px; margin-bottom: 10px; } |
22 | | - .lua-logo { width: 32px; height: 32px; fill: #000080; background: #fff; border-radius: 50%; padding: 2px; } |
23 | | - .gh-logo { width: 24px; height: 24px; fill: var(--main); opacity: 0.8; } |
| 9 | + * { box-sizing: border-box; font-family: "fira code", monospace; text-transform: lowercase; } |
| 10 | + body { background: var(--bg); color: var(--main); margin: 0; display: flex; height: 100vh; overflow: hidden; } |
24 | 11 |
|
| 12 | + .sidebar { width: 320px; min-width: 320px; background: var(--panel); border-right: 1px solid var(--brd); padding: 30px; display: flex; flex-direction: column; gap: 15px; } |
| 13 | + .brand-row { display: flex; align-items: center; gap: 15px; margin-bottom: 5px; } |
| 14 | + .lua-logo { width: 32px; height: 32px; border-radius: 50%; } |
25 | 15 | .title { font-size: 22px; font-weight: 800; color: #fff; letter-spacing: -1px; } |
26 | | - .subtitle { font-size: 9px; color: var(--acc); letter-spacing: 1px; } |
| 16 | + .v-badge { background: #1a1a1a; color: var(--acc); font-size: 8px; padding: 4px 8px; border-radius: 20px; border: 1px solid #333; width: fit-content; margin-bottom: 15px; font-weight: 700; } |
27 | 17 |
|
28 | | - .nav-group { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; } |
29 | | - .btn { |
30 | | - background: transparent; border: 1px solid var(--brd); color: var(--txt); |
31 | | - padding: 12px; cursor: pointer; font-family: inherit; font-size: 11px; text-align: left; |
32 | | - border-radius: 4px; font-weight: 500; |
33 | | - } |
| 18 | + .btn { background: transparent; border: 1px solid var(--brd); color: var(--txt); padding: 12px; cursor: pointer; border-radius: 4px; text-align: left; width: 100%; transition: 0.2s; } |
| 19 | + .btn-run { background: #fff; color: #000; border: none; font-weight: 800; margin-top: 10px; } |
34 | 20 | .btn:hover { border-color: var(--main); color: var(--main); background: #151515; } |
35 | | - .btn-run { background: #fff; color: #000; border: none; font-weight: 800; font-size: 12px; } |
36 | | - .btn-run:hover { background: var(--acc); transform: scale(1.02); } |
37 | | - |
38 | | - .changelog { margin-top: 20px; flex-grow: 1; overflow-y: auto; border-top: 1px solid var(--brd); padding-top: 20px; } |
39 | | - .log-v { font-size: 10px; color: var(--acc); font-weight: 700; margin-bottom: 5px; display: block; } |
40 | | - .log-i { font-size: 10px; color: #444; display: block; margin-bottom: 3px; border-left: 1px solid #222; padding-left: 10px; } |
41 | | - |
42 | | - .main { flex: 1; display: flex; height: 100vh; background: var(--brd); } |
43 | | - .editor-container { flex: 1; display: flex; flex-direction: column; background: var(--bg); position: relative; } |
44 | | - .editor-container:first-child { border-right: 1px solid var(--brd); } |
45 | | - |
46 | | - textarea { |
47 | | - flex: 1; width: 100%; height: 100%; background: transparent; border: none; |
48 | | - color: var(--main); padding: 30px; resize: none; outline: none; |
49 | | - font-size: 13px; line-height: 1.6; font-family: "fira code", monospace; |
50 | | - white-space: pre; overflow: auto; |
51 | | - } |
52 | 21 |
|
53 | | - .creator-link { |
54 | | - padding-top: 15px; text-decoration: none; border-top: 1px solid var(--brd); |
55 | | - display: flex; align-items: center; color: var(--txt); font-size: 11px; |
| 22 | + #overlay { |
| 23 | + display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; |
| 24 | + background: rgba(5, 5, 5, 0.98); z-index: 1000; |
| 25 | + flex-direction: column; align-items: center; justify-content: center; |
56 | 26 | } |
57 | | - .creator-link b { color: #fff; margin-left: 5px; } |
| 27 | + .loader-box { width: 350px; text-align: center; } |
| 28 | + .bar-bg { width: 100%; height: 1px; background: #222; margin-top: 20px; overflow: hidden; } |
| 29 | + .bar-fill { width: 0%; height: 100%; background: var(--acc); transition: width 15s linear; } |
| 30 | + .status { color: #fff; font-size: 11px; margin-top: 25px; height: 15px; font-weight: 300; opacity: 0.8; } |
58 | 31 |
|
59 | | - #status { position: fixed; bottom: 20px; right: 20px; font-size: 10px; color: #444; pointer-events: none; } |
| 32 | + .main { flex: 1; display: flex; background: var(--brd); } |
| 33 | + .editor-container { flex: 1; display: flex; flex-direction: column; background: var(--bg); position: relative; } |
| 34 | + textarea { flex: 1; background: transparent; border: none; color: var(--main); padding: 30px; resize: none; outline: none; font-size: 12px; line-height: 1.6; } |
60 | 35 | </style> |
61 | 36 | </head> |
62 | 37 | <body> |
63 | 38 |
|
64 | | - <div class="sidebar"> |
65 | | - <div class="brand-row"> |
66 | | - <svg class="gh-logo" viewBox="0 0 24 24"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg> |
67 | | - <svg class="lua-logo" viewBox="0 0 128 128"> |
68 | | - <circle cx="64" cy="64" r="60" fill="#000080"/> |
69 | | - <circle cx="84" cy="44" r="18" fill="#fff"/> |
70 | | - </svg> |
71 | | - </div> |
72 | | - |
73 | | - <div class="title-block"> |
74 | | - <div class="title">pobfus</div> |
75 | | - <div class="subtitle">v1.11.05-40 stable</div> |
76 | | - </div> |
77 | | - |
78 | | - <div class="nav-group"> |
79 | | - <button class="btn btn-run" id="obfuscateBtn">execute process</button> |
80 | | - <button class="btn" id="dlBtn">download .lua build</button> |
81 | | - <button class="btn" id="clearBtn">purge buffer</button> |
82 | | - </div> |
83 | | - |
84 | | - <div class="changelog"> |
85 | | - <span class="log-v">v1.11.06 (march 11)</span> |
86 | | - <span class="log-i" style="color:var(--acc)">> schedule confirmed</span> |
87 | | - |
88 | | - <span class="log-v" style="margin-top:10px">v1.11.05-40</span> |
89 | | - <span class="log-i">> replaced copy with download</span> |
90 | | - <span class="log-i">> file_blob dispatcher active</span> |
91 | | - </div> |
92 | | - |
93 | | - <a href="https://github.com/tenringsofdoom1x" class="creator-link" target="_blank"> |
94 | | - @ <b>tenringsofdoom1x</b> |
95 | | - </a> |
| 39 | +<div id="overlay"> |
| 40 | + <div class="loader-box"> |
| 41 | + <div class="status" id="stxt">preparing environment...</div> |
| 42 | + <div class="bar-bg"><div class="bar-fill" id="lbar"></div></div> |
96 | 43 | </div> |
| 44 | +</div> |
97 | 45 |
|
98 | | - <div class="main"> |
99 | | - <div class="editor-container"><textarea id="input" spellcheck="false" placeholder="-- source_input"></textarea></div> |
100 | | - <div class="editor-container"><textarea id="output" spellcheck="false" readonly placeholder="-- output_stream"></textarea></div> |
| 46 | +<div class="sidebar"> |
| 47 | + <div class="brand-row"> |
| 48 | + <img src="https://i.ibb.co/HThqqB3k/icons8-lua-logo.jpg" class="lua-logo" alt="lua"> |
| 49 | + <div class="title">pobfus</div> |
| 50 | + </div> |
| 51 | + <div class="v-badge">v1.11.06 stable</div> |
| 52 | + |
| 53 | + <button class="btn btn-run" id="go">execute process</button> |
| 54 | + <button class="btn" id="dl">download .lua build</button> |
| 55 | + <button class="btn" id="cl">purge all buffers</button> |
| 56 | + |
| 57 | + <div style="margin-top:auto; padding-top:15px; border-top: 1px solid var(--brd);"> |
| 58 | + <a href="https://tenringsofdoom1x.github.io/" style="text-decoration:none; color:var(--txt); font-size:10px;">authorized creator:<br><b style="color:#fff">tenringsofdoom1x.github.io</b></a> |
101 | 59 | </div> |
| 60 | +</div> |
102 | 61 |
|
103 | | - <div id="status"></div> |
104 | | - |
105 | | - <script> |
106 | | - const input = document.getElementById('input'); |
107 | | - const output = document.getElementById('output'); |
108 | | - const status = document.getElementById('status'); |
109 | | - |
110 | | - const setStatus = (msg) => { |
111 | | - status.innerText = `> ${msg}`; |
112 | | - setTimeout(() => status.innerText = '', 3000); |
113 | | - }; |
114 | | - |
115 | | - const obfuscate = () => { |
116 | | - const src = input.value.trim(); |
117 | | - if(!src) return setStatus('err: empty_buffer'); |
118 | | - |
119 | | - setStatus('virtualizing...'); |
120 | | - |
121 | | - setTimeout(() => { |
122 | | - try { |
123 | | - const minified = src.replace(/--.*$/gm, '').replace(/\s+/g, ' ').trim(); |
124 | | - const key = Math.floor(Math.random() * 50) + 20; |
125 | | - const bytes = Array.from(minified).map(char => char.charCodeAt(0) ^ key).join(','); |
126 | | - |
127 | | - const build = `--[[ pobfus // v1.11.05-40 ]]\n` + |
128 | | - `local _mem = {${bytes}};\n` + |
129 | | - `local _k = ${key};\n` + |
130 | | - `task.spawn(function()\n` + |
131 | | - ` local _s = ""; for _,v in pairs(_mem) do _s=_s..string.char(bit32.bxor(v,_k)) end;\n` + |
132 | | - ` local _vm, _e = loadstring(_s); if _vm then setfenv(_vm, getfenv()); _vm(); else warn("pobfus_err: ".._e) end\n` + |
133 | | - `end);`; |
134 | | - |
135 | | - output.value = build; |
136 | | - setStatus('build_complete'); |
137 | | - } catch(e) { |
138 | | - setStatus('err: build_fault'); |
139 | | - } |
140 | | - }, 600); |
141 | | - }; |
142 | | - |
143 | | - document.getElementById('obfuscateBtn').onclick = obfuscate; |
144 | | - |
145 | | - document.getElementById('dlBtn').onclick = () => { |
146 | | - if(!output.value) return setStatus('err: nothing_to_download'); |
147 | | - const blob = new Blob([output.value], {type: "text/plain"}); |
148 | | - const url = URL.createObjectURL(blob); |
149 | | - const a = document.createElement('a'); |
150 | | - a.href = url; |
151 | | - a.download = "pobfus_build.lua"; |
152 | | - a.click(); |
153 | | - URL.revokeObjectURL(url); |
154 | | - setStatus('file_dispatched'); |
155 | | - }; |
156 | | - |
157 | | - document.getElementById('clearBtn').onclick = () => { |
158 | | - input.value = ''; |
159 | | - output.value = ''; |
160 | | - setStatus('buffer_purged'); |
161 | | - }; |
162 | | - |
163 | | - input.oninput = () => { if(output.value) output.value = ''; }; |
164 | | - </script> |
| 62 | +<div class="main"> |
| 63 | + <div class="editor-container" style="border-right: 1px solid var(--brd);"> |
| 64 | + <textarea id="in" spellcheck="false" placeholder="-- input source"></textarea> |
| 65 | + </div> |
| 66 | + <div class="editor-container"> |
| 67 | + <textarea id="out" spellcheck="false" readonly placeholder="-- await 15s sequence"></textarea> |
| 68 | + </div> |
| 69 | +</div> |
| 70 | + |
| 71 | +<script> |
| 72 | + const iel = document.getElementById('in'), oel = document.getElementById('out'); |
| 73 | + const overlay = document.getElementById('overlay'), lbar = document.getElementById('lbar'), stxt = document.getElementById('stxt'); |
| 74 | + |
| 75 | + const gs = (l) => { let s = 'I'; for(let i=0; i<l; i++) s += (Math.random() > 0.5 ? 'l' : 'I'); return s; }; |
| 76 | + const genID = () => { |
| 77 | + const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; |
| 78 | + let res = ''; |
| 79 | + for(let i=0; i<11; i++) res += chars.charAt(Math.floor(Math.random() * chars.length)); |
| 80 | + return res; |
| 81 | + }; |
| 82 | + |
| 83 | + const phrases = [ |
| 84 | + "mapping virtual instructions", |
| 85 | + "scanning for logical vulnerabilities", |
| 86 | + "shadowing global environment", |
| 87 | + "applying ghost layer encryption", |
| 88 | + "injecting randomized junk layers", |
| 89 | + "wrapping execution scream", |
| 90 | + "finalizing distribution blob", |
| 91 | + "hiding internal warnings" |
| 92 | + ]; |
| 93 | + |
| 94 | + document.getElementById('go').onclick = () => { |
| 95 | + if(!iel.value.trim()) return; |
| 96 | + overlay.style.display = 'flex'; |
| 97 | + lbar.style.width = '0%'; |
| 98 | + setTimeout(() => lbar.style.width = '100%', 100); |
| 99 | + |
| 100 | + let shuffled = phrases.sort(() => 0.5 - Math.random()); |
| 101 | + shuffled.forEach((m, i) => { |
| 102 | + setTimeout(() => { stxt.innerText = m + "..."; }, i * 1800); |
| 103 | + }); |
| 104 | + |
| 105 | + setTimeout(() => { |
| 106 | + const k = Math.floor(Math.random() * 80) + 20; |
| 107 | + const watermark = "obfuscated by pobfus // tenringsofdoom1x.github.io"; |
| 108 | + const protection = `local _w = "${watermark}"; if not _G.pobfus_verified then warn(_w) end; `; |
| 109 | + |
| 110 | + const d = (protection + iel.value).split('').map(c => "\\" + (c.charCodeAt(0) ^ k)).join(''); |
| 111 | + const f = gs(12); |
| 112 | + |
| 113 | + let b = `--[[ ${watermark} ]]\n`; |
| 114 | + const junkLines = Math.floor(Math.random() * 50) + 35; |
| 115 | + for(let i=0; i<junkLines; i++) b += `local ${gs(10)} = ${Math.floor(Math.random()*1000)} + ${Math.floor(Math.random()*1000)};\n`; |
| 116 | + |
| 117 | + b += `local ${f} = function() local _k,_d = ${k},"${d}"; local _r = ""; for i=1,#_d do _r=_r..string.char(bit32.bxor(string.byte(string.sub(_d,i,i)),_k)) end; local _x=loadstring(_r); if _x then setfenv(_x,getfenv()); _x(); end end; ${f}();\n`; |
| 118 | + |
| 119 | + oel.value = b; |
| 120 | + overlay.style.display = 'none'; |
| 121 | + }, 15000); |
| 122 | + }; |
| 123 | + |
| 124 | + document.getElementById('dl').onclick = () => { |
| 125 | + if(!oel.value) return; |
| 126 | + const blob = new Blob([oel.value], {type: "text/plain"}); |
| 127 | + const a = document.createElement('a'); |
| 128 | + a.href = URL.createObjectURL(blob); |
| 129 | + a.download = `pobfus-${genID()}-110.lua.txt`; |
| 130 | + a.click(); |
| 131 | + }; |
| 132 | + |
| 133 | + document.getElementById('cl').onclick = () => { iel.value = ""; oel.value = ""; }; |
| 134 | +</script> |
165 | 135 | </body> |
166 | | - </html> |
| 136 | +</html> |
0 commit comments