|
| 1 | +<!DOCTYPE html> |
| 2 | +<html lang="en" data-theme="dark"> |
| 3 | +<head> |
| 4 | +<meta charset="UTF-8"> |
| 5 | +<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | +<title>APK Auditor v2 — AutoAR Enhanced</title> |
| 7 | +<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; connect-src 'self'; font-src 'self'; frame-ancestors 'self';"> |
| 8 | +<link rel="icon" type="image/svg+xml" href="../icons/icon-192.svg"> |
| 9 | +<link rel="stylesheet" href="src/styles.css"> |
| 10 | +</head> |
| 11 | +<body> |
| 12 | + |
| 13 | +<!-- LOADING OVERLAY --> |
| 14 | +<div id="loadingOverlay" class="loading-overlay" style="display:none"> |
| 15 | + <div class="loading-card"> |
| 16 | + <div class="loading-spinner"></div> |
| 17 | + <div class="loading-file" id="loadingFile"></div> |
| 18 | + <div class="loading-bar"><div class="loading-fill" id="loadingFill"></div></div> |
| 19 | + <div class="loading-text" id="loadingText">Preparing…</div> |
| 20 | + </div> |
| 21 | +</div> |
| 22 | + |
| 23 | +<!-- TOAST --> |
| 24 | +<div id="toastContainer" class="toast-container"></div> |
| 25 | + |
| 26 | +<!-- LANDING --> |
| 27 | +<section id="landing" class="landing"> |
| 28 | + <div class="hero-bg"> |
| 29 | + <div class="mesh"></div> |
| 30 | + <div class="orb orb-1"></div> |
| 31 | + <div class="orb orb-2"></div> |
| 32 | + <div class="orb orb-3"></div> |
| 33 | + </div> |
| 34 | + <div class="hero-content"> |
| 35 | + <div class="badge-row"> |
| 36 | + <span class="ver-badge">v2.0 — AutoAR Enhanced</span> |
| 37 | + </div> |
| 38 | + <h1 class="hero-title">APK <span class="grad">Auditor</span></h1> |
| 39 | + <p class="hero-sub">Drop an APK to scan for security issues — hardcoded secrets, weak crypto, exported components, manifest misconfigs, and more.</p> |
| 40 | + <div class="dropzone" id="dropZone"> |
| 41 | + <div class="dz-icon"> |
| 42 | + <svg width="48" height="48" viewBox="0 0 48 48" fill="none"><rect x="18" y="8" width="12" height="28" rx="2" fill="currentColor" opacity="0.15"/><rect x="12" y="18" width="24" height="16" rx="2" fill="currentColor" opacity="0.3"/><path d="M24 4v16m-6-6 6-6 6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg> |
| 43 | + </div> |
| 44 | + <div class="dz-text"> |
| 45 | + <span class="dz-title">Drop APK file here</span> |
| 46 | + <span class="dz-sub">or click to browse</span> |
| 47 | + </div> |
| 48 | + <input type="file" id="fileInput" accept=".apk" hidden> |
| 49 | + </div> |
| 50 | + <div class="feature-row"> |
| 51 | + <div class="feature-pill">🔍 Pattern rules</div> |
| 52 | + <div class="feature-pill">📱 Manifest parser</div> |
| 53 | + <div class="feature-pill">🔐 Cert analysis</div> |
| 54 | + <div class="feature-pill">🔑 Secret detection</div> |
| 55 | + </div> |
| 56 | + </div> |
| 57 | +</section> |
| 58 | + |
| 59 | +<!-- APP --> |
| 60 | +<div id="appContainer" style="display:none"> |
| 61 | + <header id="appHeader"> |
| 62 | + <div class="header-left"><span class="app-logo">APK Auditor</span></div> |
| 63 | + <div class="header-center"> |
| 64 | + <nav id="tabNav"> |
| 65 | + <button class="tab-btn active" data-tab="overview">Overview</button> |
| 66 | + <button class="tab-btn" data-tab="findings">Findings</button> |
| 67 | + <button class="tab-btn" data-tab="manifest">Manifest</button> |
| 68 | + <button class="tab-btn" data-tab="components">Components</button> |
| 69 | + <button class="tab-btn" data-tab="cert">Cert</button> |
| 70 | + <button class="tab-btn" data-tab="explorer">Explorer</button> |
| 71 | + </nav> |
| 72 | + </div> |
| 73 | + <div class="header-right"> |
| 74 | + <button class="icon-btn" id="btnTheme" title="Toggle theme">🌓</button> |
| 75 | + <div class="export-dropdown"> |
| 76 | + <button class="btn btn-export" id="btnExport">Export ▾</button> |
| 77 | + <div class="export-menu" id="exportMenu"> |
| 78 | + <button data-format="pdf">📄 PDF Report</button> |
| 79 | + <button data-format="json">📋 JSON</button> |
| 80 | + <button data-format="csv">📊 CSV</button> |
| 81 | + <button data-format="sarif">🛡️ SARIF 2.1</button> |
| 82 | + </div> |
| 83 | + </div> |
| 84 | + </div> |
| 85 | + </header> |
| 86 | + <main id="appMain"> |
| 87 | + <div id="panel-overview" class="tab-panel active"></div> |
| 88 | + <div id="panel-findings" class="tab-panel"></div> |
| 89 | + <div id="panel-manifest" class="tab-panel"></div> |
| 90 | + <div id="panel-components" class="tab-panel"></div> |
| 91 | + <div id="panel-cert" class="tab-panel"></div> |
| 92 | + <div id="panel-explorer" class="tab-panel"></div> |
| 93 | + </main> |
| 94 | +</div> |
| 95 | + |
| 96 | +<script src="lib/jszip.min.js"></script> |
| 97 | +<script src="lib/jspdf.umd.min.js"></script> |
| 98 | +<script src="src/core/engine.js"></script> |
| 99 | +<script src="src/core/entropy.js"></script> |
| 100 | +<script src="src/core/export.js"></script> |
| 101 | +<script src="src/core/pdf.js"></script> |
| 102 | +<script src="src/main.js"></script> |
| 103 | +</body> |
| 104 | +</html> |
0 commit comments