audit-labs/audit-labs.dev
The website for Audit Labs.
clone: git clone https://gitbay.org/audit-labs/audit-labs.dev.git
8b4e9b808fb982bb16e2d4f4c6bad10bf15e34e3
verified · cmc
author: Christian Cleberg <hello@cleberg.net> · 2026-02-21T23:01:52Z
index.html | 741 ++++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 631 insertions(+), 110 deletions(-) @@ -3,132 +3,653 @@ <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Audit Labs | Evidence Automation & Compliance Tools</title> - <script src="https://cdn.tailwindcss.com"></script> - <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css"> + <title>Audit Labs | Open-Source Audit Automation</title> + <link rel="preconnect" href="https://fonts.googleapis.com"> + <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;700&family=DM+Serif+Display:ital@0;1&family=DM+Sans:wght@400;500;600&display=swap" rel="stylesheet"> <style> - @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&family=Inter:wght@400;600;800&display=swap'); - - body { font-family: 'Inter', sans-serif; } - .mono { font-family: 'JetBrains Mono', monospace; } - .hero-gradient { background: radial-gradient(circle at 50% 50%, #111827 0%, #000000 100%); } + *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } + + :root { + --black: #0a0a0a; + --off-white: #f4f1eb; + --warm-white: #faf8f4; + --amber: #d97706; + --amber-light: #fbbf24; + --green: #15803d; + --green-muted: #166534; + --gray-1: #1c1c1c; + --gray-2: #2e2e2e; + --gray-3: #6b6b6b; + --gray-4: #a3a3a3; + --gray-5: #d4d4d4; + --border: #e5e1d8; + } + + body { + font-family: 'DM Sans', sans-serif; + background: var(--warm-white); + color: var(--black); + line-height: 1.6; + } + + .mono { font-family: 'IBM Plex Mono', monospace; } + .serif { font-family: 'DM Serif Display', serif; } + + /* NAV */ + nav { + position: sticky; + top: 0; + z-index: 100; + background: var(--warm-white); + border-bottom: 1px solid var(--border); + padding: 0 2rem; + } + + .nav-inner { + max-width: 1100px; + margin: 0 auto; + display: flex; + justify-content: space-between; + align-items: center; + height: 60px; + } + + .logo { + font-family: 'IBM Plex Mono', monospace; + font-weight: 700; + font-size: 1.1rem; + letter-spacing: -0.02em; + color: var(--black); + text-decoration: none; + } + + .logo span { color: var(--amber); } + + .nav-links { + display: flex; + gap: 2rem; + align-items: center; + list-style: none; + } + + .nav-links a { + font-family: 'IBM Plex Mono', monospace; + font-size: 0.78rem; + color: var(--gray-3); + text-decoration: none; + transition: color 0.15s; + } + + .nav-links a:hover { color: var(--black); } + + .nav-links .btn-github { + background: var(--black); + color: var(--off-white); + padding: 0.45rem 1rem; + border-radius: 4px; + font-size: 0.75rem; + transition: background 0.15s; + } + + .nav-links .btn-github:hover { background: var(--gray-2); color: var(--off-white); } + + /* HERO */ + .hero { + background: var(--black); + color: var(--off-white); + padding: 7rem 2rem 5rem; + position: relative; + overflow: hidden; + } + + .hero::before { + content: ''; + position: absolute; + inset: 0; + background-image: + repeating-linear-gradient(0deg, transparent, transparent 39px, rgba(255,255,255,0.03) 39px, rgba(255,255,255,0.03) 40px), + repeating-linear-gradient(90deg, transparent, transparent 39px, rgba(255,255,255,0.03) 39px, rgba(255,255,255,0.03) 40px); + pointer-events: none; + } + + .hero-inner { + max-width: 1100px; + margin: 0 auto; + position: relative; + } + + .hero-label { + font-family: 'IBM Plex Mono', monospace; + font-size: 0.7rem; + letter-spacing: 0.15em; + text-transform: uppercase; + color: var(--amber-light); + margin-bottom: 1.5rem; + display: flex; + align-items: center; + gap: 0.5rem; + } + + .hero-label::before { + content: ''; + display: inline-block; + width: 1.5rem; + height: 1px; + background: var(--amber-light); + } + + h1 { + font-family: 'DM Serif Display', serif; + font-size: clamp(2.8rem, 6vw, 5rem); + font-weight: 400; + line-height: 1.1; + letter-spacing: -0.02em; + margin-bottom: 1.5rem; + max-width: 700px; + } + + h1 em { + font-style: italic; + color: var(--amber-light); + } + + .hero-desc { + font-size: 1.05rem; + color: #a09a8e; + max-width: 540px; + margin-bottom: 2.5rem; + line-height: 1.75; + } + + .hero-actions { + display: flex; + gap: 1rem; + flex-wrap: wrap; + margin-bottom: 4rem; + } + + .btn-primary { + background: var(--amber); + color: #fff; + text-decoration: none; + padding: 0.75rem 1.5rem; + border-radius: 4px; + font-family: 'IBM Plex Mono', monospace; + font-size: 0.8rem; + font-weight: 500; + transition: background 0.15s; + } + + .btn-primary:hover { background: var(--amber-light); color: #000; } + + .btn-secondary { + background: transparent; + color: var(--gray-4); + text-decoration: none; + padding: 0.75rem 1.5rem; + border-radius: 4px; + font-family: 'IBM Plex Mono', monospace; + font-size: 0.8rem; + border: 1px solid var(--gray-2); + transition: border-color 0.15s, color 0.15s; + } + + .btn-secondary:hover { border-color: var(--gray-4); color: var(--off-white); } + + /* Terminal block */ + .terminal { + background: #111; + border: 1px solid #2a2a2a; + border-radius: 8px; + overflow: hidden; + max-width: 600px; + } + + .terminal-bar { + background: #1a1a1a; + border-bottom: 1px solid #2a2a2a; + padding: 0.6rem 1rem; + display: flex; + gap: 0.4rem; + align-items: center; + } + + .dot { width: 10px; height: 10px; border-radius: 50%; } + .dot-red { background: #ff5f57; } + .dot-yellow { background: #febc2e; } + .dot-green { background: #28c840; } + + .terminal-body { + padding: 1.25rem 1.5rem; + font-family: 'IBM Plex Mono', monospace; + font-size: 0.82rem; + line-height: 1.9; + } + + .t-prompt { color: #5a9060; } + .t-cmd { color: #e8e0d0; } + .t-comment { color: #555; } + .t-out { color: #7a9f7a; } + .t-path { color: #d4a862; } + .t-dim { color: #444; } + + /* REPOS SECTION */ + .repos { + padding: 5rem 2rem; + background: var(--warm-white); + border-bottom: 1px solid var(--border); + } + + .section-inner { + max-width: 1100px; + margin: 0 auto; + } + + .section-header { + display: flex; + justify-content: space-between; + align-items: baseline; + margin-bottom: 3rem; + flex-wrap: wrap; + gap: 1rem; + } + + h2 { + font-family: 'DM Serif Display', serif; + font-size: clamp(1.8rem, 3vw, 2.4rem); + font-weight: 400; + line-height: 1.2; + } + + .section-link { + font-family: 'IBM Plex Mono', monospace; + font-size: 0.75rem; + color: var(--gray-3); + text-decoration: none; + border-bottom: 1px solid var(--gray-5); + padding-bottom: 1px; + transition: color 0.15s; + } + + .section-link:hover { color: var(--black); } + + .repo-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 1.5rem; + } + + .repo-card { + background: #fff; + border: 1px solid var(--border); + border-radius: 8px; + padding: 2rem; + text-decoration: none; + color: inherit; + display: block; + transition: border-color 0.15s, box-shadow 0.15s; + position: relative; + } + + .repo-card:hover { + border-color: var(--amber); + box-shadow: 0 4px 20px rgba(0,0,0,0.06); + } + + .repo-tag { + font-family: 'IBM Plex Mono', monospace; + font-size: 0.65rem; + text-transform: uppercase; + letter-spacing: 0.1em; + color: var(--amber); + background: #fef3c7; + padding: 0.2rem 0.5rem; + border-radius: 3px; + display: inline-block; + margin-bottom: 1rem; + } + + .repo-card h3 { + font-family: 'IBM Plex Mono', monospace; + font-size: 0.95rem; + font-weight: 700; + margin-bottom: 0.6rem; + color: var(--black); + } + + .repo-card p { + font-size: 0.9rem; + color: var(--gray-3); + line-height: 1.65; + margin-bottom: 1.5rem; + } + + .repo-langs { + display: flex; + gap: 0.5rem; + flex-wrap: wrap; + } + + .lang-badge { + font-family: 'IBM Plex Mono', monospace; + font-size: 0.65rem; + background: var(--off-white); + border: 1px solid var(--border); + color: var(--gray-3); + padding: 0.15rem 0.5rem; + border-radius: 3px; + } + + /* TOOLS SECTION */ + .tools { + padding: 5rem 2rem; + background: #fff; + border-bottom: 1px solid var(--border); + } + + .tools-intro { + max-width: 550px; + margin-bottom: 3rem; + } + + .tools-intro p { + color: var(--gray-3); + font-size: 0.95rem; + margin-top: 0.75rem; + line-height: 1.7; + } + + .tool-list { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + gap: 1px; + background: var(--border); + border: 1px solid var(--border); + border-radius: 8px; + overflow: hidden; + } + + .tool-item { + background: #fff; + padding: 1.75rem; + transition: background 0.15s; + } + + .tool-item:hover { background: var(--warm-white); } + + .tool-icon { + font-family: 'IBM Plex Mono', monospace; + font-size: 0.7rem; + color: var(--amber); + margin-bottom: 0.75rem; + letter-spacing: 0.05em; + } + + .tool-item h4 { + font-family: 'IBM Plex Mono', monospace; + font-size: 0.85rem; + font-weight: 700; + margin-bottom: 0.5rem; + color: var(--black); + } + + .tool-item p { + font-size: 0.82rem; + color: var(--gray-3); + line-height: 1.6; + } + + /* FRAMEWORKS */ + .frameworks { + padding: 3.5rem 2rem; + background: var(--warm-white); + border-bottom: 1px solid var(--border); + } + + .frameworks-inner { + max-width: 1100px; + margin: 0 auto; + display: flex; + align-items: center; + gap: 3rem; + flex-wrap: wrap; + } + + .frameworks-label { + font-family: 'IBM Plex Mono', monospace; + font-size: 0.68rem; + letter-spacing: 0.12em; + text-transform: uppercase; + color: var(--gray-4); + white-space: nowrap; + } + + .frameworks-list { + display: flex; + gap: 2.5rem; + flex-wrap: wrap; + align-items: center; + } + + .framework-tag { + font-family: 'IBM Plex Mono', monospace; + font-size: 0.8rem; + font-weight: 700; + color: var(--gray-3); + letter-spacing: 0.05em; + } + + /* FOOTER */ + footer { + background: var(--black); + color: var(--gray-4); + padding: 3rem 2rem; + } + + .footer-inner { + max-width: 1100px; + margin: 0 auto; + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: 1.5rem; + } + + .footer-logo { + font-family: 'IBM Plex Mono', monospace; + font-weight: 700; + font-size: 0.9rem; + color: var(--gray-4); + text-decoration: none; + } + + .footer-logo span { color: var(--amber); } + + .footer-left p { + font-size: 0.78rem; + color: var(--gray-2); + margin-top: 0.4rem; + } + + .footer-links { + display: flex; + gap: 1.5rem; + align-items: center; + } + + .footer-links a { + font-family: 'IBM Plex Mono', monospace; + font-size: 0.75rem; + color: var(--gray-3); + text-decoration: none; + transition: color 0.15s; + } + + .footer-links a:hover { color: var(--off-white); } + + /* ANIMATIONS */ + @keyframes fadeUp { + from { opacity: 0; transform: translateY(16px); } + to { opacity: 1; transform: translateY(0); } + } + + .hero-label { animation: fadeUp 0.5s ease both; } + h1 { animation: fadeUp 0.5s ease 0.1s both; } + .hero-desc { a[<35;7;2Mnimation: fadeUp 0.5s ease 0.2s both; } + .hero-actions { animation: fadeUp 0.5s ease 0.3s both; } + .terminal { animation: fadeUp 0.5s ease 0.4s both; } + + /* RESPONSIVE */ + @media (max-width: 640px) { + .nav-links a:not(.btn-github):not(:last-child) { display: none; } + h1 { font-size: 2.4rem; } + } </style> </head> -<body class="bg-gray-50 text-gray-900"> +<body> - <nav class="border-b border-gray-200 bg-white sticky top-0 z-50"> - <div class="max-w-6xl mx-auto px-6 py-4 flex justify-between items-center"> - <div class="flex items-center space-x-2"> - <div class="w-8 h-8 bg-black flex items-center justify-center rounded"> - <i class="fas fa-microscope text-white text-sm"></i> - </div> - <span class="text-xl font-extrabold tracking-tight italic">AUDIT<span class="text-blue-600">LABS</span></span> - </div> - <div class="space-x-8 mono text-sm font-medium"> - <a href="#automation" class="hover:text-blue-600">Automation</a> - <a href="#frameworks" class="hover:text-blue-600">Frameworks</a> - <a href="https://github.com/audit-labs" class="bg-black text-white px-4 py-2 rounded hover:bg-gray-800 transition">GitHub</a> - </div> +<nav> + <div class="nav-inner"> + <a href="/" class="logo">AUDIT<span>LABS</span></a> + <ul class="nav-links"> + <li><a href="https://github.com/audit-labs/audit-tools">Tools</a></li> + <li><a href="https://github.com/audit-labs/tutorials">Tutorials</a></li> + <li><a href="https://github.com/audit-labs" class="btn-github">GitHub →</a></li> + </ul> + </div> +</nav> + +<header class="hero"> + <div class="hero-inner"> + <div class="hero-label">Open-source · Free to use</div> + <h1>Automate the<br><em>evidence trail.</em></h1> + <p class="hero-desc"> + Scripts, queries, and guides that help auditors programmatically gather evidence from real environments — databases, Linux systems, cloud platforms, and more. + </p> + <div class="hero-actions"> + <a href="https://github.com/audit-labs/audit-tools" class="btn-primary">Browse the tools</a> + <a href="https://github.com/audit-labs/tutorials" class="btn-secondary">See tutorials</a> </div> - </nav> - - <header class="hero-gradient text-white py-24 px-6 text-center"> - <div class="max-w-4xl mx-auto"> - <h1 class="text-5xl md:text-6xl font-extrabold mb-6 tracking-tight"> - Automate the <span class="text-blue-500">Evidence Trail.</span> - </h1> - <p class="text-xl text-gray-400 mb-10 leading-relaxed"> - We build open-source tools, automation, and tutorials that help auditors and compliance teams programmatically gather evidence from complex environments. - </p> - <div class="inline-block bg-gray-900 rounded-lg p-1 border border-gray-700 shadow-2xl"> - <div class="bg-black rounded-md px-6 py-3 mono text-left text-sm md:text-base border border-gray-800"> - <span class="text-green-500">$</span> audit-labs collect --framework SOX --target all<br> - <span class="text-blue-400">Scanning connected systems...</span><br> - <span class="text-gray-500">Evidence bundled in ./compliance_output/</span> - </div> + + <div class="terminal"> + <div class="terminal-bar"> + <di[<35;7;3Mv class="dot dot-red"></div> + <div class="dot dot-yellow"></div> + <div class="dot dot-green"></div> </div> - </div> - </header> - - <section id="frameworks" class="py-16 bg-white border-b"> - <div class="max-w-6xl mx-auto px-6"> - <p class="text-center text-sm font-bold uppercase tracking-widest text-gray-500 mb-8">Supporting Assessments For</p> - <div class="flex flex-wrap justify-center gap-8 md:gap-16 opacity-70 grayscale"> - <span class="text-2xl font-black">SOX</span> - <span class="text-2xl font-black">SOC 1-3</span> - <span class="text-2xl font-black">ISO 27001</span> - <span class="text-2xl font-black">NIST</span> + <div class="terminal-body"> + <span class="t-comment"># Pull user access report from a PostgreSQL database</span><br> + <span class="t-prompt">$</span> <span class="t-cmd">python3 databases/postgres/user_access.py</span><br> + <span class="t-out">✓ Connected to audit_db</span><br> + <span class="t-out">✓ Exported 142 rows → </span><span class="t-path">output/user_access_2025-01.csv</span><br> + <span class="t-dim">──────────────────────────────────</span><br> + <span class="t-comment"># Sample 25 items using random seed for reproducibility</span><br> + <span class="t-prompt">$</span> <span class="t-cmd">python3 sampling/random_sample.py --n 25 --seed 42</span><br> + <span class="t-out">✓ Sample written → </span><span class="t-path">output/sample_25.csv</span> </div> </div> - </section> - - <section id="automation" class="py-20 px-6"> - <div class="max-w-6xl mx-auto"> - <div class="text-center mb-16"> - <h2 class="text-3xl font-bold mb-4">Evidence as Code</h2> - <p class="text-gray-600 max-w-2xl mx-auto">We replace manual screenshots and manual checks with automated scripts that interface directly with your technology stack.</p> - </div> - - <div class="grid md:grid-cols-2 lg:grid-cols-3 gap-8"> - <div class="bg-white p-8 border border-gray-200 rounded-xl shadow-sm hover:border-blue-500 transition"> - <div class="w-12 h-12 bg-blue-50 text-blue-600 rounded-lg flex items-center justify-center mb-6"> - <i class="fab fa-aws text-2xl"></i> - </div> - <h3 class="font-bold text-xl mb-2">Cloud Infrastructure</h3> - <p class="text-gray-600 text-sm mb-4">Automated collection for AWS environments, ensuring access controls and configurations meet audit standards.</p> - </div> - - <div class="bg-white p-8 border border-gray-200 rounded-xl shadow-sm hover:border-blue-500 transition"> - <div class="w-12 h-12 bg-orange-50 text-orange-600 rounded-lg flex items-center justify-center mb-6"> - <i class="fab fa-git-alt text-2xl"></i> - </div> - <h3 class="font-bold text-xl mb-2">Source Control</h3> - <p class="text-gray-600 text-sm mb-4">Validation tools for GitHub and GitLab settings, branch protections, and developer access compliance.</p> - </div> - - <div class="bg-white p-8 border border-gray-200 rounded-xl shadow-sm hover:border-blue-500 transition"> - <div class="w-12 h-12 bg-purple-50 text-purple-600 rounded-lg flex items-center justify-center mb-6"> - <i class="fas fa-database text-2xl"></i> - </div> - <h3 class="font-bold text-xl mb-2">Database Admin</h3> - <p class="text-gray-600 text-sm mb-4">Scripts to audit database administrator accounts, password rotations, and privilege levels.</p> - </div> + </div> +</header> - <div class="bg-white p-8 border border-gray-200 rounded-xl shadow-sm hover:border-blue-500 transition"> - <div class="w-12 h-12 bg-red-50 text-red-600 rounded-lg flex items-center justify-center mb-6"> - <i class="fas fa-hdd text-2xl"></i> - </div> - <h3 class="font-bold text-xl mb-2">Mainframe (RACF)</h3> - <p class="text-gray-600 text-sm mb-4">Custom automation for legacy environments including RACF access logs and system authority.</p> - </div> - - <div class="bg-white p-8 border border-gray-200 rounded-xl shadow-sm hover:border-blue-500 transition"> - <div class="w-12 h-12 bg-green-50 text-green-600 rounded-lg flex items-center justify-center mb-6"> - <i class="fas fa-book text-2xl"></i> - </div> - <h3 class="font-bold text-xl mb-2">Tutorials & Docs</h3> - <p class="text-gray-600 text-sm mb-4">Step-by-step guides on how to build your own audit automation using Python, CLI, and APIs.</p> +<section class="repos"> + <div class="section-inner"> + <div class="section-header"> + <h2>Two repos.<br>Pick what you need.</h2> + <a href="https://github.com/audit-labs" class="section-link">View all on GitHub →</a> + </div> + <div class="repo-grid"> + <a href="https://github.com/audit-labs/audit-tools" class="repo-card"> + <div class="repo-tag">Tools</div> + <h3>audit-labs/audit-tools</h3> + <p>Ready-to-run scripts for common audit procedures: pseudo-random sampling, GITC extraction, database user access, Linux OS reports, and more. Use as-is or adapt to your environment.</p> + <div class="repo-langs"> + <span class="lang-badge">Python</span> + <span class="lang-badge">Shell</span> + <span class="lang-badge">SQL</span> </div> - - <div class="bg-gray-900 p-8 border border-gray-800 rounded-xl shadow-sm flex flex-col justify-center items-center text-center"> - <p class="text-white font-bold mb-2">Have a unique system?</p> - <a href="https://github.com/audit-labs" class="text-blue-400 hover:underline text-sm">Request a Custom Tool →</a> + </a> + <a href="https://github.com/audit-labs/tutorials" class="repo-card"> + <div class="repo-tag">Tutorials</div> + <h3>audit-labs/tutorials</h3> + <p>Step-by-step guides on building your own audit automation using Python, the CLI, and APIs. Good starting point if you're new to scripting or want to extend existing tools.</p> + <div class="repo-langs"> + <span class="lang-badge">Jupyter</span> + <span class="lang-badge">Python</span> + <span class="lang-badge">Markdown</span> </div> - </div> + </a> </div> - </section> + </div> +</section> - <footer class="bg-white border-t py-12 px-6"> - <div class="max-w-6xl mx-auto flex flex-col md:flex-row justify-between items-center"> - <div class="mb-4 md:mb-0"> - <span class="text-lg font-extrabold italic">AUDIT<span class="text-blue-600">LABS</span></span> - <p class="text-gray-500 text-xs mt-1">© 2025 Audit Labs. A two-person team building for the community.</p> +<section class="tools"> + <div class="section-inner"> + <div class="tools-intro"> + <h2>What's in the toolbox</h2> + <p>Coverage across the systems auditors most commonly deal with, with more being added.</p> + </div> + <div class="tool-list"> + <div class="tool-item"> + <div class="tool-icon">[ DB ]</div> + <h4>Databases</h4> + <p>User access, privilege levels, password rotation checks — for PostgreSQL, MySQL, and others.</p> + </div> + <div class="tool-item"> + <div class="tool-icon">[ OS ]</div> + <h4>Linux / OS</h4> + <p>Shell scripts to generate system reports: users, groups, sudoers, login history, and more.</p> + </div> + <div class="tool-item"> + <div class="tool-icon">[ ~ ]</div> + <h4>Sampling</h4> + <p>Reproducible pseudo-random sampling with a fixed seed — a core procedure for most audits.</p> + </div> + <div class="tool-item"> + <div class="tool-icon">[ PM ]</div> + <h4>Project Management</h4> + <p>Tracking and visualization utilities for audit project data and findings.</p> </div> - <div class="flex space-x-6 text-gray-400"> - <a href="https://github.com/audit-labs" class="hover:text-black"><i class="fab fa-github text-2xl"></i></a> + <div class="tool-item"> + <div class="tool-icon">[ APP ]</div> + <h4>Applications</h4> + <p>Scripts targeting specific application-layer controls across common enterprise software.</p> </div> + <div class="tool-item"> + <div class="tool-icon">[ + ]</div> + <h4>Contributions welcome</h4> + <p>Fork, add a script for your stack, and open a PR. All audit-relevant tools considered.</p> + </div> + </div> + </div> +</section> + +<section class="frameworks"> + <div class[<35;7;4M[<35;8;4M="frameworks-inner"> + <span class="frameworks-label">Used in assessments for</span> + <div class="frameworks-list"> + <span class="framework-tag">SOX</span> + <span class="framework-tag">SOC 1 / 2</span> + <span class="framework-tag">ISO 27001</span> + <span class="framework-tag">NIST CSF</span> + <span class="framework-tag">ITGC</span> + </div> + </div> +</section> + +<footer> + <div class="footer-inner"> + <div class="footer-left"> + <a href="/" class="footer-logo">AUDIT<span>LABS</span></a> + <p>© 2025 Audit Labs — a two-person team building for the community.</p> + </div> + <div class="footer-links"> + <a href="https://github.com/audit-la[<35;9;5Mbs/audit-tools">audit-tools</a> + <a href="https://github.com/audit-labs/tutorials">tutorials</a> + <a href="https://github.com/audit-labs">GitHub</a> </div> - </footer> + </div> +</footer> </body> </html>