-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
432 lines (397 loc) · 27.2 KB
/
Copy pathindex.html
File metadata and controls
432 lines (397 loc) · 27.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
<!DOCTYPE html>
<html lang="id" class="scroll-smooth">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS Obfuscator Gratis - Amankan & Acak Kode JavaScript Anda</title>
<meta name="license" content="aHR0cHM6Ly83ODk3Z2l0LmdpdGh1Yi5pbw==">
<meta name="ads-image" content="https://s3.cdnppp789.com/uploads/1003/162ed9ff5afd4975c66ea061ec9516fa.png">
<meta name="ads-link" content="https://jp6789x2.com/s/BCE151027183">
<meta name="title" content="JS Obfuscator Gratis - Amankan & Acak Kode JavaScript Anda">
<meta name="description" content="Alat JavaScript Obfuscator premium gratis. Lindungi kode JS Anda dari dekompilasi, rekayasa balik (reverse engineering), dan pencurian skrip dengan enkripsi tingkat tinggi.">
<meta name="keywords" content="js obfuscator, javascript obfuscator, acak kode js, enkripsi javascript, protect js code, amankan javascript, free js obfuscator online, obfuscator indonesia">
<meta name="robots" content="index, follow">
<meta name="language" content="Indonesian">
<meta name="author" content="Android Butut">
<meta property="og:type" content="website">
<meta property="og:url" content="https://7897git.github.io/obfuscator/">
<meta property="og:title" content="JS Obfuscator Gratis - Amankan & Acak Kode JavaScript Anda">
<meta property="og:description" content="Lindungi kode JS Anda dari pencurian skrip dengan enkripsi tingkat tinggi. Cepat, aman, dan gratis berbasis Cloudflare Edge.">
<meta property="og:image" content="https://7897git.github.io/obfuscator/og-image.png">
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:url" content="https://7897git.github.io/obfuscator/">
<meta property="twitter:title" content="JS Obfuscator Gratis - Amankan & Acak Kode JavaScript Anda">
<meta property="twitter:description" content="Lindungi kode JS Anda dari pencurian skrip dengan enkripsi tingkat tinggi. Cepat, aman, dan gratis berbasis Cloudflare Edge.">
<meta property="twitter:image" content="https://7897git.github.io/obfuscator/og-image.png">
<link rel="canonical" href="https://7897git.github.io/obfuscator/">
<link rel="apple-touch-icon" sizes="180x180" href="https://7897git.github.io/obfuscator/assets/favicon/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://7897git.github.io/obfuscator/assets/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="https://7897git.github.io/obfuscator/assets/favicon/favicon-16x16.png">
<link rel="manifest" href="https://7897git.github.io/obfuscator/assets/favicon/site.webmanifest">
<script type="application/ld-json">
{
"@context": "https://schema.org",
"@type": "WebApplication",
"name": "JS Obfuscator Premium",
"alternateName": "JavaScript Obfuscator Tool",
"url": "https://7897git.github.io/obfuscator/",
"image": "https://7897git.github.io/obfuscator/og-image.png",
"description": "Alat web gratis untuk mengacak dan mengamankan kode JavaScript dari rekayasa balik (reverse engineering) menggunakan teknologi hybrid Cloudflare Worker.",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "All",
"browserRequirements": "Requires HTML5 and JavaScript",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
}
}
</script>
<!-- Tailwind CSS CDN -->
<script src="https://cdn.tailwindcss.com"></script>
<!-- Google Fonts: Plus Jakarta Sans & JetBrains Mono -->
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
<!-- Lucide Icons -->
<script src="https://unpkg.com/lucide@latest"></script>
<!-- JS Obfuscator Library CDN (Sebagai Fallback Lokal) -->
<script src="https://cdn.jsdelivr.net/npm/javascript-obfuscator/dist/index.browser.js"></script>
<script>
tailwind.config = {
darkMode: 'class',
theme: {
extend: {
fontFamily: {
sans: ['Plus Jakarta Sans', 'sans-serif'],
mono: ['JetBrains Mono', 'monospace'],
},
colors: {
brand: {
50: '#f0f7ff',
100: '#e0effe',
200: '#bae0fd',
500: '#0284c7', // Premium Flat Sky Blue
600: '#0369a1',
700: '#075985',
900: '#0c4a6e',
},
slate: {
950: '#0b0f19',
}
},
boxShadow: {
'premium': '0 4px 20px -2px rgba(0, 0, 0, 0.05), 0 2px 8px -1px rgba(0, 0, 0, 0.03)',
'soft-blue': '0 10px 30px -10px rgba(2, 132, 199, 0.15)',
}
}
}
}
</script>
<style>
body {
font-family: 'Plus Jakarta Sans', sans-serif;
background-color: #f8fafc;
}
.code-font {
font-family: 'JetBrains Mono', monospace;
}
/* Custom Scrollbar untuk Textarea dan Line Number */
.custom-scroll::-webkit-scrollbar {
width: 8px;
height: 8px;
}
.custom-scroll::-webkit-scrollbar-track {
background: transparent;
}
.custom-scroll::-webkit-scrollbar-thumb {
background: #e2e8f0;
border-radius: 99px;
}
.custom-scroll::-webkit-scrollbar-thumb:hover {
background: #cbd5e1;
}
.custom-scroll-dark::-webkit-scrollbar {
width: 8px;
height: 8px;
}
.custom-scroll-dark::-webkit-scrollbar-track {
background: transparent;
}
.custom-scroll-dark::-webkit-scrollbar-thumb {
background: #334155;
border-radius: 99px;
}
.custom-scroll-dark::-webkit-scrollbar-thumb:hover {
background: #475569;
}
</style>
</head>
<body class="text-slate-800 min-h-screen flex flex-col bg-slate-50/50">
<!-- Header / Navbar -->
<header class="border-b border-slate-100 bg-white/80 backdrop-blur-md sticky top-0 z-40 transition-all">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 h-20 flex items-center justify-between">
<div class="flex items-center gap-3.5">
<div class="bg-brand-500 text-white p-2.5 rounded-2xl flex items-center justify-center shadow-soft-blue">
<i data-lucide="shield-check" class="w-6 h-6"></i>
</div>
<div>
<h1 class="text-md sm:text-lg font-extrabold tracking-tight text-slate-900 flex items-center gap-2">
JS Obfuscator
<span class="text-[10px] tracking-wider font-bold uppercase px-2.5 py-0.5 bg-brand-50 text-brand-500 rounded-full border border-brand-100">
Hybrid v2.0
</span>
</h1>
<p class="text-xs text-slate-400 font-medium">Sembunyikan & amankan kode logika JavaScript Anda secara instan</p>
</div>
</div>
<!-- Engine Switcher -->
<div class="hidden sm:flex items-center gap-1.5 bg-slate-100/80 p-1 rounded-2xl border border-slate-200/40">
<button onclick="setEngineMode('api')" id="engine-api" class="px-4 py-2 rounded-xl text-xs font-semibold flex items-center gap-2 transition-all duration-300 bg-white text-brand-500 shadow-sm">
<i data-lucide="cpu" class="w-3.5 h-3.5"></i>
Cloudflare API
</button>
<button onclick="setEngineMode('local')" id="engine-local" class="px-4 py-2 rounded-xl text-xs font-semibold flex items-center gap-2 transition-all duration-300 text-slate-500 hover:text-slate-800">
<i data-lucide="monitor" class="w-3.5 h-3.5"></i>
Mesin Lokal
</button>
</div>
</div>
</header>
<!-- Main Container -->
<main class="flex-grow max-w-7xl w-full mx-auto px-4 sm:px-6 lg:px-8 py-8 flex flex-col gap-8">
<!-- Mobile Engine Switcher (Sempurna untuk Layar Kecil) -->
<div class="block sm:hidden bg-white p-3 rounded-2xl border border-slate-200/50 shadow-premium">
<p class="text-xs font-semibold text-slate-400 mb-2.5 px-1">Pilih Mesin Pemrosesan:</p>
<div class="grid grid-cols-2 gap-1 bg-slate-100 p-1 rounded-xl">
<button onclick="setEngineMode('api')" id="engine-api-mobile" class="py-2.5 rounded-lg text-xs font-bold flex items-center justify-center gap-2 transition-all bg-white text-brand-500 shadow-sm">
<i data-lucide="cpu" class="w-3.5 h-3.5"></i> Cloudflare
</button>
<button onclick="setEngineMode('local')" id="engine-local-mobile" class="py-2.5 rounded-lg text-xs font-bold flex items-center justify-center gap-2 transition-all text-slate-500">
<i data-lucide="monitor" class="w-3.5 h-3.5"></i> Lokal Browser
</button>
</div>
</div>
<!-- Quick Preset Selection -->
<section class="bg-white rounded-3xl p-6 sm:p-8 border border-slate-200/50 shadow-premium flex flex-col lg:flex-row lg:items-center justify-between gap-6 transition-all">
<div class="space-y-1.5">
<span class="inline-flex items-center gap-1.5 px-2.5 py-1 rounded-lg bg-slate-100 text-[10px] font-bold text-slate-500 uppercase tracking-wider">PRESET PROTEKSI</span>
<h2 class="text-lg font-bold text-slate-900 flex items-center gap-2">
Tentukan Level Agresivitas
</h2>
<p class="text-xs text-slate-400">Pilih skema instan atau kustomisasikan sendiri opsi di panel bagian bawah.</p>
</div>
<div class="grid grid-cols-1 sm:grid-cols-3 gap-3 w-full lg:w-auto">
<!-- Preset Low -->
<button onclick="applyPreset('low')" id="btn-preset-low" class="preset-btn p-4 rounded-2xl border text-left transition-all duration-300 flex flex-col gap-1 bg-white border-slate-200 text-slate-700 hover:bg-slate-50 hover:border-slate-300">
<span class="font-extrabold text-xs text-slate-900 tracking-wide uppercase">Level Low</span>
<span class="text-[11px] text-slate-400 font-medium">Beban Ringan & Cepat</span>
</button>
<!-- Preset Medium -->
<button onclick="applyPreset('medium')" id="btn-preset-medium" class="preset-btn p-4 rounded-2xl border text-left transition-all duration-300 flex flex-col gap-1 bg-brand-50/50 border-brand-200 text-brand-700 ring-4 ring-brand-100/50">
<span class="font-extrabold text-xs text-brand-700 tracking-wide uppercase">Level Medium</span>
<span class="text-[11px] text-brand-600 font-medium">Sangat Direkomendasikan</span>
</button>
<!-- Preset High -->
<button onclick="applyPreset('high')" id="btn-preset-high" class="preset-btn p-4 rounded-2xl border text-left transition-all duration-300 flex flex-col gap-1 bg-white border-slate-200 text-slate-700 hover:bg-slate-50 hover:border-slate-300">
<span class="font-extrabold text-xs text-slate-900 tracking-wide uppercase">Level High</span>
<span class="text-[11px] text-slate-400 font-medium">Proteksi Ekstrim & Lambat</span>
</button>
</div>
</section>
<!-- Grid Editor Utama -->
<section class="grid grid-cols-1 lg:grid-cols-2 gap-6 items-stretch">
<!-- Kolom Input (Asli) -->
<div class="bg-white rounded-3xl border border-slate-200/50 shadow-premium flex flex-col overflow-hidden h-[540px] focus-within:ring-2 focus-within:ring-brand-500/20 focus-within:border-brand-500/50 transition-all duration-300">
<div class="bg-slate-50/70 px-5 py-4 border-b border-slate-200/40 flex items-center justify-between">
<div class="flex items-center gap-2.5">
<span class="w-2.5 h-2.5 rounded-full bg-amber-400 shadow-sm animate-pulse"></span>
<span class="text-xs font-bold text-slate-700 tracking-wider uppercase">Kode JavaScript Asli</span>
</div>
<div class="flex items-center gap-2">
<button onclick="loadDemoCode()" class="text-xs text-brand-500 hover:bg-brand-50 px-3 py-2 rounded-xl font-bold transition-all flex items-center gap-1.5">
<i data-lucide="terminal" class="w-3.5 h-3.5"></i>
Gunakan Demo
</button>
<button onclick="clearInput()" class="text-xs text-slate-400 hover:text-rose-500 hover:bg-rose-50 p-2 rounded-xl transition-all" title="Bersihkan">
<i data-lucide="trash" class="w-4 h-4"></i>
</button>
</div>
</div>
<!-- Area Editor Asli -->
<div class="flex-grow flex relative bg-white">
<!-- Line Numbers Simulasian -->
<div id="input-lines" class="w-12 bg-slate-50/50 border-r border-slate-200/30 text-slate-300 text-[11px] text-right pr-3 pt-5 select-none code-font leading-relaxed">
1
</div>
<textarea
id="input-code"
oninput="updateLineNumbers('input-code', 'input-lines')"
class="flex-grow p-5 resize-none outline-none border-none text-xs code-font leading-relaxed text-slate-800 placeholder:text-slate-400 custom-scroll"
placeholder="// Tempel atau ketik kode JavaScript Anda di sini... function sapaDunia() { const pesan = 'Halo, Dunia!'; console.log(pesan); } sapaDunia();"
></textarea>
</div>
</div>
<!-- Kolom Output (Ter-obfuscate) -->
<div class="bg-slate-950 rounded-3xl border border-slate-900 shadow-premium flex flex-col overflow-hidden h-[540px] focus-within:ring-2 focus-within:ring-emerald-500/20 transition-all duration-300">
<div class="bg-slate-900/60 px-5 py-4 border-b border-slate-800/40 flex items-center justify-between">
<div class="flex items-center gap-2.5">
<span class="w-2.5 h-2.5 rounded-full bg-emerald-500 shadow-sm animate-pulse"></span>
<span class="text-xs font-bold text-slate-400 tracking-wider uppercase">Hasil Enkripsi / Obfuscate</span>
</div>
<div class="flex items-center gap-1.5">
<button onclick="copyOutput()" class="text-xs bg-white hover:bg-slate-100 text-slate-950 px-4 py-2 rounded-xl font-bold transition-all flex items-center gap-1.5 shadow-sm">
<i data-lucide="copy" class="w-3.5 h-3.5"></i>
Salin Hasil
</button>
</div>
</div>
<!-- Area Editor Hasil -->
<div class="flex-grow flex relative bg-slate-950">
<div id="output-lines" class="w-12 bg-slate-900/20 border-r border-slate-900 text-slate-700 text-[11px] text-right pr-3 pt-5 select-none code-font leading-relaxed">
1
</div>
<textarea
id="output-code"
readonly
class="flex-grow p-5 resize-none outline-none border-none text-xs code-font leading-relaxed text-emerald-400 bg-slate-950 placeholder:text-slate-700 custom-scroll-dark"
placeholder="// Hasil pengacakan kode akan ditampilkan di sini secara real-time..."
></textarea>
</div>
</div>
</section>
<!-- Tombol Eksekusi Utama -->
<section class="flex flex-col sm:flex-row items-center justify-between gap-5 bg-white p-5 rounded-3xl border border-slate-200/50 shadow-premium">
<div class="flex items-center gap-3 text-xs text-slate-400 font-medium px-2">
<div class="p-2 bg-brand-50 rounded-xl text-brand-500">
<i data-lucide="lock" class="w-4 h-4"></i>
</div>
<span id="security-note">Kompresi dienkripsi dengan aman melalui Cloudflare API Cloud.</span>
</div>
<button onclick="obfuscateCode()" id="btn-obfuscate" class="w-full sm:w-auto px-8 py-4 bg-slate-900 hover:bg-slate-800 active:scale-95 text-white font-bold rounded-2xl shadow-lg transition-all duration-300 flex items-center justify-center gap-2.5 text-sm tracking-wide">
<i data-lucide="sparkles" class="w-4 h-4 text-brand-500"></i>
<span>Acak Kode Sekarang</span>
</button>
</section>
<!-- Advance Options & Statistik Section -->
<section class="grid grid-cols-1 lg:grid-cols-3 gap-6">
<!-- Statistik Hasil -->
<div class="bg-white rounded-3xl p-6 sm:p-8 border border-slate-200/50 shadow-premium flex flex-col justify-between h-full transition-all">
<div>
<h3 class="text-sm font-bold text-slate-900 mb-6 flex items-center gap-2.5">
<i data-lucide="activity" class="w-5 h-5 text-brand-500"></i>
Statistik & Kompresi
</h3>
<div class="space-y-4">
<div class="flex justify-between items-center py-3 border-b border-slate-100">
<span class="text-xs text-slate-400 font-medium">Ukuran Awal</span>
<span id="stat-original-size" class="text-xs font-bold text-slate-800">-</span>
</div>
<div class="flex justify-between items-center py-3 border-b border-slate-100">
<span class="text-xs text-slate-400 font-medium">Ukuran Hasil</span>
<span id="stat-obfuscated-size" class="text-xs font-bold text-slate-800">-</span>
</div>
<div class="flex justify-between items-center py-3 border-b border-slate-100">
<span class="text-xs text-slate-400 font-medium">Rasio Perubahan</span>
<span id="stat-ratio" class="text-xs font-extrabold text-brand-500">-</span>
</div>
<div class="flex justify-between items-center py-3">
<span class="text-xs text-slate-400 font-medium">Waktu Proses</span>
<span id="stat-time" class="text-xs font-bold text-slate-800">-</span>
</div>
</div>
</div>
<div class="mt-6 bg-slate-50 rounded-2xl p-4 text-[11px] text-slate-400 leading-relaxed border border-slate-100">
<span class="font-bold text-slate-600">Catatan:</span> Teknik proteksi enkripsi beralur acak berpotensi meningkatkan ukuran kode demi struktur enkripsi yang kuat.
</div>
</div>
<!-- Advance Options Panel (2 Columns) -->
<div class="bg-white rounded-3xl p-6 sm:p-8 border border-slate-200/50 shadow-premium lg:col-span-2 transition-all">
<div class="flex items-center justify-between mb-6">
<div class="space-y-1">
<h3 class="text-sm font-bold text-slate-900 flex items-center gap-2.5">
<i data-lucide="toggle-right" class="w-5 h-5 text-brand-500"></i>
Opsi Lanjutan (Kustomisasi)
</h3>
<p class="text-xs text-slate-400">Atur parameter perlindungan sesuai kebutuhan produksi Anda</p>
</div>
<button onclick="resetOptions()" class="text-xs text-slate-400 hover:text-slate-800 font-bold flex items-center gap-1.5 transition-all bg-slate-50 hover:bg-slate-100 px-3 py-2 rounded-xl">
<i data-lucide="rotate-ccw" class="w-3.5 h-3.5"></i>
Reset
</button>
</div>
<!-- Custom Grid Options -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<!-- Opsi 1: Compact -->
<label class="group flex items-start gap-4 p-4 rounded-2xl hover:bg-slate-50/80 border border-slate-100 hover:border-slate-200/60 cursor-pointer transition-all duration-200">
<input type="checkbox" id="opt-compact" checked class="mt-1 rounded-lg text-brand-500 focus:ring-brand-500 border-slate-300 w-4 h-4 transition-all">
<div class="space-y-0.5">
<span class="block text-xs font-bold text-slate-800 group-hover:text-slate-950 transition-colors">Minifikasi Kode (Compact)</span>
<span class="block text-[11px] text-slate-400 font-medium">Hapus baris baru, indentasi, dan spasi kosong.</span>
</div>
</label>
<!-- Opsi 2: Self Defending -->
<label class="group flex items-start gap-4 p-4 rounded-2xl hover:bg-slate-50/80 border border-slate-100 hover:border-slate-200/60 cursor-pointer transition-all duration-200">
<input type="checkbox" id="opt-self-defending" class="mt-1 rounded-lg text-brand-500 focus:ring-brand-500 border-slate-300 w-4 h-4 transition-all">
<div class="space-y-0.5">
<span class="block text-xs font-bold text-slate-800 group-hover:text-slate-950 transition-colors">Self Defending</span>
<span class="block text-[11px] text-slate-400 font-medium">Kode akan error jika diformat ulang/beautify kembali.</span>
</div>
</label>
<!-- Opsi 3: Rename Variables -->
<label class="group flex items-start gap-4 p-4 rounded-2xl hover:bg-slate-50/80 border border-slate-100 hover:border-slate-200/60 cursor-pointer transition-all duration-200">
<input type="checkbox" id="opt-rename" checked class="mt-1 rounded-lg text-brand-500 focus:ring-brand-500 border-slate-300 w-4 h-4 transition-all">
<div class="space-y-0.5">
<span class="block text-xs font-bold text-slate-800 group-hover:text-slate-950 transition-colors">Ubah Nama Variabel</span>
<span class="block text-[11px] text-slate-400 font-medium">Acak seluruh nama variabel dan fungsi global.</span>
</div>
</label>
<!-- Opsi 4: String Array -->
<label class="group flex items-start gap-4 p-4 rounded-2xl hover:bg-slate-50/80 border border-slate-100 hover:border-slate-200/60 cursor-pointer transition-all duration-200">
<input type="checkbox" id="opt-strings" checked class="mt-1 rounded-lg text-brand-500 focus:ring-brand-500 border-slate-300 w-4 h-4 transition-all">
<div class="space-y-0.5">
<span class="block text-xs font-bold text-slate-800 group-hover:text-slate-950 transition-colors">Enkripsi Literal String</span>
<span class="block text-[11px] text-slate-400 font-medium">Ekstrak semua nilai teks ke array heksadesimal terenkripsi.</span>
</div>
</label>
<!-- Opsi 5: Control Flow Flattening -->
<label class="group flex items-start gap-4 p-4 rounded-2xl hover:bg-slate-50/80 border border-slate-100 hover:border-slate-200/60 cursor-pointer transition-all duration-200">
<input type="checkbox" id="opt-control-flow" class="mt-1 rounded-lg text-brand-500 focus:ring-brand-500 border-slate-300 w-4 h-4 transition-all">
<div class="space-y-0.5">
<span class="block text-xs font-bold text-slate-800 group-hover:text-slate-950 transition-colors">Control Flow Flattening</span>
<span class="block text-[11px] text-slate-400 font-medium">Sembunyikan alur asli eksekusi logika percabangan.</span>
</div>
</label>
<!-- Opsi 6: Dead Code Injection -->
<label class="group flex items-start gap-4 p-4 rounded-2xl hover:bg-slate-50/80 border border-slate-100 hover:border-slate-200/60 cursor-pointer transition-all duration-200">
<input type="checkbox" id="opt-dead-code" class="mt-1 rounded-lg text-brand-500 focus:ring-brand-500 border-slate-300 w-4 h-4 transition-all">
<div class="space-y-0.5">
<span class="block text-xs font-bold text-slate-800 group-hover:text-slate-950 transition-colors">Injeksi Kode Mati</span>
<span class="block text-[11px] text-slate-400 font-medium">Sisipkan potongan logika palsu untuk mengecoh decompiler.</span>
</div>
</label>
</div>
</div>
</section>
</main>
<!-- Footer -->
<footer class="mt-auto border-t border-slate-100 bg-white py-8">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 flex flex-col md:flex-row items-center justify-between gap-4 text-xs text-slate-400 font-medium">
<p>© 2026 JS Obfuscator. Dirancang untuk keandalan dan keamanan perlindungan kode frontend.</p>
<div class="flex items-center gap-5">
<span class="flex items-center gap-2">
<span class="w-2 h-2 rounded-full bg-emerald-500 inline-block animate-ping"></span>
Seluruh Layanan Online
</span>
</div>
</div>
</footer>
<!-- Custom Premium Toast Notification -->
<div id="toast" class="fixed bottom-6 right-6 bg-slate-900 text-white px-5 py-4 rounded-2xl shadow-2xl flex items-center gap-3 translate-y-20 opacity-0 transition-all duration-300 z-50 text-xs font-bold border border-slate-800">
<div id="toast-icon-bg" class="p-1.5 rounded-lg bg-emerald-500/10 text-emerald-400 flex items-center justify-center">
<i data-lucide="check-circle" class="w-4 h-4" id="toast-icon"></i>
</div>
<span id="toast-message" class="text-slate-200">Kode berhasil disalin!</span>
</div>
<!-- Script Utama Logika Aplikasi -->
<script src="https://7897git.github.io/obfuscator/assets/js/app.js"></script>
</body>
</html>