joshworksit commited on
Commit
bf135ef
·
verified ·
1 Parent(s): b230364

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +705 -19
index.html CHANGED
@@ -1,19 +1,705 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>OSINT Hound - Open Directory Scanner</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="preconnect" href="https://fonts.googleapis.com">
9
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
+ <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&family=Space+Grotesk:wght@300;400;500;600;700&display=swap" rel="stylesheet">
11
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
12
+
13
+ <script>
14
+ tailwind.config = {
15
+ theme: {
16
+ extend: {
17
+ fontFamily: {
18
+ mono: ['"JetBrains Mono"', 'monospace'],
19
+ sans: ['"Space Grotesk"', 'system-ui', 'sans-serif'],
20
+ },
21
+ colors: {
22
+ void: {
23
+ 950: '#07070e',
24
+ 900: '#0c0c18',
25
+ 800: '#131324',
26
+ 700: '#1c1c35',
27
+ 600: '#2a2a4a',
28
+ 500: '#3d3d6a',
29
+ 400: '#5a5a8f',
30
+ 300: '#8282b5',
31
+ 200: '#b0b0d8',
32
+ 100: '#e0e0f0',
33
+ },
34
+ obsidian: {
35
+ 500: '#1a1a2e',
36
+ 400: '#16213e',
37
+ },
38
+ crimson: {
39
+ DEFAULT: '#ff2a6d',
40
+ dim: '#cc1a4d',
41
+ glow: '#ff5c8d',
42
+ },
43
+ chartreuse: {
44
+ DEFAULT: '#b4e600',
45
+ dim: '#8db300',
46
+ glow: '#d4ff33',
47
+ },
48
+ azure: {
49
+ DEFAULT: '#05d9e8',
50
+ dim: '#03a3af',
51
+ glow: '#4df0fc',
52
+ }
53
+ },
54
+ backgroundImage: {
55
+ 'grid-pattern': "linear-gradient(to right, rgba(255,255,255,0.03) 1px, transparent 1px), linear-gradient(to bottom, rgba(255,255,255,0.03) 1px, transparent 1px)",
56
+ },
57
+ boxShadow: {
58
+ 'neon-red': '0 0 15px rgba(255, 42, 109, 0.3), 0 0 30px rgba(255, 42, 109, 0.1)',
59
+ 'neon-cyan': '0 0 15px rgba(5, 217, 232, 0.3), 0 0 30px rgba(5, 217, 232, 0.1)',
60
+ 'neon-green': '0 0 15px rgba(180, 230, 0, 0.3), 0 0 30px rgba(180, 230, 0, 0.1)',
61
+ }
62
+ }
63
+ }
64
+ }
65
+ </script>
66
+
67
+ <style>
68
+ :root {
69
+ --bg-primary: #07070e;
70
+ --bg-secondary: #0c0c18;
71
+ --accent: #05d9e8;
72
+ --accent-dim: #03a3af;
73
+ --danger: #ff2a6d;
74
+ --success: #b4e600;
75
+ }
76
+
77
+ body {
78
+ background-color: var(--bg-primary);
79
+ font-family: 'Space Grotesk', sans-serif;
80
+ color: #e0e0f0;
81
+ overflow-x: hidden;
82
+ }
83
+
84
+ /* Custom Scrollbar */
85
+ ::-webkit-scrollbar {
86
+ width: 6px;
87
+ height: 6px;
88
+ }
89
+ ::-webkit-scrollbar-track {
90
+ background: var(--bg-secondary);
91
+ }
92
+ ::-webkit-scrollbar-thumb {
93
+ background: var(--void-600);
94
+ border-radius: 3px;
95
+ }
96
+ ::-webkit-scrollbar-thumb:hover {
97
+ background: var(--void-500);
98
+ }
99
+
100
+ /* Animations */
101
+ @keyframes scan-line {
102
+ 0% { top: 0; opacity: 0; }
103
+ 10% { opacity: 1; }
104
+ 90% { opacity: 1; }
105
+ 100% { top: 100%; opacity: 0; }
106
+ }
107
+
108
+ @keyframes pulse-glow {
109
+ 0%, 100% { box-shadow: 0 0 10px rgba(5, 217, 232, 0.1); }
110
+ 50% { box-shadow: 0 0 25px rgba(5, 217, 232, 0.25); }
111
+ }
112
+
113
+ @keyframes data-flow {
114
+ 0% { background-position: 0% 0%; }
115
+ 100% { background-position: 0% 100%; }
116
+ }
117
+
118
+ @keyframes blink-caret {
119
+ 0%, 100% { border-color: transparent; }
120
+ 50% { border-color: var(--accent); }
121
+ }
122
+
123
+ @keyframes slide-in-up {
124
+ from { transform: translateY(20px); opacity: 0; }
125
+ to { transform: translateY(0); opacity: 1; }
126
+ }
127
+
128
+ @keyframes border-rotate {
129
+ 0% { --angle: 0deg; }
130
+ 100% { --angle: 360deg; }
131
+ }
132
+
133
+ @property --angle {
134
+ syntax: '<angle>';
135
+ initial-value: 0deg;
136
+ inherits: false;
137
+ }
138
+
139
+ /* UI Components */
140
+ .glass-panel {
141
+ background: rgba(12, 12, 24, 0.6);
142
+ backdrop-filter: blur(20px);
143
+ -webkit-backdrop-filter: blur(20px);
144
+ border: 1px solid rgba(255, 255, 255, 0.06);
145
+ }
146
+
147
+ .scan-line-overlay {
148
+ position: fixed;
149
+ left: 0;
150
+ right: 0;
151
+ height: 2px;
152
+ background: linear-gradient(90deg, transparent, var(--accent), transparent);
153
+ box-shadow: 0 0 15px var(--accent);
154
+ z-index: 50;
155
+ pointer-events: none;
156
+ display: none;
157
+ }
158
+
159
+ .scan-line-overlay.active {
160
+ display: block;
161
+ animation: scan-line 3s linear infinite;
162
+ }
163
+
164
+ .terminal-text {
165
+ font-family: 'JetBrains Mono', monospace;
166
+ }
167
+
168
+ .typing-cursor::after {
169
+ content: '|';
170
+ animation: blink-caret 1s step-end infinite;
171
+ color: var(--accent);
172
+ }
173
+
174
+ .keyword-highlight {
175
+ display: inline-block;
176
+ padding: 1px 6px;
177
+ border-radius: 4px;
178
+ font-weight: 700;
179
+ font-size: 0.85em;
180
+ letter-spacing: 0.02em;
181
+ border: 1px solid transparent;
182
+ }
183
+
184
+ .kw-critical {
185
+ background: rgba(255, 42, 109, 0.12);
186
+ color: #ff5c8d;
187
+ border-color: rgba(255, 42, 109, 0.3);
188
+ text-shadow: 0 0 8px rgba(255, 42, 109, 0.4);
189
+ }
190
+
191
+ .kw-alert {
192
+ background: rgba(244, 196, 48, 0.12);
193
+ color: #ffd700;
194
+ border-color: rgba(244, 196, 48, 0.3);
195
+ }
196
+
197
+ .kw-info {
198
+ background: rgba(5, 217, 232, 0.12);
199
+ color: #4df0fc;
200
+ border-color: rgba(5, 217, 232, 0.3);
201
+ }
202
+
203
+ .hit-card {
204
+ animation: slide-in-up 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
205
+ }
206
+
207
+ .hit-card:hover {
208
+ transform: translateY(-2px);
209
+ box-shadow: 0 8px 30px rgba(5, 217, 232, 0.08);
210
+ border-color: rgba(5, 217, 232, 0.25);
211
+ }
212
+
213
+ .btn-primary {
214
+ background: linear-gradient(135deg, #05d9e8, #03a3af);
215
+ color: #07070e;
216
+ font-weight: 700;
217
+ transition: all 0.3s ease;
218
+ position: relative;
219
+ overflow: hidden;
220
+ }
221
+
222
+ .btn-primary:hover {
223
+ transform: translateY(-1px);
224
+ box-shadow: 0 0 25px rgba(5, 217, 232, 0.4);
225
+ }
226
+
227
+ .btn-primary::after {
228
+ content: '';
229
+ position: absolute;
230
+ top: -50%;
231
+ left: -50%;
232
+ width: 200%;
233
+ height: 200%;
234
+ background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
235
+ transform: rotate(45deg) translateY(-100%);
236
+ transition: transform 0.6s;
237
+ }
238
+
239
+ .btn-primary:hover::after {
240
+ transform: rotate(45deg) translateY(100%);
241
+ }
242
+
243
+ .btn-danger {
244
+ background: linear-gradient(135deg, #ff2a6d, #cc1a4d);
245
+ color: white;
246
+ font-weight: 700;
247
+ }
248
+
249
+ .btn-danger:hover {
250
+ box-shadow: 0 0 25px rgba(255, 42, 109, 0.4);
251
+ transform: translateY(-1px);
252
+ }
253
+
254
+ .input-field {
255
+ background: rgba(7, 7, 14, 0.6);
256
+ border: 1px solid rgba(255, 255, 255, 0.08);
257
+ color: #e0e0f0;
258
+ transition: all 0.3s ease;
259
+ }
260
+
261
+ .input-field:focus {
262
+ border-color: var(--accent);
263
+ box-shadow: 0 0 0 3px rgba(5, 217, 232, 0.1);
264
+ outline: none;
265
+ }
266
+
267
+ /* Ticker */
268
+ .ticker-wrap {
269
+ overflow: hidden;
270
+ white-space: nowrap;
271
+ }
272
+ .ticker-content {
273
+ display: inline-block;
274
+ animation: ticker 30s linear infinite;
275
+ }
276
+ @keyframes ticker {
277
+ 0% { transform: translateX(0); }
278
+ 100% { transform: translateX(-50%); }
279
+ }
280
+
281
+ /* Status Indicators */
282
+ .status-dot {
283
+ width: 8px;
284
+ height: 8px;
285
+ border-radius: 50%;
286
+ display: inline-block;
287
+ }
288
+ .status-idle { background: #5a5a8f; box-shadow: 0 0 8px #5a5a8f; }
289
+ .status-running { background: var(--success); box-shadow: 0 0 10px var(--success); animation: pulse-dot 1.5s infinite; }
290
+ .status-stopping { background: var(--danger); box-shadow: 0 0 10px var(--danger); }
291
+ .status-done { background: var(--azure); box-shadow: 0 0 10px var(--azure); }
292
+
293
+ @keyframes pulse-dot {
294
+ 0%, 100% { opacity: 1; transform: scale(1); }
295
+ 50% { opacity: 0.5; transform: scale(1.2); }
296
+ }
297
+
298
+ /* File size badge */
299
+ .file-badge {
300
+ font-size: 0.7rem;
301
+ padding: 2px 6px;
302
+ border-radius: 4px;
303
+ font-family: 'JetBrains Mono', monospace;
304
+ }
305
+
306
+ /* Grid background */
307
+ .bg-grid {
308
+ background-size: 40px 40px;
309
+ background-image:
310
+ linear-gradient(to right, rgba(255,255,255,0.02) 1px, transparent 1px),
311
+ linear-gradient(to bottom, rgba(255,255,255,0.02) 1px, transparent 1px);
312
+ }
313
+
314
+ /* Preview modal */
315
+ .preview-modal {
316
+ position: fixed;
317
+ inset: 0;
318
+ z-index: 100;
319
+ display: flex;
320
+ align-items: center;
321
+ justify-content: center;
322
+ background: rgba(7, 7, 14, 0.85);
323
+ backdrop-filter: blur(8px);
324
+ opacity: 0;
325
+ pointer-events: none;
326
+ transition: opacity 0.3s ease;
327
+ }
328
+ .preview-modal.active {
329
+ opacity: 1;
330
+ pointer-events: auto;
331
+ }
332
+ .preview-modal-content {
333
+ transform: scale(0.95);
334
+ transition: transform 0.3s ease;
335
+ }
336
+ .preview-modal.active .preview-modal-content {
337
+ transform: scale(1);
338
+ }
339
+
340
+ /* Animated border on active scan */
341
+ .scanning-border {
342
+ position: relative;
343
+ }
344
+ .scanning-border::before {
345
+ content: '';
346
+ position: absolute;
347
+ inset: -1px;
348
+ border-radius: inherit;
349
+ padding: 1px;
350
+ background: conic-gradient(from var(--angle), transparent 30%, var(--accent) 50%, transparent 70%);
351
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
352
+ -webkit-mask-composite: xor;
353
+ mask-composite: exclude;
354
+ animation: border-rotate 3s linear infinite;
355
+ opacity: 0;
356
+ transition: opacity 0.3s;
357
+ pointer-events: none;
358
+ z-index: 10;
359
+ }
360
+ .scanning-border.active::before {
361
+ opacity: 1;
362
+ }
363
+
364
+ .progress-track {
365
+ background: rgba(255,255,255,0.05);
366
+ border-radius: 4px;
367
+ overflow: hidden;
368
+ }
369
+ .progress-fill {
370
+ height: 100%;
371
+ background: linear-gradient(90deg, var(--accent-dim), var(--accent));
372
+ border-radius: 4px;
373
+ transition: width 0.3s ease;
374
+ position: relative;
375
+ }
376
+ .progress-fill::after {
377
+ content: '';
378
+ position: absolute;
379
+ right: 0;
380
+ top: 0;
381
+ bottom: 0;
382
+ width: 20px;
383
+ background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3));
384
+ }
385
+ </style>
386
+ </head>
387
+ <body class="min-h-screen bg-grid text-void-200 selection:bg-azure selection:text-void-950">
388
+
389
+ <div id="scanLine" class="scan-line-overlay"></div>
390
+
391
+ <!-- Header -->
392
+ <header class="sticky top-0 z-40 glass-panel border-b border-white/[0.06]">
393
+ <div class="max-w-[1600px] mx-auto px-4 py-3 flex items-center justify-between">
394
+ <div class="flex items-center gap-4">
395
+ <div class="relative">
396
+ <div class="w-10 h-10 rounded-lg bg-void-800 border border-azure/20 flex items-center justify-center">
397
+ <i class="fa-solid fa-shield-halved text-azure text-lg"></i>
398
+ </div>
399
+ <div class="absolute -top-1 -right-1 w-3 h-3 bg-azure rounded-full animate-ping opacity-40"></div>
400
+ </div>
401
+ <div>
402
+ <h1 class="text-xl font-bold tracking-tight text-white">OSINT <span class="text-azure">Hound</span></h1>
403
+ <p class="text-[11px] text-void-400 font-mono tracking-widest uppercase">Open Directory Reconnaissance Engine</p>
404
+ </div>
405
+ </div>
406
+
407
+ <div class="hidden md:flex items-center gap-6">
408
+ <div class="flex items-center gap-2 text-sm">
409
+ <span class="status-dot status-idle" id="statusDot"></span>
410
+ <span class="text-void-400 font-mono text-xs uppercase tracking-wider" id="statusText">IDLE</span>
411
+ </div>
412
+ <div class="h-6 w-px bg-white/10"></div>
413
+ <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" class="text-[11px] text-void-400 hover:text-azure transition-colors font-mono">
414
+ Built with <span class="text-azure font-semibold">anycoder</span> <i class="fa-solid fa-arrow-up-right-from-square ml-1 text-[9px]"></i>
415
+ </a>
416
+ </div>
417
+ </div>
418
+ </header>
419
+
420
+ <!-- Main Layout -->
421
+ <main class="max-w-[1600px] mx-auto px-4 py-6 grid grid-cols-1 xl:grid-cols-[380px_1fr] gap-6">
422
+
423
+ <!-- Left Panel: Controls -->
424
+ <aside class="space-y-5">
425
+ <!-- Configuration Card -->
426
+ <div class="glass-panel rounded-xl p-5 scanning-border" id="configCard">
427
+ <div class="flex items-center gap-2 mb-4">
428
+ <i class="fa-solid fa-sliders text-azure text-sm"></i>
429
+ <h2 class="text-sm font-bold uppercase tracking-wider text-white">Configuration</h2>
430
+ </div>
431
+
432
+ <div class="space-y-4">
433
+ <div>
434
+ <label class="block text-xs font-mono text-void-400 mb-1.5">TARGET URL</label>
435
+ <input type="text" id="targetUrl" value="http://192.168.1.100:8080"
436
+ class="input-field w-full rounded-lg px-3 py-2.5 text-sm font-mono placeholder-void-600"
437
+ placeholder="http://target.com">
438
+ </div>
439
+
440
+ <div class="grid grid-cols-2 gap-3">
441
+ <div>
442
+ <label class="block text-xs font-mono text-void-400 mb-1.5">THREADS</label>
443
+ <input type="number" id="threads" value="12" min="1" max="64"
444
+ class="input-field w-full rounded-lg px-3 py-2.5 text-sm font-mono">
445
+ </div>
446
+ <div>
447
+ <label class="block text-xs font-mono text-void-400 mb-1.5">TIMEOUT (ms)</label>
448
+ <input type="number" id="timeout" value="5000" min="1000" step="500"
449
+ class="input-field w-full rounded-lg px-3 py-2.5 text-sm font-mono">
450
+ </div>
451
+ </div>
452
+
453
+ <div>
454
+ <label class="block text-xs font-mono text-void-400 mb-1.5">KEYWORDS</label>
455
+ <textarea id="keywords" rows="4" readonly
456
+ class="input-field w-full rounded-lg px-3 py-2.5 text-xs font-mono leading-relaxed text-void-300 resize-none">bitcoin, recovery, wallet, private, key, secret, username, password</textarea>
457
+ </div>
458
+
459
+ <div>
460
+ <label class="block text-xs font-mono text-void-400 mb-1.5">DETECTION MODE</label>
461
+ <div class="flex gap-2">
462
+ <label class="flex-1 cursor-pointer">
463
+ <input type="radio" name="mode" value="12" class="peer sr-only" checked>
464
+ <div class="text-center py-2 rounded-lg border border-white/[0.06] text-xs font-mono text-void-400 peer-checked:bg-azure/10 peer-checked:border-azure/30 peer-checked:text-azure transition-all">
465
+ 12-WORD
466
+ </div>
467
+ </label>
468
+ <label class="flex-1 cursor-pointer">
469
+ <input type="radio" name="mode" value="24" class="peer sr-only">
470
+ <div class="text-center py-2 rounded-lg border border-white/[0.06] text-xs font-mono text-void-400 peer-checked:bg-azure/10 peer-checked:border-azure/30 peer-checked:text-azure transition-all">
471
+ 24-WORD
472
+ </div>
473
+ </label>
474
+ <label class="flex-1 cursor-pointer">
475
+ <input type="radio" name="mode" value="both" class="peer sr-only">
476
+ <div class="text-center py-2 rounded-lg border border-white/[0.06] text-xs font-mono text-void-400 peer-checked:bg-azure/10 peer-checked:border-azure/30 peer-checked:text-azure transition-all">
477
+ BOTH
478
+ </div>
479
+ </label>
480
+ </div>
481
+ </div>
482
+ </div>
483
+ </div>
484
+
485
+ <!-- Action Panel -->
486
+ <div class="glass-panel rounded-xl p-5">
487
+ <div class="grid grid-cols-2 gap-3 mb-4">
488
+ <button id="btnStart" class="btn-primary rounded-lg py-3 px-4 text-sm flex items-center justify-center gap-2">
489
+ <i class="fa-solid fa-play text-xs"></i>
490
+ <span>START SCAN</span>
491
+ </button>
492
+ <button id="btnStop" class="btn-danger rounded-lg py-3 px-4 text-sm flex items-center justify-center gap-2 opacity-50 cursor-not-allowed" disabled>
493
+ <i class="fa-solid fa-stop text-xs"></i>
494
+ <span>ABORT</span>
495
+ </button>
496
+ </div>
497
+ <button id="btnClear" class="w-full py-2.5 rounded-lg border border-white/[0.06] text-xs font-mono text-void-400 hover:text-white hover:border-white/20 hover:bg-white/5 transition-all flex items-center justify-center gap-2">
498
+ <i class="fa-solid fa-trash-can"></i>
499
+ CLEAR RESULTS
500
+ </button>
501
+ </div>
502
+
503
+ <!-- Terminal / Log -->
504
+ <div class="glass-panel rounded-xl overflow-hidden flex flex-col" style="height: 380px;">
505
+ <div class="px-4 py-2.5 border-b border-white/[0.06] flex items-center justify-between bg-void-950/50">
506
+ <div class="flex items-center gap-2">
507
+ <i class="fa-solid fa-terminal text-void-500 text-xs"></i>
508
+ <span class="text-[11px] font-mono font-bold text-void-400 uppercase">System Log</span>
509
+ </div>
510
+ <div class="flex items-center gap-1.5">
511
+ <span class="w-2.5 h-2.5 rounded-full bg-crimson/20 border border-crimson/40"></span>
512
+ <span class="w-2.5 h-2.5 rounded-full bg-chartreuse/20 border border-chartreuse/40"></span>
513
+ <span class="w-2.5 h-2.5 rounded-full bg-azure/20 border border-azure/40"></span>
514
+ </div>
515
+ </div>
516
+ <div id="logContainer" class="flex-1 overflow-y-auto p-4 font-mono text-xs space-y-1.5 bg-void-950/30">
517
+ <div class="text-void-500 italic">Ready to initialize scan sequence...</div>
518
+ </div>
519
+ </div>
520
+ </aside>
521
+
522
+ <!-- Right Panel: Results -->
523
+ <div class="space-y-5">
524
+
525
+ <!-- Stats Bar -->
526
+ <div class="grid grid-cols-2 md:grid-cols-4 gap-3">
527
+ <div class="glass-panel rounded-xl p-4 relative overflow-hidden">
528
+ <div class="absolute top-0 right-0 p-2 opacity-10">
529
+ <i class="fa-solid fa-globe text-4xl text-azure"></i>
530
+ </div>
531
+ <div class="text-[11px] font-mono text-void-400 uppercase tracking-wider mb-1">URLs Scanned</div>
532
+ <div class="text-2xl font-bold text-white tabular-nums" id="statScanned">0</div>
533
+ <div class="progress-track h-1 mt-3">
534
+ <div class="progress-fill" id="progressBar" style="width: 0%"></div>
535
+ </div>
536
+ </div>
537
+
538
+ <div class="glass-panel rounded-xl p-4 relative overflow-hidden">
539
+ <div class="absolute top-0 right-0 p-2 opacity-10">
540
+ <i class="fa-solid fa-bullseye text-4xl text-chartreuse"></i>
541
+ </div>
542
+ <div class="text-[11px] font-mono text-void-400 uppercase tracking-wider mb-1">Hits Found</div>
543
+ <div class="text-2xl font-bold text-chartreuse tabular-nums" id="statHits">0</div>
544
+ <div class="flex items-center gap-1 mt-2">
545
+ <div class="h-1.5 w-1.5 rounded-full bg-chartreuse animate-pulse"></div>
546
+ <span class="text-[10px] font-mono text-void-500" id="statHitRate">0.0% success rate</span>
547
+ </div>
548
+ </div>
549
+
550
+ <div class="glass-panel rounded-xl p-4 relative overflow-hidden">
551
+ <div class="absolute top-0 right-0 p-2 opacity-10">
552
+ <i class="fa-solid fa-file-lines text-4xl text-void-300"></i>
553
+ </div>
554
+ <div class="text-[11px] font-mono text-void-400 uppercase tracking-wider mb-1">Files Indexed</div>
555
+ <div class="text-2xl font-bold text-white tabular-nums" id="statFiles">0</div>
556
+ <div class="text-[10px] font-mono text-void-500 mt-2" id="statSize">0 B total</div>
557
+ </div>
558
+
559
+ <div class="glass-panel rounded-xl p-4 relative overflow-hidden">
560
+ <div class="absolute top-0 right-0 p-2 opacity-10">
561
+ <i class="fa-solid fa-bug text-4xl text-crimson"></i>
562
+ </div>
563
+ <div class="text-[11px] font-mono text-void-400 uppercase tracking-wider mb-1">Keywords Hit</div>
564
+ <div class="text-2xl font-bold text-crimson tabular-nums" id="statKeywords">0</div>
565
+ <div class="text-[10px] font-mono text-void-500 mt-2">12/24-word phrases</div>
566
+ </div>
567
+ </div>
568
+
569
+ <!-- Active Ticker -->
570
+ <div class="glass-panel rounded-lg overflow-hidden border-l-2 border-azure">
571
+ <div class="ticker-wrap py-2 bg-void-900/40">
572
+ <div class="ticker-content font-mono text-[11px] text-void-400" id="tickerText">
573
+ <span class="mx-6 text-azure"><i class="fa-solid fa-circle text-[6px] mr-2"></i>SCANNER INITIALIZED</span>
574
+ <span class="mx-6 text-void-500">WAITING FOR TARGET</span>
575
+ <span class="mx-6 text-void-500">MODULES: DIRECTORY_INDEXER, KEYWORD_EXTRACTOR, MNEMONIC_FINDER</span>
576
+ <span class="mx-6 text-void-500">DICTIONARY: BIP39 ENGLISH (2048 WORDS)</span>
577
+ <span class="mx-6 text-azure"><i class="fa-solid fa-circle text-[6px] mr-2"></i>SCANNER INITIALIZED</span>
578
+ <span class="mx-6 text-void-500">WAITING FOR TARGET</span>
579
+ <span class="mx-6 text-void-500">MODULES: DIRECTORY_INDEXER, KEYWORD_EXTRACTOR, MNEMONIC_FINDER</span>
580
+ <span class="mx-6 text-void-500">DICTIONARY: BIP39 ENGLISH (2048 WORDS)</span>
581
+ </div>
582
+ </div>
583
+ </div>
584
+
585
+ <!-- Results Grid -->
586
+ <div class="space-y-4" id="resultsArea">
587
+ <!-- Empty State -->
588
+ <div id="emptyState" class="glass-panel rounded-xl p-16 text-center border-dashed border-2 border-white/[0.04]">
589
+ <div class="w-20 h-20 mx-auto mb-6 rounded-full bg-void-800 border border-white/[0.06] flex items-center justify-center">
590
+ <i class="fa-solid fa-magnifying-glass text-3xl text-void-600"></i>
591
+ </div>
592
+ <h3 class="text-lg font-bold text-void-300 mb-2">No Data</h3>
593
+ <p class="text-sm text-void-500 max-w-sm mx-auto">Configure a target URL and initiate the scan sequence to begin directory reconnaissance and keyword extraction.</p>
594
+ </div>
595
+ </div>
596
+ </div>
597
+ </main>
598
+
599
+ <!-- Preview Modal -->
600
+ <div id="previewModal" class="preview-modal" onclick="if(event.target === this) closePreview()">
601
+ <div class="preview-modal-content w-full max-w-3xl mx-4">
602
+ <div class="glass-panel rounded-xl overflow-hidden shadow-2xl border border-azure/20">
603
+ <div class="px-5 py-3 border-b border-white/[0.06] flex items-center justify-between bg-void-900/80">
604
+ <div class="flex items-center gap-3">
605
+ <i class="fa-solid fa-file-code text-azure"></i>
606
+ <span class="font-mono text-sm text-white" id="previewFilename">document.txt</span>
607
+ </div>
608
+ <button onclick="closePreview()" class="w-8 h-8 rounded-lg hover:bg-white/10 flex items-center justify-center transition-colors text-void-400 hover:text-white">
609
+ <i class="fa-solid fa-xmark"></i>
610
+ </button>
611
+ </div>
612
+ <div class="p-5 bg-void-950/60 overflow-y-auto max-h-[60vh]">
613
+ <pre class="font-mono text-sm text-void-300 leading-relaxed whitespace-pre-wrap" id="previewContent"></pre>
614
+ </div>
615
+ <div class="px-5 py-3 border-t border-white/[0.06] bg-void-900/50 flex items-center justify-between">
616
+ <span class="text-[11px] font-mono text-void-500" id="previewMeta">128 KB | text/plain</span>
617
+ <button class="text-xs font-mono text-azure hover:text-azure-glow transition-colors flex items-center gap-2">
618
+ <i class="fa-solid fa-download"></i>
619
+ DOWNLOAD
620
+ </button>
621
+ </div>
622
+ </div>
623
+ </div>
624
+ </div>
625
+
626
+ <!-- Footer -->
627
+ <footer class="mt-12 border-t border-white/[0.04] py-6">
628
+ <div class="max-w-[1600px] mx-auto px-4 flex flex-col md:flex-row items-center justify-between gap-4">
629
+ <div class="flex items-center gap-4 text-[11px] text-void-500 font-mono">
630
+ <span>OSINT HOUND v2.4.1</span>
631
+ <span class="text-void-700">|</span>
632
+ <span>Python 3.11 Engine</span>
633
+ <span class="text-void-700">|</span>
634
+ <span class="text-chartreuse">SECURE CONNECTION</span>
635
+ </div>
636
+ <div class="text-[11px] text-void-600 font-mono">
637
+ Built with <a href="https://huggingface.co/spaces/akhaliq/anycoder" class="text-azure hover:underline">anycoder</a>
638
+ </div>
639
+ </div>
640
+ </footer>
641
+
642
+ <script>
643
+ // ====== DATA & UTILITIES ======
644
+
645
+ const BIP39 = [
646
+ "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse","access","accident",
647
+ "account","accuse","achieve","acid","acoustic","acquire","across","act","action","actor","actress","actual",
648
+ "adapt","add","addict","address","adjust","admit","adult","advance","advice","aerobic","affair","afford",
649
+ "afraid","again","age","agent","agree","ahead","aim","air","airport","aisle","alarm","album","alcohol",
650
+ "alert","alien","all","alley","allow","almost","alone","alpha","already","also","alter","always","amateur",
651
+ "amazing","among","amount","amused","analyst","anchor","ancient","anger","angle","angry","animal","ankle",
652
+ "announce","annual","another","answer","antenna","antique","anxiety","any","apart","apology","appear","apple",
653
+ "approve","april","arch","arctic","area","arena","argue","arm","armed","armor","army","around","arrange",
654
+ "arrest","arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset","assist",
655
+ "assume","asthma","athlete","atom","attack","attend","attitude","attract","auction","audit","august","aunt",
656
+ "author","auto","autumn","average","avocado","avoid","awake","aware","away","awesome","awful","awkward",
657
+ "axis","baby","bachelor","bacon","badge","bag","balance","balcony","ball","bamboo","banana","banner","bar",
658
+ "barely","bargain","barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
659
+ "beef","before","begin","behave","behind","believe","below","belt","bench","benefit","best","betray",
660
+ "better","between","beyond","bicycle","bid","bike","bind","biology","bird","birth","bitter","black",
661
+ "blade","blame","blanket","blast","bleak","bless","blind","blood","blossom","blouse","blue","blur","blush",
662
+ "board","boat","body","boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
663
+ "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread","breeze","brick","bridge",
664
+ "brief","bright","bring","brisk","broccoli","broken","bronze","broom","brother","brown","brush","bubble",
665
+ "buddy","budget","buffalo","build","bulb","bulk","bullet","bundle","bunker","burden","burger","burst",
666
+ "bus","business","busy","butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
667
+ "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas","canyon","capable",
668
+ "capital","captain","car","carbon","card","cargo","carpet","carry","cart","case","cash","casino",
669
+ "castle","casual","cat","catalog","catch","category","cattle","caught","cause","caution","cave","ceiling",
670
+ "celery","cement","census","century","cereal","certain","chair","chalk","champion","change","chaos",
671
+ "chapter","charge","chase","chat","cheap","check","cheese","chef","cherry","chest","chicken","chief",
672
+ "child","chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
673
+ "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk","clever","click","client",
674
+ "cliff","climb","clinic","clip","clock","clog","close","cloth","cloud","clown","club","clump","cluster",
675
+ "clutch","coach","coast","coconut","code","coffee","coil","coin","collect","color","column","combine",
676
+ "come","comfort","comic","common","company","concert","conduct","confirm","congress","connect","consider",
677
+ "control","convince","cook","cool","copper","copy","coral","core","corn","correct","cost","cotton",
678
+ "couch","could","council","count","country","couple","course","cousin","cover","coyote","crack","cradle",
679
+ "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek","crew","cricket","crime",
680
+ "crisp","critic","crop","cross","crouch","crowd","crucial","cruel","cruise","crumble","crunch","crush",
681
+ "cry","crystal","cube","culture","cup","cupboard","curious","current","curtain","curve","cushion","custom",
682
+ "cute","cycle","dad","damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
683
+ "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense","define",
684
+ "defy","degree","delay","deliver","demand","demise","denial","dentist","deny","depart","depend","deposit",
685
+ "depth","deputy","derive","describe","desert","design","desk","despair","destroy","detail","detect",
686
+ "develop","device","devote","diagram","dial","diamond","diary","dice","diesel","diet","differ","digital",
687
+ "dignity","dilemma","dinner","dinosaur","direct","dirt","disagree","discover","disease","dish","dismiss",
688
+ "disorder","display","distance","divert","divide","divorce","dizzy","doctor","document","dog","doll",
689
+ "dolphin","domain","donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
690
+ "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop","drum","dry","duck",
691
+ "dumb","dune","during","dust","dutch","duty","dwarf","dynamic","eager","eagle","early","earn","earth",
692
+ "easily","east","easy","echo","ecology","economy","edge","edit","educate","effort","egg","eight","either",
693
+ "elbow","elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
694
+ "embrace","emerge","emotion","employ","empty","enable","enact","end","endless","enemy","energy","enforce",
695
+ "engage","engine","enhance","enjoy","enlist","enough","enrich","enroll","ensure","enter","entire",
696
+ "entry","envelope","episode","equal","equip","era","erase","erode","erosion","error","erupt","escape",
697
+ "essay","estate","eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess",
698
+ "exchange","excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
699
+ "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye","eyebrow","fabric",
700
+ "face","faculty","fade","faint","faith","fall","false","fame","family","famous","fan","fancy","fantasy",
701
+ "farm","fashion","fat","fatal","father","fatigue","fault","favorite","feature","february","federal","fee",
702
+ "feed","feel","female","fence","festival","fetch","fever","few","fiber","fiction","field","figure",
703
+ "file","film","filter","final","find","fine","finger","finish","fire","firm","first","fiscal","fish",
704
+ "fit","fitness","fix","flag","flame","flash","flat","flavor","flee","flight","flip","float","flock",
705
+ "floor","flower","fluid","flush","fly","foam","