|
| 1 | +<!DOCTYPE html> |
| 2 | +<html lang="en"> |
| 3 | +<head> |
| 4 | +<meta charset="utf-8" /> |
| 5 | +<title>ShadowMap – Premium Documentation</title> |
| 6 | +<meta name="viewport" content="width=device-width, initial-scale=1" /> |
| 7 | + |
| 8 | +<!-- Google Fonts --> |
| 9 | +<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&family=Inter:wght@400;500&display=swap" rel="stylesheet" /> |
| 10 | + |
| 11 | +<!-- Prism tomorrow-night theme for dark code blocks --> |
| 12 | +<link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css" rel="stylesheet" /> |
| 13 | + |
| 14 | +<style> |
| 15 | +:root{ |
| 16 | + --bg:#121212; |
| 17 | + --surface:#1e1e1e; |
| 18 | + --accent:#c9b037; /* muted gold */ |
| 19 | + --text:#f2f2f2; |
| 20 | + --subtle:#888; |
| 21 | +} |
| 22 | +* {box-sizing:border-box;margin:0;padding:0} |
| 23 | +body{ |
| 24 | + font-family:'Inter',system-ui,sans-serif; |
| 25 | + font-size:15px; |
| 26 | + line-height:1.6; |
| 27 | + background:var(--bg); |
| 28 | + color:var(--text); |
| 29 | + scroll-behavior:smooth; |
| 30 | +} |
| 31 | +header{ |
| 32 | + position:sticky; |
| 33 | + top:0; |
| 34 | + z-index:10; |
| 35 | + background:rgba(30,30,30,.9); |
| 36 | + backdrop-filter:blur(6px); |
| 37 | + border-bottom:1px solid #333; |
| 38 | +} |
| 39 | +nav{ |
| 40 | + display:flex; |
| 41 | + gap:1.2rem; |
| 42 | + padding:.8rem 1.2rem; |
| 43 | + overflow-x:auto; |
| 44 | +} |
| 45 | +nav a{ |
| 46 | + color:var(--text); |
| 47 | + text-decoration:none; |
| 48 | + white-space:nowrap; |
| 49 | + font-weight:500; |
| 50 | + padding:.3rem .6rem; |
| 51 | + border-radius:4px; |
| 52 | + transition:background .2s; |
| 53 | +} |
| 54 | +nav a:hover,nav a.active{background:var(--accent);color:#000} |
| 55 | +main{max-width:900px;margin:auto;padding:2rem 1rem 4rem} |
| 56 | +section{margin-bottom:3rem} |
| 57 | +h1,h2{font-family:'Montserrat',sans-serif;font-weight:700;color:var(--accent)} |
| 58 | +h1{font-size:2.2rem;margin-bottom:.5rem} |
| 59 | +h2{font-size:1.6rem;margin:2rem 0 .8rem} |
| 60 | +p,li{margin-bottom:.7rem} |
| 61 | +ul{padding-left:1.2rem} |
| 62 | +code,pre{ |
| 63 | + font-family:'Consolas','Courier New',monospace; |
| 64 | + font-size:.9rem; |
| 65 | +} |
| 66 | +pre{ |
| 67 | + background:#1e1e1e !important; |
| 68 | + padding:1rem; |
| 69 | + border-radius:6px; |
| 70 | + overflow-x:auto; |
| 71 | + border:1px solid #333; |
| 72 | +} |
| 73 | +.callout{ |
| 74 | + display:inline-flex;align-items:center;gap:.4rem; |
| 75 | + font-weight:600; |
| 76 | + margin-right:.8rem; |
| 77 | +} |
| 78 | +</style> |
| 79 | +</head> |
| 80 | +<body> |
| 81 | + |
| 82 | +<header> |
| 83 | + <nav id="nav"></nav> |
| 84 | +</header> |
| 85 | + |
| 86 | +<main id="main"></main> |
| 87 | + |
| 88 | +<!-- Prism core + Rust language --> |
| 89 | +<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"></script> |
| 90 | +<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-rust.min.js"></script> |
| 91 | +<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-bash.min.js"></script> |
| 92 | + |
| 93 | +<script> |
| 94 | +/* ---------- DATA ---------- */ |
| 95 | +const sections=[ |
| 96 | +{title:"Overview",emoji:"⚡",content:` |
| 97 | +ShadowMap is a Rust toolkit for: |
| 98 | +<ul> |
| 99 | + <li>Mapping exposed assets</li> |
| 100 | + <li>Confirming risky services</li> |
| 101 | + <li>Exporting clear reconnaissance results</li> |
| 102 | +</ul> |
| 103 | +<p><strong>Key Value:</strong> Combines technical asset discovery with compliance-ready reporting and automated workflows.</p> |
| 104 | +`}, |
| 105 | +{title:"Quick Start",emoji:"⚡",content:` |
| 106 | +<h3>Requirements</h3> |
| 107 | +<p>Rust 1.70+ (with Cargo)</p> |
| 108 | +<h3>Build</h3> |
| 109 | +<pre><code class="language-bash">git clone https://github.com/YOUR-ORG/ShadowMap.git |
| 110 | +cd ShadowMap |
| 111 | +cargo build --release</code></pre> |
| 112 | +<h3>Run First Scan</h3> |
| 113 | +<pre><code class="language-bash">./target/release/shadowmap -d example.com -o results.csv</code></pre> |
| 114 | +<h3>Routine Quality Checks</h3> |
| 115 | +<pre><code class="language-bash">cargo fmt --all |
| 116 | +cargo clippy --workspace --all-targets -- -D warnings |
| 117 | +cargo test --workspace</code></pre> |
| 118 | +`}, |
| 119 | +{title:"Landing Page & Checkout",emoji:"🖥️",content:` |
| 120 | +<ul> |
| 121 | + <li>Minimalist, luxury-inspired design</li> |
| 122 | + <li>Dynamic Rust server rendering with localized pricing</li> |
| 123 | + <li>Optional Stripe checkout integration</li> |
| 124 | + <li>Static export ready for Vercel hosting: <code>landing-page/index.html</code></li> |
| 125 | +</ul> |
| 126 | +`}, |
| 127 | +{title:"Profiling & Benchmarking",emoji:"⚡",content:` |
| 128 | +<p>Run Hotpath benchmark locally:</p> |
| 129 | +<pre><code class="language-bash">cargo run --example benchmark --features='hotpath,hotpath-ci'</code></pre> |
| 130 | +<p>Optional allocation metrics:</p> |
| 131 | +<pre><code class="language-bash">cargo run --example benchmark --features='hotpath,hotpath-ci,hotpath-alloc-count-total'</code></pre> |
| 132 | +`}, |
| 133 | +{title:"SLSA-Ready Secure Release Flow",emoji:"🔒",content:` |
| 134 | +<ol> |
| 135 | + <li><strong>Signed Commits & Tags</strong> – Annotated tags trigger the slsa-release workflow.</li> |
| 136 | + <li><strong>Primary Hermetic Build</strong> – Locked dependencies, no network, compile binaries, SBOM + checksum.</li> |
| 137 | + <li><strong>Independent Rebuild</strong> – Generate a second checksum.</li> |
| 138 | + <li><strong>Determinism Check</strong> – Compare manifests; failure stops the release.</li> |
| 139 | + <li><strong>Provenance Generation</strong> – DSSE attestation records workflow and artifact digests.</li> |
| 140 | + <li><strong>Keyless Signing & Publishing</strong> – Cosign OIDC credentials; bundle binaries, SBOM, and signature.</li> |
| 141 | + <li><strong>Consumer Verification</strong> – <code>./scripts/verify_release.sh</code> validates signature, checksum, SBOM, and provenance.</li> |
| 142 | +</ol> |
| 143 | +<p>Full documentation: <code>docs/security/slsa-ready-pipeline.md</code></p> |
| 144 | +`}, |
| 145 | +{title:"Day-to-Day SBOM & CI Gating",emoji:"🔒",content:` |
| 146 | +Primary hermetic build → Independent rebuild → Determinism check → Provenance generation → Signing & publish<br> |
| 147 | +Lightweight local scans supported for quick verification |
| 148 | +`}, |
| 149 | +{title:"Verification",emoji:"🔒",content:` |
| 150 | +<pre><code class="language-bash">./scripts/verify_release.sh shadowmap-vX.Y.Z.tar.gz</code></pre> |
| 151 | +<p>Checks signature, provenance, checksum, and SBOM<br> |
| 152 | +Automation-friendly: exits non-zero on failure</p> |
| 153 | +<p>Optional repeatability scan:</p> |
| 154 | +<pre><code class="language-bash">./scripts/security-scan.sh</code></pre> |
| 155 | +`}, |
| 156 | +{title:"Data Security & Compliance",emoji:"🔒",content:` |
| 157 | +<ul> |
| 158 | + <li>SOC 2 Trust Services Criteria alignment</li> |
| 159 | + <li>GDPR-compliant handling of reconnaissance data</li> |
| 160 | + <li>Control owners and evidence tracking documented in <code>docs/data-security.md</code></li> |
| 161 | +</ul> |
| 162 | +`}, |
| 163 | +{title:"Social Intelligence Automation",emoji:"📄",content:` |
| 164 | +<ul> |
| 165 | + <li>Native integration with Codex agent</li> |
| 166 | + <li>Correlates social chatter with assets</li> |
| 167 | + <li>Generates normalized signals, alerts, and dashboards</li> |
| 168 | +</ul> |
| 169 | +<p>Override via:</p> |
| 170 | +<pre><code class="language-bash">SHADOWMAP_SOCIAL_CONFIG=/path/to/framework.yaml</code></pre> |
| 171 | +`}, |
| 172 | +{title:"Technical Report Automation",emoji:"📄",content:` |
| 173 | +<pre><code class="language-bash">./scripts/generate-technical-report.sh</code></pre> |
| 174 | +<p>Outputs <code>build/technical-report.md</code><br> |
| 175 | +CI pipeline generates PDF via Pandoc</p> |
| 176 | +`}, |
| 177 | +{title:"Application Governance & Resilience",emoji:"📄",content:` |
| 178 | +<ul> |
| 179 | + <li>Detect unapproved apps, fragmented data flows, silent failures</li> |
| 180 | + <li>Integrate with CMDBs, observability, and data lineage tools</li> |
| 181 | + <li>Guide: <code>docs/app-governance-integration.md</code></li> |
| 182 | +</ul> |
| 183 | +`}, |
| 184 | +{title:"Organizational Adoption",emoji:"📄",content:` |
| 185 | +<ul> |
| 186 | + <li>Rollout across enterprise security programs</li> |
| 187 | + <li>Governance structure and business metrics</li> |
| 188 | + <li>Playbook: <code>docs/org-adaptation.md</code></li> |
| 189 | +</ul> |
| 190 | +`}, |
| 191 | +{title:"Automated Security Workflow",emoji:"🔒",content:` |
| 192 | +<p>GitHub Action: <code>.github/workflows/security-scan.yml</code></p> |
| 193 | +<ul> |
| 194 | + <li>Installs cargo-cyclonedx & grype</li> |
| 195 | + <li>Generates SBOM (<code>shadowmap-bom.json</code>)</li> |
| 196 | + <li>Scans for vulnerabilities and uploads JSON reports</li> |
| 197 | + <li>Runs on PRs, main branch, or manually</li> |
| 198 | +</ul> |
| 199 | +`}, |
| 200 | +{title:"Desktop GUI (Optional)",emoji:"🖥️",content:` |
| 201 | +<pre><code class="language-bash">cargo run --features gui --bin shadowmap-gui</code></pre> |
| 202 | +<p>Enter domain → Run Scan → Output directory shows results<br> |
| 203 | +Fully Rust-powered via iced</p> |
| 204 | +`}, |
| 205 | +{title:"Slint Dashboard (Experimental)",emoji:"🖥️",content:` |
| 206 | +<pre><code class="language-bash">cargo run --features dashboard --bin shadowmap-dashboard</code></pre> |
| 207 | +<p>Launch scans, monitor live status<br> |
| 208 | +Visualize subdomain activity and alert categories</p> |
| 209 | +`}, |
| 210 | +{title:"Additional Documentation",emoji:"📄",content:` |
| 211 | +<ul> |
| 212 | + <li><code>docs/data-security.md</code> – Data security & compliance notes</li> |
| 213 | + <li><code>docs/app-governance-integration.md</code> – Governance workflow integration</li> |
| 214 | + <li><code>docs/security/slsa-whitepaper.md</code> – Executive SLSA overview</li> |
| 215 | + <li><code>docs/org-adaptation.md</code> – Enterprise rollout guide</li> |
| 216 | + <li><code>landing-page/</code> – Static marketing & Vercel deployment metadata</li> |
| 217 | +</ul> |
| 218 | +`} |
| 219 | +]; |
| 220 | + |
| 221 | +/* ---------- RENDER ---------- */ |
| 222 | +const nav=document.getElementById('nav'); |
| 223 | +const main=document.getElementById('main'); |
| 224 | + |
| 225 | +sections.forEach((s,i)=>{ |
| 226 | + const id='sec'+i; |
| 227 | + nav.insertAdjacentHTML('beforeend',`<a href="#${id}">${s.emoji} ${s.title}</a>`); |
| 228 | + main.insertAdjacentHTML('beforeend', |
| 229 | +`<section id="${id}"> |
| 230 | + <h2><span class="callout">${s.emoji}</span>${s.title}</h2> |
| 231 | + ${s.content} |
| 232 | +</section>`); |
| 233 | +}); |
| 234 | + |
| 235 | +/* ---------- ACTIVE LINK ON SCROLL ---------- */ |
| 236 | +const links=Array.from(nav.children); |
| 237 | +const io=new IntersectionObserver(entries=>{ |
| 238 | + entries.forEach(e=>{ |
| 239 | + if(e.isIntersecting){ |
| 240 | + links.forEach(l=>l.classList.remove('active')); |
| 241 | + const active=links.find(l=>l.getAttribute('href')==='#'+e.target.id); |
| 242 | + if(active) active.classList.add('active'); |
| 243 | + } |
| 244 | + }); |
| 245 | +},{rootMargin:'-30% 0px -70% 0px'}); |
| 246 | + |
| 247 | +document.querySelectorAll('section').forEach(s=>io.observe(s)); |
| 248 | +</script> |
| 249 | +</body> |
| 250 | +</html> |
0 commit comments