Skip to content

Commit 6e1ade3

Browse files
author
Matt
committed
Implement brutalist design system
Transform to brutalist design with numbered sections, 800x200 SVG headers with status strips and 4-column spec grids, and GitHub Pages with clean brutalist structure. Added philosophical water-themed naming about whirlpools drawing elements together.
1 parent b368dbf commit 6e1ade3

4 files changed

Lines changed: 443 additions & 557 deletions

File tree

README.md

Lines changed: 78 additions & 156 deletions
Original file line numberDiff line numberDiff line change
@@ -1,207 +1,129 @@
1-
<div align="center">
2-
31
<picture>
42
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/Real-Fruit-Snacks/Whirlpool/main/docs/assets/logo-dark.svg">
53
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/Real-Fruit-Snacks/Whirlpool/main/docs/assets/logo-light.svg">
6-
<img alt="Whirlpool" src="https://raw.githubusercontent.com/Real-Fruit-Snacks/Whirlpool/main/docs/assets/logo-dark.svg" width="420">
4+
<img alt="Whirlpool" src="https://raw.githubusercontent.com/Real-Fruit-Snacks/Whirlpool/main/docs/assets/logo-dark.svg" width="100%">
75
</picture>
86

9-
![Python](https://img.shields.io/badge/Python-3.9+-3776AB?logo=python&logoColor=white)
10-
![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20Windows%20%7C%20macOS-lightgrey)
11-
![License](https://img.shields.io/badge/license-MIT-blue.svg)
7+
> [!IMPORTANT]
8+
> **Privilege escalation reasoning engine.** Parses LinPEAS/WinPEAS output and generates ranked exploitation playbooks. 329 GTFOBins entries, 86 LOLBAS binaries, 42 kernel exploits, 9 potato attacks with composite scoring and attack chain detection.
129
13-
**Privilege escalation reasoning engine -- parses LinPEAS/WinPEAS output and generates ranked exploitation playbooks**
10+
> *A whirlpool is a swirling vortex that draws everything into its center, creating powerful currents from scattered elements. Perfect metaphor for a reasoning engine that takes fragmented enumeration findings and draws them together into focused, prioritized attack strategies.*
1411
15-
Feed it raw enumeration output, get back a prioritized attack plan with exact commands, confidence ratings, and multi-step attack chains. 329 GTFOBins entries, 86 LOLBAS binaries, 42 kernel exploits, 9 potato attacks. Everything runs offline -- no API calls, no internet required.
12+
---
1613

17-
> **Authorization Required**: This tool is designed exclusively for authorized security testing with explicit written permission. Unauthorized access to computer systems is illegal and may result in criminal prosecution.
14+
## §1 / Premise
1815

19-
</div>
16+
Whirlpool is a **privilege escalation reasoning engine** that transforms raw enumeration output into ranked exploitation playbooks. Feed it LinPEAS, WinPEAS, or manual command output and receive prioritized attack plans with exact commands, confidence ratings, and multi-step attack chains.
2017

21-
---
18+
The engine matches findings against comprehensive offline knowledge bases containing 329 GTFOBins entries, 86 LOLBAS binaries, 42 kernel exploits, and 9 potato attacks. Everything runs offline with no API calls or internet requirements—pure analysis of enumeration data.
2219

23-
## Quick Start
20+
**Authorization Required**: Designed exclusively for authorized security testing with explicit written permission.
2421

25-
### Prerequisites
22+
---
2623

27-
- **Python** 3.9+
28-
- **pip** or **pipx**
24+
## §2 / Specs
2925

30-
### Install
26+
| KEY | VALUE |
27+
|-----------------|-----------------------------------------------------------------------------|
28+
| **PARSING** | **Auto-detection · LinPEAS · WinPEAS · manual commands** with format variants |
29+
| **KNOWLEDGE** | **329 GTFOBins · 86 LOLBAS · 42 kernel exploits · 9 potato attacks** |
30+
| **SCORING** | **Composite ranking** with 5 profiles (default, OSCP, CTF, stealth, safe) |
31+
| **CHAINS** | **12 attack chain types** for multi-step privilege escalation paths |
32+
| **ENGINE** | **Pure offline analysis** with no network calls or API dependencies |
33+
| **OUTPUT** | **Terminal UI · Markdown · JSON** with Catppuccin Mocha theming |
34+
| **FILTERING** | **Noise reduction** with purpose-built parsers and false-positive filtering |
35+
| **PLATFORM** | **Python 3.9+ · Linux/Windows/macOS** cross-platform compatibility |
3136

32-
```bash
33-
# pipx (recommended -- isolated environment)
34-
pipx install git+https://github.com/Real-Fruit-Snacks/Whirlpool.git
37+
---
3538

36-
# Or from a local clone
37-
git clone https://github.com/Real-Fruit-Snacks/Whirlpool.git
38-
cd Whirlpool && pip install -e .
39-
```
39+
## §3 / Quickstart
4040

41-
### Run
41+
**Prerequisites:** Python 3.9+, pip or pipx
4242

4343
```bash
44-
# Analyze LinPEAS output (auto-detected)
44+
# Install reasoning engine
45+
pipx install git+https://github.com/Real-Fruit-Snacks/Whirlpool.git
46+
47+
# Analyze enumeration output (auto-detected format)
4548
whirlpool linpeas_output.txt
49+
whirlpool winpeas_output.txt
4650

47-
# Quick wins only
51+
# Generate focused playbook with top techniques
4852
whirlpool enum.txt --quick-wins
4953

50-
# OSCP-optimized ranking
54+
# OSCP-optimized ranking for exam scenarios
5155
whirlpool enum.txt --profile oscp
5256

53-
# Export to Markdown
57+
# Export structured analysis to markdown
5458
whirlpool enum.txt --format markdown --output report.md
55-
56-
# JSON with attacker IP substitution
57-
whirlpool enum.txt --format json --lhost 10.10.14.1 --lport 4444
58-
59-
# Diff two scans
60-
whirlpool first.txt --diff second.txt
6159
```
6260

6361
---
6462

65-
## Features
66-
67-
### Auto-Detection
68-
69-
Feed Whirlpool any enumeration file and it figures out the format. Handles LinPEAS `.sh` output (Unicode box headers), WinPEAS `.exe` output, `.bat` output, `.exe` beta format, and manual command output -- all automatically:
70-
71-
```bash
72-
# No --type flag needed
73-
whirlpool linpeas_output.txt
74-
whirlpool winpeas_output.txt
75-
whirlpool manual_commands.txt
76-
```
77-
78-
### Offline Knowledge Bases
79-
80-
329 GTFOBins entries, 86 LOLBAS binaries, 42 kernel exploits with version ranges, and 9 potato attacks with OS compatibility matrices. All shipped as JSON in `whirlpool/data/`:
81-
82-
```bash
83-
# All matching happens locally -- zero network calls
84-
whirlpool enum.txt
85-
```
86-
87-
| File | Entries | Source |
88-
|---|---|---|
89-
| `gtfobins.json` | 329 binaries | GTFOBins |
90-
| `kernel_exploits.json` | 42 CVEs | 23 Linux + 19 Windows |
91-
| `lolbas.json` | 86 binaries | LOLBAS Project |
92-
| `potato_matrix.json` | 9 attacks | OS compatibility matrix |
93-
94-
### Composite Scoring
95-
96-
Every technique scored across four dimensions with profile-specific weights:
97-
98-
```bash
99-
# Five ranking profiles
100-
whirlpool enum.txt --profile default # Balanced (40/30/20/10)
101-
whirlpool enum.txt --profile oscp # Reliable + documented
102-
whirlpool enum.txt --profile ctf # Speed -- get root fast
103-
whirlpool enum.txt --profile stealth # Low detection
104-
whirlpool enum.txt --profile safe # System stability
105-
```
106-
107-
Dimensions: reliability (likelihood of success), safety (system stability risk), simplicity (ease of execution), stealth (detection avoidance).
108-
109-
### Attack Chain Detection
110-
111-
Detects 12 multi-step privilege escalation paths that single-finding scanners miss:
63+
## §4 / Reference
11264

11365
```bash
114-
# Chains enabled by default, disable with --no-chains
115-
whirlpool enum.txt
116-
whirlpool enum.txt --no-chains
117-
```
118-
119-
Chain types include cron PATH hijack, writable cron scripts, Docker/LXD escapes, NFS SUID planting, wildcard injection, LD_PRELOAD abuse, and writable /etc/passwd.
120-
121-
### Noise Filtering
122-
123-
Purpose-built parsers with aggressive false-positive filtering. The sudo parser rejects grep artifacts, version-like patterns, and common non-runas words. Tested against 22 HTB/Vulnhub samples with zero crashes and zero blank results.
124-
125-
### Multiple Output Formats
126-
127-
```bash
128-
# Rich terminal with Catppuccin Mocha theme
129-
whirlpool enum.txt
130-
131-
# Markdown report
132-
whirlpool enum.txt --format markdown --output report.md
133-
134-
# Structured JSON for tool integration
135-
whirlpool enum.txt --format json > results.json
136-
137-
# Quick wins -- top 5 techniques
138-
whirlpool enum.txt --quick-wins
139-
```
140-
141-
### Python API
142-
143-
```python
144-
from whirlpool.parser.linpeas import LinPEASParser
145-
from whirlpool.engine.analyzer import Analyzer
146-
from whirlpool.engine.ranker import Ranker, RankingProfile
147-
148-
parser = LinPEASParser()
149-
results = parser.parse_file("linpeas_output.txt")
150-
151-
analyzer = Analyzer()
152-
paths = analyzer.analyze_linux(results)
153-
154-
ranker = Ranker(profile=RankingProfile.OSCP)
155-
ranked = ranker.rank(paths)
156-
quick_wins = ranker.get_quick_wins(paths, top_n=5)
66+
# ANALYSIS & PROFILES
67+
whirlpool enum.txt # Auto-detect format, analyze
68+
whirlpool enum.txt --profile oscp # OSCP-optimized ranking
69+
whirlpool enum.txt --profile ctf # Speed-focused for CTFs
70+
whirlpool enum.txt --profile stealth # Low-detection techniques
71+
whirlpool enum.txt --profile safe # System stability priority
72+
73+
# OUTPUT FORMATS
74+
whirlpool enum.txt --quick-wins # Top 5 techniques only
75+
whirlpool enum.txt --format markdown --output report.md # Markdown export
76+
whirlpool enum.txt --format json > results.json # Structured JSON
77+
whirlpool enum.txt --lhost 10.10.14.1 --lport 4444 # IP/port substitution
78+
79+
# CHAIN ANALYSIS
80+
whirlpool enum.txt # Chains enabled (default)
81+
whirlpool enum.txt --no-chains # Disable multi-step detection
82+
83+
# COMPARISON & DIFFING
84+
whirlpool first.txt --diff second.txt # Compare two scans
85+
86+
# SUPPORTED FORMATS (auto-detected)
87+
# LinPEAS .sh output (Unicode box headers)
88+
# WinPEAS .exe output, .bat output, .exe beta format
89+
# Manual command output
15790
```
15891

15992
---
16093

161-
## Architecture
94+
## §5 / Architecture
95+
96+
**Three-Stage Pipeline**: Parse enumeration → Analyze against knowledge bases → Rank with composite scoring
16297

16398
```
16499
whirlpool/
165-
├── cli.py # Argparse entry point, auto-detection, output routing
166-
├── parser/ # LinPEAS, WinPEAS, manual command parsers (3 format variants)
100+
├── cli.py # Argparse entry point, auto-detection, output routing
101+
├── parser/ # LinPEAS, WinPEAS, manual command parsers (3 variants)
167102
├── engine/
168-
│ ├── analyzer.py # Core analysis -- matches findings against knowledge bases
169-
│ ├── ranker.py # Composite scoring with 5 ranking profiles
170-
│ └── chain.py # Multi-step attack chain detection (12 chain types)
171-
├── data/ # Offline JSON knowledge bases (GTFOBins, LOLBAS, kernel, potato)
172-
├── output/ # Terminal (Catppuccin Mocha), Markdown, JSON renderers
173-
└── tests/ # 237 tests
103+
│ ├── analyzer.py # Core analysis matches findings against databases
104+
│ ├── ranker.py # Composite scoring with 5 ranking profiles
105+
│ └── chain.py # Multi-step attack chain detection (12 types)
106+
├── data/ # Offline JSON knowledge bases (no network calls)
107+
│ ├── gtfobins.json # 329 binaries from GTFOBins
108+
│ ├── lolbas.json # 86 binaries from LOLBAS Project
109+
│ ├── kernel_exploits.json # 42 CVEs (23 Linux + 19 Windows)
110+
│ └── potato_matrix.json # 9 attacks with OS compatibility
111+
├── output/ # Terminal (Catppuccin), Markdown, JSON renderers
112+
└── tests/ # 237 tests with HTB/Vulnhub samples
174113
```
175114

176-
Three-stage pipeline: parse enumeration output into structured data, analyze findings against knowledge bases to generate exploitation paths, rank paths using composite scoring.
115+
**Composite Scoring**: Every technique scored across reliability (success likelihood), safety (system stability), simplicity (execution ease), and stealth (detection avoidance).
177116

178117
---
179118

180-
## Platform Support
119+
## §6 / Authorization
181120

182-
| Capability | Linux | macOS | Windows |
183-
|---|---|---|---|
184-
| CLI | Full | Full | Full |
185-
| LinPEAS Parsing | Full | Full | Full |
186-
| WinPEAS Parsing | Full | Full | Full |
187-
| Rich Terminal UI | Full | Full | Full (Windows Terminal recommended) |
188-
| Markdown/JSON Export | Full | Full | Full |
189-
190-
---
121+
Whirlpool is designed for **authorized security testing** with explicit written permission. The tool generates exploitation playbooks that should only be used against systems you own or have proper authorization to test.
191122

192-
## Security
123+
Security vulnerabilities should be reported via [GitHub Security Advisories](https://github.com/Real-Fruit-Snacks/Whirlpool/security/advisories) with 90-day responsible disclosure.
193124

194-
Report security issues via [GitHub Security Advisories](https://github.com/Real-Fruit-Snacks/Whirlpool/security/advisories/new) (preferred) or private disclosure to maintainers. Responsible disclosure timeline: 90 days. Do not open public issues for vulnerabilities.
195-
196-
Whirlpool does **not**:
197-
198-
- Execute generated commands -- outputs text for the operator to review
199-
- Scan hosts or perform active reconnaissance
200-
- Make network connections -- runs entirely offline
201-
- Manage implants or maintain persistent access
125+
**Whirlpool does not**: execute generated commands, scan hosts, perform active reconnaissance, make network connections, or manage persistent access—it's purely an offline analysis engine.
202126

203127
---
204128

205-
## License
206-
207-
[MIT](LICENSE) -- Copyright 2026 Real-Fruit-Snacks
129+
**Real-Fruit-Snacks**[All projects](https://real-fruit-snacks.github.io/) · [Security](https://github.com/Real-Fruit-Snacks/Whirlpool/security/advisories) · [License](LICENSE)

docs/assets/logo-dark.svg

Lines changed: 29 additions & 23 deletions
Loading

0 commit comments

Comments
 (0)