βοΈ Configuration Guide β
ipcrawler uses TOML configuration files to customize behavior, tool preferences, and plugin settings. This guide covers all configuration options and how to customize ipcrawler for your specific needs.
π Configuration Files β
Default Configuration Locations β
bash
# Global configuration (system-wide)
/etc/ipcrawler/config.toml
# User configuration (recommended)
~/.config/ipcrawler/config.toml
# Project-specific configuration
./ipcrawler.toml
# Environment variable override
export IPCRAWLER_CONFIG=/path/to/custom/config.toml
Configuration Priority β
ipcrawler loads configuration in this order (later files override earlier ones):
- Global configuration (
/etc/ipcrawler/config.toml
) - User configuration (
~/.config/ipcrawler/config.toml
) - Project configuration (
./ipcrawler.toml
) - Environment variable (
$IPCRAWLER_CONFIG
) - Command-line arguments (highest priority)
π§ Basic Configuration β
Create Your First Config β
bash
# Create config directory
mkdir -p ~/.config/ipcrawler/
# Create basic configuration
cat > ~/.config/ipcrawler/config.toml << 'EOF'
# ipcrawler configuration file
verbose = 1
max-scans = 50
heartbeat = 30
[output]
directory = "~/ipcrawler-results"
format = "html"
[timing]
delay = 1
timeout = 300
EOF
Global Settings β
toml
# ~/.config/ipcrawler/config.toml
# General settings
verbose = 2 # Verbosity level (0-3)
max-scans = 50 # Maximum concurrent scans
heartbeat = 30 # Progress update interval (seconds)
safe-only = false # Only run non-intrusive scans
manual-commands = true # Generate manual command suggestions
# Output settings
[output]
directory = "~/ipcrawler-results" # Default output directory
format = "html" # Default report format (html/pdf/json)
screenshots = true # Enable screenshots
organize-by-date = true # Organize results by date
# Timing settings
[timing]
delay = 1 # Delay between requests (seconds)
timeout = 300 # Default timeout (seconds)
profile = "normal" # Timing profile (paranoid/polite/normal/aggressive)
# Network settings
[network]
user-agent = "ipcrawler/1.0" # Default User-Agent
max-redirects = 5 # Maximum HTTP redirects
ipv6 = false # Enable IPv6 scanning
π Plugin Configuration β
Web Enumeration Plugins β
toml
# Directory busting configuration
[dirbuster]
tool = "feroxbuster" # Preferred tool (feroxbuster/gobuster/dirb)
threads = 20 # Number of threads
wordlist = [
"/usr/share/wordlists/dirb/common.txt",
"/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt"
]
extensions = ["php", "html", "js", "txt", "asp", "aspx"]
status-codes = [200, 204, 301, 302, 307, 401, 403, 405]
timeout = 10
follow-redirects = true
extract-links = true
[nikto]
enabled = true
timeout = 600
tuning = "1,2,3,4,5,6,7,8,9,0" # All tests
format = "txt"
[whatweb]
enabled = true
aggression = 3 # Aggression level (1-4)
verbose = true
[wpscan]
enabled = true
api-token = "" # WPVulnDB API token (optional)
enumerate = ["u", "p", "t", "tt"] # Users, plugins, themes, timthumbs
random-user-agent = true
Network Service Plugins β
toml
[nmap]
scripts = [
"default",
"vuln",
"safe"
]
version-detection = true
os-detection = true
aggressive = false
timing = "T3"
[smb]
enabled = true
shares = true
users = true
policies = true
null-session = true
[enum4linux]
enabled = true
all = true
verbose = true
[dns]
enabled = true
wordlist = "/usr/share/wordlists/dnsrecon/subdomains-top1mil-5000.txt"
axfr = true
zone-transfer = true
Database Plugins β
toml
[mysql]
enabled = true
brute-force = false
common-passwords = [
"", "root", "admin", "password", "mysql"
]
[mssql]
enabled = true
brute-force = false
common-passwords = [
"", "sa", "admin", "password"
]
[postgres]
enabled = true
brute-force = false
common-passwords = [
"", "postgres", "admin", "password"
]
π― Service-Specific Configuration β
HTTP/HTTPS Services β
toml
[http]
# General HTTP settings
user-agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36"
timeout = 30
follow-redirects = true
verify-ssl = false
proxy = "" # HTTP proxy (optional)
# Directory enumeration
[http.dirbuster]
tool = "feroxbuster"
wordlists = [
"/usr/share/wordlists/dirb/common.txt",
"/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt"
]
extensions = ["php", "html", "asp", "aspx", "js", "txt"]
threads = 20
depth = 4
size-limit = "10M"
# Technology detection
[http.tech-detection]
whatweb = true
wappalyzer = true
builtwith = false
# CMS detection
[http.cms]
wordpress = true
joomla = true
drupal = true
SSH Services β
toml
[ssh]
enabled = true
banner-grab = true
algorithm-scan = true
brute-force = false
common-usernames = [
"root", "admin", "administrator", "user", "guest"
]
key-exchange = true
FTP Services β
toml
[ftp]
enabled = true
anonymous-login = true
banner-grab = true
brute-force = false
bounce-scan = false
directory-listing = true
π Advanced Configuration β
Performance Tuning β
toml
[performance]
# Thread and process limits
max-threads = 100 # Maximum threads per plugin
max-processes = 10 # Maximum concurrent processes
memory-limit = "2G" # Memory limit per process
# Rate limiting
requests-per-second = 10 # Global rate limit
burst-size = 20 # Burst request allowance
# Caching
enable-cache = true
cache-duration = 3600 # Cache TTL in seconds
cache-directory = "~/.cache/ipcrawler"
Proxy Configuration β
toml
[proxy]
# HTTP proxy
http = "http://127.0.0.1:8080"
https = "https://127.0.0.1:8080"
# SOCKS proxy
socks5 = "socks5://127.0.0.1:1080"
# Proxy authentication
username = ""
password = ""
# Proxy rules
use-for = ["http", "https"] # Services to proxy
bypass = ["127.0.0.1", "localhost"] # Bypass list
Wordlist Management β
toml
[wordlists]
# Default wordlist directory
base-directory = "/usr/share/wordlists"
# Directory enumeration wordlists
[wordlists.directories]
small = "/usr/share/wordlists/dirb/small.txt"
common = "/usr/share/wordlists/dirb/common.txt"
medium = "/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt"
large = "/usr/share/wordlists/dirbuster/directory-list-2.3-big.txt"
# Subdomain wordlists
[wordlists.subdomains]
small = "/usr/share/wordlists/dnsrecon/subdomains-top1mil-5000.txt"
medium = "/usr/share/wordlists/dnsrecon/subdomains-top1mil-20000.txt"
# Username wordlists
[wordlists.usernames]
common = "/usr/share/wordlists/metasploit/unix_users.txt"
windows = "/usr/share/wordlists/metasploit/windows_users.txt"
# Password wordlists
[wordlists.passwords]
common = "/usr/share/wordlists/rockyou.txt"
top1000 = "/usr/share/wordlists/metasploit/password.lst"
π Reporting Configuration β
Report Templates β
toml
[reports]
# Default report settings
default-format = "html"
include-screenshots = true
include-raw-output = false
include-manual-commands = true
# HTML report settings
[reports.html]
template = "default" # Template name
theme = "dark" # Theme (dark/light)
include-charts = true
include-timeline = true
logo = "" # Custom logo path
# PDF report settings
[reports.pdf]
template = "executive" # Template type
page-size = "A4"
margins = "2cm"
include-toc = true
watermark = ""
# JSON export settings
[reports.json]
pretty-print = true
include-metadata = true
schema-version = "1.0"
Screenshot Configuration β
toml
[screenshots]
enabled = true
tool = "chromium" # Browser (chromium/firefox)
resolution = "1920x1080"
timeout = 30
full-page = true
format = "png" # Format (png/jpg/pdf)
quality = 90 # JPEG quality (1-100)
π οΈ Custom Plugin Development β
Plugin Template β
toml
[plugins.custom-scanner]
enabled = true
name = "Custom Scanner"
description = "My custom enumeration plugin"
tags = ["custom", "safe"]
category = "service"
# Plugin-specific settings
command = "/path/to/my-script.sh {target} {port}"
timeout = 300
output-parser = "regex"
output-pattern = "Found: (.*)"
# Dependencies
requires = ["my-tool", "another-tool"]
install-command = "apt install my-tool"
Environment Variables β
bash
# Override configuration file
export IPCRAWLER_CONFIG=/path/to/config.toml
# Override specific settings
export IPCRAWLER_VERBOSE=2
export IPCRAWLER_MAX_SCANS=25
export IPCRAWLER_OUTPUT_DIR=/tmp/scans
# Plugin-specific overrides
export IPCRAWLER_DIRBUSTER_THREADS=30
export IPCRAWLER_NIKTO_TIMEOUT=900
π Security Configuration β
API Keys and Credentials β
toml
[credentials]
# Store sensitive data securely
shodan-api-key = ""
censys-api-id = ""
censys-api-secret = ""
virustotal-api-key = ""
wpscan-api-token = ""
# Database credentials (use with caution)
[credentials.databases]
# mysql = "user:pass@host:port"
# postgres = "user:pass@host:port"
Safe Mode Configuration β
toml
[safe-mode]
# Disable potentially intrusive plugins
disabled-plugins = [
"brute-force",
"exploit",
"dos-test"
]
# Rate limiting in safe mode
max-requests-per-second = 5
delay-between-requests = 2
# Stealth options
randomize-user-agents = true
rotate-source-ports = true
π¨ Troubleshooting Configuration β
Debug Configuration β
toml
[debug]
# Logging settings
log-level = "DEBUG" # CRITICAL/ERROR/WARNING/INFO/DEBUG
log-file = "~/.config/ipcrawler/debug.log"
max-log-size = "10M"
log-rotation = true
# Plugin debugging
plugin-debug = ["dirbuster", "nikto"]
save-raw-output = true
verbose-errors = true
Validation β
bash
# Validate configuration file
ipcrawler --validate-config
# Show current configuration
ipcrawler --show-config
# Test plugin configuration
ipcrawler --test-plugin dirbuster
π Configuration Examples β
OSCP Exam Configuration β
toml
# OSCP-optimized configuration
verbose = 2
max-scans = 25
safe-only = true
manual-commands = true
[output]
directory = "~/oscp-scans"
format = "html"
organize-by-date = true
[timing]
profile = "polite"
delay = 2
[dirbuster]
wordlist = ["/usr/share/wordlists/dirb/common.txt"]
threads = 10
extensions = ["php", "txt", "html"]
[reports.html]
include-manual-commands = true
include-charts = false
theme = "light"
CTF Competition Configuration β
toml
# CTF-optimized configuration
verbose = 1
max-scans = 100
manual-commands = false
[timing]
profile = "aggressive"
delay = 0
[dirbuster]
threads = 50
wordlist = [
"/usr/share/wordlists/dirb/big.txt",
"/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt"
]
extensions = ["php", "html", "js", "txt", "asp", "aspx", "jsp"]
[nmap]
aggressive = true
timing = "T4"
π‘ Configuration Tips β
- Start Simple: Begin with basic configuration and add complexity as needed
- Test Changes: Always validate configuration changes before important scans
- Environment-Specific: Use different configs for different environments (OSCP, CTF, professional)
- Security First: Never store sensitive credentials in plain text configs
- Performance Tuning: Adjust thread counts and delays based on your system and target tolerance
Ready to start scanning? Return to the Usage Guide or explore the Overview for more information about ipcrawler's capabilities.