
Automated web screenshot tool for reconnaissance, capturing site visuals, server headers, and identifying default credentials. Supports multiple input formats including Nmap and Nessus XML.
EyeWitness is designed to take screenshots of websites, provide server header info, and identify default credentials if known. Now powered by Chromium browser for better reliability and easier installation.
EyeWitness now uses Python virtual environments for all installations, providing:
eyewitness-venv/ directory to remove everythingeyewitness-venv/ directory with isolated PythonEyeWitness/
├── eyewitness-venv/ # 🔒 Virtual environment (isolated Python packages)
│ ├── bin/activate # Linux/macOS activation script
│ └── Scripts/activate.bat # Windows activation script
├── Python/
│ └── EyeWitness.py # 📜 Main script (runs in virtual environment)
└── setup/ # Setup scripts and requirements
🔥 NEW: EyeWitness now uses Python virtual environments for zero conflicts and bulletproof installation across all platforms!
Note: Docker support is currently in development. Please use native installation options below for now.
Automated setup with Python virtual environment:
# 1. Open PowerShell as Administrator
# 2. Navigate to EyeWitness directory
cd path\to\EyeWitness\setup
# 3. Run the setup script (creates virtual environment)
.\setup.ps1
# 4. Test installation by activating virtual environment
cd ..
eyewitness-venv\Scripts\activate.bat
python Python\EyeWitness.py --single https://example.com
What gets installed:
Production-ready setup with Python virtual environment:
# 1. Navigate to setup directory
cd EyeWitness/setup
# 2. Run the setup script (creates virtual environment)
sudo ./setup.sh
# 3. Test installation by activating virtual environment
cd ..
source eyewitness-venv/bin/activate
python Python/EyeWitness.py --single https://example.com
What gets installed:
🎯 Benefits:
Supported Linux Distributions:
Homebrew-based setup with Python virtual environment:
# 1. Install Chrome via Homebrew
brew install --cask google-chrome
# 2. Navigate to setup directory and run setup
cd EyeWitness/setup
sudo ./setup.sh
# 3. Test installation by activating virtual environment
cd ..
source eyewitness-venv/bin/activate
python Python/EyeWitness.py --single https://example.com
What gets installed:
After running the setup script, activate the virtual environment and run EyeWitness:
🐧 Linux/macOS:
# 1. Activate the virtual environment
source eyewitness-venv/bin/activate
# 2. Run EyeWitness (you're now in the isolated environment)
python Python/EyeWitness.py --single https://example.com
python Python/EyeWitness.py -f urls.txt
python Python/EyeWitness.py -x nmap_scan.xml
python Python/EyeWitness.py -f urls.txt -d /path/to/output
# 3. When finished, deactivate the virtual environment
deactivate
🪟 Windows:
# 1. Activate the virtual environment
eyewitness-venv\Scripts\activate.bat
# 2. Run EyeWitness (you're now in the isolated environment)
python Python\EyeWitness.py --single https://example.com
python Python\EyeWitness.py -f urls.txt
python Python\EyeWitness.py -x nmap_scan.xml
python Python\EyeWitness.py -f urls.txt -d C:\path\to\output
# 3. When finished, deactivate the virtual environment
deactivate
# Activate virtual environment first
source eyewitness-venv/bin/activate # Linux/macOS
eyewitness-venv\Scripts\activate.bat # Windows
# Create a sample config file
python Python/EyeWitness.py --create-config
# Use a config file
python Python/EyeWitness.py -f urls.txt --config ~/.eyewitness/config.json
# Activate virtual environment first
source eyewitness-venv/bin/activate # Linux/macOS
eyewitness-venv\Scripts\activate.bat # Windows
# Validate URLs without taking screenshots
python Python/EyeWitness.py -f urls.txt --validate-urls
# Skip validation (use with caution)
python Python/EyeWitness.py -f urls.txt --skip-validation
# Activate virtual environment first
source eyewitness-venv/bin/activate # Linux/macOS
eyewitness-venv\Scripts\activate.bat # Windows
# Adjust threads based on your system (default: auto-detected)
python Python/EyeWitness.py -f urls.txt --threads 5
# Increase timeout for slow connections
python Python/EyeWitness.py -f urls.txt --timeout 30
# Add delays and jitter
python Python/EyeWitness.py -f urls.txt --delay 2 --jitter 5
# Use proxy
python Python/EyeWitness.py -f urls.txt --proxy-ip 127.0.0.1 --proxy-port 8080
# Custom output directory
python Python/EyeWitness.py -f urls.txt -d /path/to/output
# Resume a previous scan
python Python/EyeWitness.py --resume /path/to/output/ew.db
EyeWitness automatically detects your system resources and adjusts accordingly:
Create a config file to save your preferred settings:
{
"threads": 10,
"timeout": 30,
"delay": 0,
"jitter": 0,
"user_agent": "Custom User Agent",
"proxy_ip": "127.0.0.1",
"proxy_port": 8080,
"output_dir": "./sessions",
"prepend_https": false,
"show_selenium": false,
"resolve": false,
"skip_validation": false,
"results_per_page": 25,
"max_retries": 2
}
Chromium/ChromeDriver not found:
sudo ./setup.sh in setup/ directory.\setup.ps1 as Administrator in setup\ directorysudo ./setup.sh in setup/ directory (after brew install --cask google-chrome)Virtual environment issues:
Connection timeouts:
--timeout 60High memory usage:
--threads 5Permission errors:
All errors now include specific troubleshooting steps. For example:
EyeWitness generates:
report.html - Main report with screenshotsscreens/ - Screenshot imagessource/ - Page source codeew.db - SQLite database for resume capabilityvenv module support (standard in most Python installations)📝 Note: The setup script handles all dependencies automatically. You just need Python 3.7+ and admin privileges.
This fork includes significant modernization:
E-Mail: GetOffensive [@] redsiege [dot] com
EyeWitness is licensed under the GNU General Public License v3.0.