FastAPI + Kali tools UI for authorized scans of levkin.ca / LAN targets. Gitignore local data/.env; add pytest + gitleaks CI.
111 lines
4.4 KiB
HTML
111 lines
4.4 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>TALOS</title>
|
|
<link rel="icon" href="/static/favicon.svg" type="image/svg+xml" />
|
|
<link rel="apple-touch-icon" href="/static/favicon.svg" />
|
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet" />
|
|
<link rel="stylesheet" href="/static/styles.css" />
|
|
</head>
|
|
<body class="talos-body">
|
|
<header class="header-bar">
|
|
<div class="brand">
|
|
<img src="/static/favicon.svg" alt="" class="brand-icon" width="28" height="28" />
|
|
<div class="logo">TALOS</div>
|
|
</div>
|
|
<div class="health-badges">
|
|
<span id="ollama-badge" class="badge">Ollama: …</span>
|
|
<span id="tools-badge" class="badge">Tools: …</span>
|
|
</div>
|
|
</header>
|
|
<div class="layout">
|
|
<aside class="sidebar">
|
|
<section class="panel">
|
|
<h2>New scan</h2>
|
|
|
|
<div class="scan-mode" role="tablist" aria-label="Scan mode">
|
|
<button type="button" id="mode-single" class="mode-btn active" data-mode="single">Single</button>
|
|
<button type="button" id="mode-bulk" class="mode-btn" data-mode="bulk">Bulk</button>
|
|
</div>
|
|
|
|
<div id="single-target" class="target-panel">
|
|
<label for="target">Target</label>
|
|
<input id="target" type="text" placeholder="IP, hostname, or URL" />
|
|
</div>
|
|
|
|
<div id="bulk-target" class="target-panel hidden">
|
|
<div class="bulk-label-row">
|
|
<label for="targets-bulk">Targets</label>
|
|
<span id="bulk-count" class="bulk-count">0 targets</span>
|
|
</div>
|
|
<textarea
|
|
id="targets-bulk"
|
|
rows="7"
|
|
spellcheck="false"
|
|
placeholder="example.com https://app.example.com 1.2.3.4 # lines starting with # are ignored"
|
|
></textarea>
|
|
<p class="bulk-hint">One target per line. Blank lines and <code>#</code> comments are ignored.</p>
|
|
</div>
|
|
|
|
<label for="profile">Profile</label>
|
|
<select id="profile">
|
|
<option value="passive">Passive Recon</option>
|
|
<option value="standard" selected>Standard Pentest</option>
|
|
<option value="redteam">Full Red Team</option>
|
|
</select>
|
|
<label class="checkbox-row">
|
|
<input type="checkbox" id="opt-web" checked /> Web tools
|
|
</label>
|
|
<label class="checkbox-row">
|
|
<input type="checkbox" id="opt-ssl" checked /> SSL (testssl)
|
|
</label>
|
|
<label class="checkbox-row">
|
|
<input type="checkbox" id="opt-brute" /> SSH brute (red team)
|
|
</label>
|
|
<label class="auth-row">
|
|
<input type="checkbox" id="authorized" />
|
|
I confirm I own this target or have written authorization to test it. Unauthorized testing is a crime.
|
|
</label>
|
|
<button id="launch" class="btn-launch" disabled>Launch scan</button>
|
|
</section>
|
|
<section class="panel recent">
|
|
<h2>Recent scans</h2>
|
|
<ul id="recent-list"></ul>
|
|
</section>
|
|
</aside>
|
|
<main class="main">
|
|
<div class="console-wrap panel">
|
|
<div class="console-header">
|
|
<span>Live Console</span>
|
|
<label class="checkbox-row"><input type="checkbox" id="pause-scroll" /> Pause autoscroll</label>
|
|
</div>
|
|
<pre id="console" class="console"><span class="prompt">talos@scan:~$</span> waiting…</pre>
|
|
</div>
|
|
<div class="panel">
|
|
<h2>Phases</h2>
|
|
<ul id="phases" class="phases-list"></ul>
|
|
</div>
|
|
<div class="panel">
|
|
<h2>Findings</h2>
|
|
<div id="severity-tabs" class="severity-tabs"></div>
|
|
<div id="findings"></div>
|
|
</div>
|
|
<div id="bulk-progress" class="bulk-progress hidden">
|
|
<span id="bulk-progress-text">Bulk: —</span>
|
|
</div>
|
|
<div class="actions">
|
|
<button id="export-md" class="btn-secondary" disabled>Export MD</button>
|
|
<button id="export-json" class="btn-secondary" disabled>Export JSON</button>
|
|
<button id="export-cursor" class="btn-secondary hidden" disabled>Export for Cursor</button>
|
|
<button id="cancel" class="btn-danger" disabled>Cancel</button>
|
|
<button id="clear" class="btn-secondary">Clear</button>
|
|
</div>
|
|
</main>
|
|
</div>
|
|
<script src="/static/app.js"></script>
|
|
</body>
|
|
</html>
|