Skip to content

Commit c2cd973

Browse files
authored
Merge pull request #134 from wrhalpin/claude/create-gnat-admin-guide-BOSrp
Add GitHub Pages site and logo kit under site/
2 parents c9f189c + ac948ee commit c2cd973

10 files changed

Lines changed: 292 additions & 0 deletions

File tree

site/assets/css/style.css

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
2+
3+
:root {
4+
--navy: #0F2044;
5+
--navy2: #162952;
6+
--steel: #1E4D8C;
7+
--teal: #0891B2;
8+
--mint: #A5F3FC;
9+
--white: #FFFFFF;
10+
--offwhite: #E8EFF8;
11+
--muted: #94A3B8;
12+
--charcoal: #1E293B;
13+
--green: #10B981;
14+
--amber: #F59E0B;
15+
--red: #E63946;
16+
}
17+
18+
html { scroll-behavior: smooth; }
19+
20+
body {
21+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
22+
background: var(--navy);
23+
color: var(--offwhite);
24+
line-height: 1.6;
25+
}
26+
27+
a { color: var(--teal); text-decoration: none; }
28+
a:hover { color: var(--mint); }
29+
30+
.container { max-width: 1100px; margin: 0 auto; padding: 0 24px; }
31+
32+
/* ── Nav ─────────────────────────────────────── */
33+
nav {
34+
position: sticky; top: 0; z-index: 100;
35+
background: rgba(15, 32, 68, 0.95);
36+
backdrop-filter: blur(12px);
37+
border-bottom: 1px solid rgba(91, 147, 217, 0.15);
38+
padding: 12px 0;
39+
}
40+
nav .container { display: flex; align-items: center; justify-content: space-between; }
41+
nav .brand { display: flex; align-items: center; gap: 10px; font-weight: 700; font-size: 18px; color: var(--white); }
42+
nav .brand img { height: 36px; border-radius: 6px; }
43+
nav ul { list-style: none; display: flex; gap: 24px; }
44+
nav ul a { color: var(--muted); font-size: 14px; font-weight: 500; }
45+
nav ul a:hover { color: var(--white); }
46+
47+
/* ── Hero ────────────────────────────────────── */
48+
.hero {
49+
text-align: center;
50+
padding: 80px 0 60px;
51+
background: linear-gradient(180deg, var(--navy) 0%, var(--navy2) 100%);
52+
}
53+
.hero img { width: 220px; margin-bottom: 24px; border-radius: 16px; }
54+
.hero h1 { font-size: 48px; color: var(--white); margin-bottom: 8px; }
55+
.hero .tagline { font-size: 20px; color: var(--mint); font-style: italic; margin-bottom: 12px; }
56+
.hero .subtitle { font-size: 15px; color: var(--muted); margin-bottom: 32px; }
57+
.hero .badges { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
58+
.badge {
59+
display: inline-block; padding: 6px 16px; border-radius: 20px; font-size: 13px; font-weight: 600;
60+
background: var(--navy2); border: 1px solid rgba(91, 147, 217, 0.3);
61+
}
62+
.badge.teal { border-color: var(--teal); color: var(--teal); }
63+
.badge.green { border-color: var(--green); color: var(--green); }
64+
.badge.amber { border-color: var(--amber); color: var(--amber); }
65+
66+
/* ── Sections ────────────────────────────────── */
67+
section { padding: 64px 0; }
68+
section:nth-child(even) { background: var(--navy2); }
69+
section h2 { font-size: 28px; color: var(--white); margin-bottom: 32px; text-align: center; }
70+
71+
/* ── Stats bar ───────────────────────────────── */
72+
.stats {
73+
display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
74+
gap: 16px; padding: 40px 0;
75+
}
76+
.stat {
77+
text-align: center; padding: 24px 16px;
78+
background: var(--navy2); border-radius: 12px;
79+
border: 1px solid rgba(91, 147, 217, 0.15);
80+
}
81+
.stat .number { font-size: 36px; font-weight: 800; color: var(--teal); }
82+
.stat .label { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: 1px; margin-top: 4px; }
83+
84+
/* ── Feature cards ───────────────────────────── */
85+
.features {
86+
display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
87+
gap: 20px;
88+
}
89+
.card {
90+
background: var(--navy); border-radius: 12px; padding: 28px;
91+
border: 1px solid rgba(91, 147, 217, 0.12);
92+
transition: border-color 0.2s;
93+
}
94+
.card:hover { border-color: var(--teal); }
95+
.card h3 { font-size: 17px; color: var(--white); margin-bottom: 8px; }
96+
.card p { font-size: 14px; color: var(--muted); }
97+
98+
/* ── Install ─────────────────────────────────── */
99+
.install-block {
100+
background: var(--charcoal); border-radius: 10px; padding: 20px 24px;
101+
font-family: "SF Mono", "Fira Code", "Consolas", monospace; font-size: 14px;
102+
color: var(--mint); overflow-x: auto; margin-top: 16px; max-width: 600px;
103+
margin-left: auto; margin-right: auto;
104+
}
105+
106+
/* ── Platform grid ───────────────────────────── */
107+
.platforms {
108+
display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
109+
gap: 8px;
110+
}
111+
.platforms span {
112+
font-size: 13px; color: var(--muted); padding: 8px 12px;
113+
background: var(--navy); border-radius: 6px;
114+
border: 1px solid rgba(91, 147, 217, 0.08);
115+
}
116+
117+
/* ── Footer ──────────────────────────────────── */
118+
footer {
119+
padding: 40px 0; text-align: center;
120+
border-top: 1px solid rgba(91, 147, 217, 0.15);
121+
font-size: 13px; color: var(--muted);
122+
}
123+
footer a { color: var(--teal); }
124+
125+
/* ── Responsive ──────────────────────────────── */
126+
@media (max-width: 640px) {
127+
.hero h1 { font-size: 32px; }
128+
.hero img { width: 160px; }
129+
nav ul { gap: 12px; }
130+
.stats { grid-template-columns: repeat(2, 1fr); }
131+
}
46.5 KB
Loading

site/assets/images/favicon.ico

815 Bytes
Binary file not shown.
26.4 KB
Loading
82.5 KB
Loading
2.46 KB
Loading
7.99 KB
Loading
1.43 MB
Loading

site/assets/images/og-image.png

179 KB
Loading

site/index.html

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>GNAT — Python Cyber Threat Intel Made Simple</title>
7+
<meta name="description" content="GNAT (GNAT's Not A TIP) — A production-ready Python library for unified cyber threat intelligence across 159 platforms with STIX 2.1 ORM, AI agents, and detection rule translation.">
8+
<meta property="og:title" content="GNAT — Python Cyber Threat Intel Made Simple">
9+
<meta property="og:description" content="One library. Every platform. Total control. 159 connectors, STIX 2.1 ORM, AI agents, HuntGNAT detection rules, campaign tracking, and telemetry ingestion.">
10+
<meta property="og:image" content="assets/images/og-image.png">
11+
<meta property="og:type" content="website">
12+
<link rel="icon" href="assets/images/favicon.ico">
13+
<link rel="apple-touch-icon" href="assets/images/apple-touch-icon.png">
14+
<link rel="stylesheet" href="assets/css/style.css">
15+
</head>
16+
<body>
17+
18+
<!-- Nav -->
19+
<nav>
20+
<div class="container">
21+
<a href="#" class="brand">
22+
<img src="assets/images/gnat-logo-64.png" alt="GNAT Logo">
23+
GNAT
24+
</a>
25+
<ul>
26+
<li><a href="#features">Features</a></li>
27+
<li><a href="#platforms">Platforms</a></li>
28+
<li><a href="#install">Install</a></li>
29+
<li><a href="https://github.com/wrhalpin/gnat">GitHub</a></li>
30+
</ul>
31+
</div>
32+
</nav>
33+
34+
<!-- Hero -->
35+
<section class="hero">
36+
<div class="container">
37+
<img src="assets/images/gnat-logo-full.png" alt="GNAT Mascot">
38+
<h1>GNAT</h1>
39+
<p class="tagline">One library. Every platform. Total control.</p>
40+
<p class="subtitle">Python Cyber Threat Intel Made Simple</p>
41+
<div class="badges">
42+
<span class="badge teal">159 Connectors</span>
43+
<span class="badge green">5,100+ Tests</span>
44+
<span class="badge teal">STIX 2.1</span>
45+
<span class="badge amber">Python 3.9+</span>
46+
<span class="badge teal">Apache 2.0</span>
47+
</div>
48+
</div>
49+
</section>
50+
51+
<!-- Stats -->
52+
<section>
53+
<div class="container">
54+
<div class="stats">
55+
<div class="stat"><div class="number">159</div><div class="label">Platform Connectors</div></div>
56+
<div class="stat"><div class="number">5,100+</div><div class="label">Unit Tests</div></div>
57+
<div class="stat"><div class="number">55</div><div class="label">Architecture Decision Records</div></div>
58+
<div class="stat"><div class="number">15</div><div class="label">Ingest Readers</div></div>
59+
<div class="stat"><div class="number">26</div><div class="label">Rule Engine Helpers</div></div>
60+
<div class="stat"><div class="number">4</div><div class="label">Detection Rule Translators</div></div>
61+
</div>
62+
</div>
63+
</section>
64+
65+
<!-- Features -->
66+
<section id="features">
67+
<div class="container">
68+
<h2>Key Capabilities</h2>
69+
<div class="features">
70+
<div class="card">
71+
<h3>159 Platform Connectors</h3>
72+
<p>Uniform CRUD + bidirectional STIX 2.1 translation. ThreatQ, CrowdStrike, Splunk, Sentinel, MISP, VirusTotal, Mandiant, and 152 more.</p>
73+
</div>
74+
<div class="card">
75+
<h3>STIX 2.1 ORM</h3>
76+
<p>Property-bag ORM for Indicators, ThreatActors, Malware, Vulnerabilities, Campaigns, AttackPatterns, Relationships, and Observables.</p>
77+
</div>
78+
<div class="card">
79+
<h3>HuntGNAT Detection Rules</h3>
80+
<p>Translate STIX patterns to Sigma, YARA, Suricata, and Snort rules. Hunt packages, ATT&amp;CK coverage matrix, deployment drift detection.</p>
81+
</div>
82+
<div class="card">
83+
<h3>Attribution &amp; Campaigns</h3>
84+
<p>Diamond Model, kill-chain progression, competing hypotheses with Admiralty Scale scoring, actor profiles, cluster-to-campaign promotion.</p>
85+
</div>
86+
<div class="card">
87+
<h3>Analysis Rule Engine</h3>
88+
<p>Hy/Lisp declarative rules for automated hypothesis evaluation. 26 helpers, audit trail, AI-60 confidence ceiling, priority first-match.</p>
89+
</div>
90+
<div class="card">
91+
<h3>Telemetry Ingestion</h3>
92+
<p>Kafka consumer for honeypot, netflow, IDS, and DNS sensor data. Redis dedup, automatic campaign linking, severity gating.</p>
93+
</div>
94+
<div class="card">
95+
<h3>AI Agents</h3>
96+
<p>Unified LLMClient (Claude, OpenAI, Grok, Gemini). ResearchAgent, ParsingAgent, quality and security sub-agents.</p>
97+
</div>
98+
<div class="card">
99+
<h3>Investigation Builder</h3>
100+
<p>Five-step cross-platform evidence graph: seed &rarr; expand &rarr; normalise &rarr; correlate &rarr; materialise. Infrastructure role classification.</p>
101+
</div>
102+
<div class="card">
103+
<h3>Reports &amp; Dissemination</h3>
104+
<p>PDF, DOCX, HTML, Markdown. TAXII 2.1 server, webhook fan-out with HMAC signing, STIX bundle export.</p>
105+
</div>
106+
</div>
107+
</div>
108+
</section>
109+
110+
<!-- Platforms -->
111+
<section id="platforms">
112+
<div class="container">
113+
<h2>159 Supported Platforms</h2>
114+
<div class="platforms">
115+
<span>ThreatQ</span><span>CrowdStrike</span><span>Splunk</span><span>Sentinel</span>
116+
<span>VirusTotal</span><span>Mandiant</span><span>MISP</span><span>OpenCTI</span>
117+
<span>Elastic SIEM</span><span>QRadar</span><span>Cortex XDR</span><span>SentinelOne</span>
118+
<span>Palo Alto XSOAR</span><span>Wiz</span><span>Orca Security</span><span>Okta</span>
119+
<span>Entra ID</span><span>CrowdStrike</span><span>Recorded Future</span><span>AlienVault OTX</span>
120+
<span>Shodan</span><span>GreyNoise</span><span>Censys</span><span>Joe Sandbox</span>
121+
<span>ANY.RUN</span><span>Hybrid Analysis</span><span>Cuckoo / CAPEv2</span><span>VMRay</span>
122+
<span>Darktrace</span><span>Vectra AI</span><span>ExtraHop</span><span>Carbon Black</span>
123+
<span>Proofpoint TAP</span><span>Mimecast</span><span>Abnormal Security</span><span>IRONSCALES</span>
124+
<span>ServiceNow</span><span>Jira</span><span>TheHive</span><span>Velociraptor</span>
125+
<span>HackerOne</span><span>Bugcrowd</span><span>AbuseIPDB</span><span>MITRE ATT&amp;CK</span>
126+
<span>CISA KEV</span><span>Dataminr</span><span>Flashpoint</span><span>Intel 471</span>
127+
<span>+ 111 more...</span>
128+
</div>
129+
</div>
130+
</section>
131+
132+
<!-- Install -->
133+
<section id="install">
134+
<div class="container">
135+
<h2>Get Started</h2>
136+
<div class="install-block">
137+
<div>pip install gnat</div>
138+
<div style="color: var(--muted); margin-top: 12px;"># Optional extras</div>
139+
<div>pip install "gnat[telemetry]"&nbsp;&nbsp;&nbsp;# Kafka + Redis</div>
140+
<div>pip install "gnat[rules]"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Hy rule engine</div>
141+
<div>pip install "gnat[analysis]"&nbsp;&nbsp;&nbsp;&nbsp;# Campaign tracking</div>
142+
<div>pip install "gnat[serve]"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Web dashboard</div>
143+
<div>pip install "gnat[all]"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Everything</div>
144+
</div>
145+
</div>
146+
</section>
147+
148+
<!-- Footer -->
149+
<footer>
150+
<div class="container">
151+
<p>GNAT &mdash; GNAT's Not A TIP &mdash; Version 1.5.0</p>
152+
<p style="margin-top: 8px;">
153+
<a href="https://github.com/wrhalpin/gnat">GitHub</a> &middot;
154+
Apache License 2.0 &middot;
155+
Python 3.9 &ndash; 3.13
156+
</p>
157+
</div>
158+
</footer>
159+
160+
</body>
161+
</html>

0 commit comments

Comments
 (0)