Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ jobs:
html_files = [
root / 'index.html',
root / '404.html',
root / 'passive-scanner' / 'index.html',
root / 'online-passive-scanner' / 'index.html',
root / 'online-passive-scanner' / 'report.html',
]
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ jobs:
html_files = [
Path('index.html'),
Path('404.html'),
Path('passive-scanner/index.html'),
Path('online-passive-scanner/index.html'),
Path('online-passive-scanner/report.html'),
]
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,7 @@ See `/docs/PASSIVE_SCANNER_SOURCE.md` for the integration contract.
The scanner is vendored at `/online-passive-scanner/` and is accessible at:

- `/online-passive-scanner/`

A Jekyll-native launcher page is available at:

- `/passive-scanner/`
4 changes: 2 additions & 2 deletions _includes/header.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<header class="section-container pt-10"><nav class="flex items-center justify-between rounded-full border border-slate-200 bg-white/80 px-6 py-4 shadow-card backdrop-blur"><a class="flex items-center gap-3" href="/"><span class="flex h-10 w-10 items-center justify-center rounded-full border border-slate-200 bg-white text-sm font-semibold text-slate-900">OW</span><span class="hidden text-sm font-medium tracking-wide text-slate-600 sm:inline">Offensive Web Testing Framework</span></a><div class="hidden items-center gap-8 text-sm text-slate-600 md:flex">
<a href="#overview" class="transition hover:text-slate-900">Overview</a><a href="#capabilities" class="transition hover:text-slate-900">Capabilities</a><a href="#standards" class="transition hover:text-slate-900">Standards</a><a href="https://owtf.readthedocs.io/en/develop/" class="transition hover:text-slate-900">Docs</a>
<a href="#overview" class="transition hover:text-slate-900">Overview</a><a href="#capabilities" class="transition hover:text-slate-900">Capabilities</a><a href="#standards" class="transition hover:text-slate-900">Standards</a><a href="/passive-scanner/" class="transition hover:text-slate-900">Passive Scanner</a><a href="https://owtf.readthedocs.io/en/develop/" class="transition hover:text-slate-900">Docs</a>
</div>
<div class="flex items-center gap-3">
<a href="https://github.com/owtf/owtf" class="hidden rounded-full border border-slate-200 px-4 py-2 text-xs font-semibold text-slate-700 transition hover:border-slate-300 hover:text-slate-900 lg:inline-flex">View GitHub</a><a href="https://github.com/owtf/owtf/releases" class="inline-flex items-center gap-2 rounded-full bg-slate-900 px-4 py-2 text-xs font-semibold text-white transition hover:bg-slate-700">Get OWTF<span class="text-base leading-none">&rarr;</span></a>
<a href="https://github.com/owtf/owtf" class="hidden rounded-full border border-slate-200 px-4 py-2 text-xs font-semibold text-slate-700 transition hover:border-slate-300 hover:text-slate-900 lg:inline-flex">View GitHub</a><a href="/passive-scanner/" class="hidden rounded-full border border-slate-200 px-4 py-2 text-xs font-semibold text-slate-700 transition hover:border-slate-300 hover:text-slate-900 lg:inline-flex">Run Passive Scan</a><a href="https://github.com/owtf/owtf/releases" class="inline-flex items-center gap-2 rounded-full bg-slate-900 px-4 py-2 text-xs font-semibold text-white transition hover:bg-slate-700">Get OWTF<span class="text-base leading-none">&rarr;</span></a>
</div></nav></header>
65 changes: 65 additions & 0 deletions passive-scanner/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
layout: default
title: "OWTF Passive Scanner"
description: "Run the OWTF online passive scanner from a Jekyll-native page."
---
<div class="pointer-events-none absolute inset-x-0 top-0 -z-10 h-[420px] bg-gradient-to-b from-slate-100 via-white to-white"></div>
<div class="relative flex min-h-screen flex-col">
{% include header.html %}
<main class="space-y-32 pb-16">
<section class="section-container pb-24 pt-24">
<div class="max-w-3xl space-y-6">
<p class="text-xs font-semibold uppercase tracking-[0.4em] text-slate-500">Passive scanner</p>
<h1 class="text-4xl font-semibold tracking-tight text-slate-900 sm:text-5xl">Scan a target URL</h1>
<p class="text-lg leading-relaxed text-slate-600">This Jekyll page launches OWTF's upstream online passive scanner and opens its report view for the URL you provide.</p>
</div>

<div class="mt-12 rounded-3xl border border-slate-200 bg-white p-8 shadow-card">
<label for="target-url" class="text-sm font-semibold text-slate-900">Target URL</label>
<input id="target-url" type="url" placeholder="https://www.example.com" class="mt-3 block rounded-2xl border border-slate-200 bg-white p-5 text-sm text-slate-900" style="width:100%" />
<p id="scanner-error" class="mt-2 text-sm text-slate-600" style="display:none"></p>
<div class="mt-6 flex flex-col gap-4 sm:flex-row sm:items-center">
<button id="run-passive-scan" class="inline-flex items-center justify-center gap-2 rounded-full bg-slate-900 px-6 py-3 text-sm font-semibold text-white transition hover:bg-slate-700">Open passive report<span class="text-lg leading-none">&rarr;</span></button>
<a href="/online-passive-scanner/" class="inline-flex items-center justify-center gap-2 rounded-full border border-slate-200 px-6 py-3 text-sm font-semibold text-slate-700 transition hover:border-slate-300 hover:text-slate-900">Open legacy scanner UI</a>
</div>
</div>
</section>
</main>
{% include footer.html %}
</div>
<script>
(function () {
var button = document.getElementById('run-passive-scan');
var input = document.getElementById('target-url');
var error = document.getElementById('scanner-error');

function showError(message) {
error.textContent = message;
error.style.display = 'block';
}

function clearError() {
error.textContent = '';
error.style.display = 'none';
}

button.addEventListener('click', function () {
clearError();
var value = (input.value || '').trim();
if (!value) {
showError('Please enter a URL to continue.');
input.focus();
return;
}

try {
var parsed = new URL(value);
var destination = '/online-passive-scanner/report.html#q=' + encodeURIComponent(parsed.href);
window.location.assign(destination);
} catch (err) {
showError('The value provided is not a valid URL.');
input.focus();
}
});
})();
</script>