NOTE: Coverage reporting section added below (see "Coverage" heading).
A fast, privacy‑respecting command‑line tool to discover the most appropriate abuse / security reporting email address for a given IPv4 address or for the originating sender of an email message (.eml file).
It correlates multiple data sources (WHOIS, DNS, message metadata) and applies sensible heuristics to prefer provider / network abuse contacts over generic or registry addresses. Additionally, it provides structured escalation paths when primary contacts don't respond or when more comprehensive reporting is needed.
- Direct IPv4 lookup (
abusedetector <ip>) .emlmode to extract the originating public sender IP (--eml path/to/message.eml)- Automatic domain fallback when no public IPv4 is present (EML mode continues using sender domain abuse contacts rather than aborting)
- Dual escalation paths - separate email infrastructure and sender hosting abuse reporting
- Smart sender domain extraction with subdomain handling and fallback logic
- Cloud provider detection (AWS, Azure, GCP, etc.) with specialized abuse contacts
- ASN (Autonomous System) lookup via Team Cymru for network owner identification
- Registrar detection via WHOIS for domain-based escalation
- Regional registry support (ARIN, RIPE, APNIC, etc.)
- Reverse DNS hostname analysis
- SOA (Start of Authority) lookup to infer responsible mailbox from RNAME
- WHOIS chain traversal with referral following
- abuse.net enrichment (optional)
- Confidence scoring and filtering heuristics
- Batch mode (machine‑parsable output)
- Clear separation of modules (CLI, WHOIS, DNS, EML parsing, scoring, escalation)
- Fast asynchronous networking (Tokio)
- Minimal external dependencies beyond DNS + WHOIS + regex
From a local clone:
git clone https://github.com/ochronus/abusedetector.git
cd abusedetector
cargo build --release
(Optional) Install into your Cargo bin path:
cargo install --path .
This provides the executable abusedetector on your $PATH.
Look up an address:
abusedetector 46.4.15.45
Parse an email file and automatically extract the sender IP:
abusedetector --eml "samples/message.eml"
Show escalation paths alongside primary contacts:
abusedetector --eml message.eml --show-escalation
Show only escalation paths (useful when primary contacts are unresponsive):
abusedetector --eml message.eml --escalation-only
Get structured JSON output with escalation paths:
abusedetector --eml message.eml --json --show-escalation
Get human-readable YAML output:
abusedetector --eml message.eml --yaml --show-escalation
Generate JSON schema for automation/validation:
abusedetector --generate-schema > schema.json
Verbose (trace) mode to see all internal steps:
abusedetector --verbose=5 8.8.8.8 --show-escalation
Batch (script‑friendly) output:
abusedetector --batch 46.4.15.45
# Example output:
# 46.4.15.45:abuse@example.net
| Option | Description |
|---|---|
<ip> |
Target IPv4 address (omit when using --eml) |
--eml <FILE> |
Use an .eml file; extract originating sender IP (falls back to domain abuse contacts if no public IPv4 found) |
--verbose <n> |
Verbosity: 0 (silent), 1 (errors), 2 (warnings), 5 (trace) |
--json |
Output results in structured JSON format (with schema) |
--yaml |
Output results in structured YAML format (human-readable) |
--show-escalation |
Show escalation paths when primary contacts are found |
--escalation-only |
Always show escalation paths even if no primary contacts found |
--generate-schema |
Generate JSON schema for structured output formats and exit |
--no-use-hostname |
Skip reverse DNS hostname heuristics |
--no-use-abusenet |
Skip abuse.net WHOIS queries |
--no-use-dns-soa |
Skip SOA/RNAME discovery |
--no-use-whois-ip |
Skip IP WHOIS chain traversal |
--show-commands |
Print approximate shell equivalents (whois/dig/host) |
--batch |
Emit single-line ip:addr1,addr2,... |
--no-color |
Disable colored/styled output |
--plain |
Use plain text output instead of styled |
--cache <DIR> |
(Reserved for future implementation) |
--cache-expire <secs> |
(Reserved for future implementation) |
- Direct IP: User-provided IPv4 address
- EML extraction: Sophisticated header parsing with priority order (with domain fallback if no public IPv4 emerges):
- Specialized provider headers (
X-Mailgun-Sending-Ip,X-Spam-source) - Authentication-Results remote IP markers
- SPF client IP information
- Received chain chronological analysis with provider heuristics
- Specialized provider headers (
- Sender domain extraction: From
From:header with intelligent subdomain handling
- Sanity Filtering: Rejects private (RFC1918) and reserved IP ranges
- Reverse DNS (PTR): Obtains hostname for context and domain hints
- SOA Discovery: Walks parent domains and reverse in-addr.arpa; converts RNAME to email
- WHOIS Traversal: Follows referrals; extracts abuse/hostmaster/security emails
- abuse.net Query: Optional curated abuse contact directory lookup
- Normalization & Heuristics: Deduplication, registry filtering, abuse@ prioritization
When --show-escalation or --escalation-only is used, the tool creates dual escalation paths:
Purpose: Stop the email sending abuse at its source
-
Cloud Provider Detection (if applicable)
- AWS, Azure, GCP, etc. via IP range analysis
- Direct abuse forms and emails (e.g.,
abuse@amazonaws.com) - Typically fastest response times
-
ASN Owner Lookup (via Team Cymru)
- Network operator controlling the IP space
- Format: "AS12345 - Provider Name"
- Includes network-specific abuse contacts
-
Domain Registrar (for email service domain)
- WHOIS-based registrar identification
- Registrar abuse contacts (e.g.,
abuse@namecheap.com) - Can suspend domain if ToS violated
-
Regional Internet Registry
- ARIN (Americas), RIPE (Europe), APNIC (Asia-Pacific)
- Final escalation for IP-related abuse
- Bureaucratic but authoritative
Purpose: Stop the business/website abuse behind the emails
-
Cloud Provider Detection (for sender domain)
- DNS resolution of sender domain to cloud IP ranges
- Cloud-specific abuse reporting channels
- Often more effective than registrar reports
-
Domain Registrar (for sender domain)
- Independent WHOIS lookup for sender's actual domain
- Can result in domain suspension
- Critical for stopping ongoing campaigns
-
Regional Registry (for hosting provider)
- Based on hosting IP location
- Provides pressure on hosting providers
The tool implements sophisticated domain extraction and escalation:
Subdomain Intelligence:
- Detects email/marketing subdomains (
em.,mail.,try.,newsletter.) - Automatically escalates to parent domain when appropriate
- Falls back to registrable domain for generic subdomains
Registrable Domain Extraction:
- Handles complex domain structures
- Focuses on the controllable domain level
- Ensures escalation reaches domain owner
Example Flow:
em.withingshealthsolutions.com
↓ (subdomain detected)
withingshealthsolutions.com
↓ (WHOIS lookup)
Registrar: Gandi SAS → abuse@support.gandi.net
- Standard: Primary contacts with optional escalation paths
- Escalation-only: Shows only escalation paths (useful for non-responsive primary contacts)
- JSON: Structured JSON output with comprehensive schema
- YAML: Human-readable structured YAML output
- Batch: Machine-parsable single-line format (legacy)
- Styled: Rich terminal output with icons and formatting
- Plain: Simple text output for integration
The tool provides comprehensive structured output with a published JSON schema:
Schema Features:
- Complete metadata about the analysis performed
- Detailed input information (IP source, sender domain, etc.)
- Rich contact information with confidence scores and sources
- Full escalation paths with levels, organizations, and effectiveness ratings
- Performance statistics and query metrics
- Warnings and result quality assessments
Schema URL: https://raw.githubusercontent.com/ochronus/abusedetector/main/schema/output.json
Example JSON Structure (standard IPv4 case):
{
"metadata": {
"tool_name": "abusedetector",
"version": "0.1.0",
"schema_version": "1.0.0"
},
"input": {
"ip_address": "69.72.43.14",
"sender_domain": "example.com",
"input_method": "eml_file"
},
"primary_contacts": [...],
"escalation_paths": {
"email_infrastructure": {...},
"sender_hosting": {...}
},
"result": {
"success": true,
"result_quality": "excellent"
}
}Domain Fallback JSON Example (no public IPv4 found):
{
"metadata": { "...": "..." },
"input": {
"ip_address": "0.0.0.0",
"ip_source": {
"email_header": {
"header_field": "Domain fallback (no IPv4 found)",
"priority": 0
}
},
"sender_domain": "ventionteams.com",
"input_method": "eml_file"
},
"primary_contacts": [
{
"email": "abuse@ventionteams.com",
"contact_type": "abuse",
"confidence": 3
}
],
"result": {
"success": true,
"result_quality": "good"
}
}X-Mailgun-Sending-Ip- Mailgun's sending IP headerX-Spam-source: IP='x.x.x.x'- Anti-spam system IP detectionsmtp.remote-ip=...- Authentication/ARC headersReceived-SPF: ... client-ip=...- SPF validation resultsX-Originating-IP:- Microsoft/legacy originating IP- Received chain analysis - Chronological parsing with provider keyword bias
- Domain fallback – If no public IPv4 address is discovered after all above steps, the tool switches to sender-domain based abuse contact discovery (no hard failure).
- Extracts domain from
From:header email address - Handles complex email addresses with display names
- Used for building sender hosting escalation path
- Logged for transparency:
"Detected sender domain (from EML): domain.com" - Also powers domain fallback when no public IPv4 can be extracted (e.g. purely IPv6 hop chain or masked infrastructure).
- Private/reserved addresses ignored unless no public alternative exists
- Comprehensive RFC compliance (RFC1918, RFC6598, etc.)
- If no public IPv4 is found at all, the tool now performs domain fallback:
- Generates abuse/security patterns for the sender’s domain (
abuse@,security@, etc.) - Queries abuse.net (if enabled) for that domain
- Performs SOA RNAME traversal on the sender domain
- Continues producing escalation paths (where possible) without aborting.
- Generates abuse/security patterns for the sender’s domain (
abusedetector --eml phishing.eml --show-escalationOutput:
📮 Primary Abuse Contacts
1. abuse@mailgun.com (Email service provider)
📧 EMAIL INFRASTRUCTURE ESCALATION PATH
Level 0: Domain Registrar (NameCheap, Inc.) → abuse@namecheap.com
Level 1: Regional Registry (ARIN) → abuse@arin.net
☁️ SENDER HOSTING ESCALATION PATH
Level 0: Cloud Provider (Amazon Web Services) → abuse@amazonaws.com
Level 1: Domain Registrar (GoDaddy.com, LLC) → abuse@godaddy.com
Level 2: Regional Registry (ARIN) → abuse@arin.net
Interpretation:
- Primary: Report to Mailgun to stop email sending
- Email Infrastructure: If Mailgun unresponsive, escalate to their registrar/registry
- Sender Hosting: Report to AWS to shut down the sender's infrastructure
abusedetector --eml spam.eml --show-escalationOutput:
📮 Primary Abuse Contacts
1. abuse@spammer-domain.com (Self-hosted)
📧 EMAIL INFRASTRUCTURE ESCALATION PATH
Level 0: ASN Owner (AS12345 - BadHosting Inc.) → abuse@badhosting.net
Level 1: Regional Registry (RIPE) → abuse@ripe.net
☁️ SENDER HOSTING ESCALATION PATH
(Same as email infrastructure - self-hosted scenario)
Interpretation:
- Primary: Direct domain contact (likely unresponsive)
- Both paths converge: Target the hosting provider and regional registry
# Get primary contacts for immediate reporting
abusedetector --eml suspicious.eml# Show escalation options when primary contacts don't respond
abusedetector --eml suspicious.eml --escalation-only# Full analysis with all available information
abusedetector --eml suspicious.eml --show-escalation --verbose=5# Process multiple emails automatically
for eml in *.eml; do
echo "=== $eml ==="
abusedetector --eml "$eml" --show-escalation --plain
done# Export to JSON for automation/integration
abusedetector --eml suspicious.eml --json --show-escalation > report.json
# Export to YAML for documentation
abusedetector --eml suspicious.eml --yaml --show-escalation > report.yaml
# Validate against schema
abusedetector --generate-schema > schema.json
# Use with tools like ajv, jsonschema, etc.The tool has been tested against real-world email samples with 100% accuracy in:
- IP Extraction: Correctly identifies sending IPs from various header formats
- Domain Extraction: Accurately extracts sender domains from complex From headers
- Registrar Detection: Verified against manual WHOIS lookups (Gandi, GoDaddy, Amazon Registrar, etc.)
- Cloud Provider Detection: Confirmed AWS, Azure detection via IP range analysis
- Contact Information: All abuse emails verified against authoritative sources
| Source | Purpose | Reliability |
|---|---|---|
| Team Cymru ASN DB | Network owner identification | High - Real-time BGP data |
| Regional Internet Registries | IP allocation information | High - Authoritative |
| Domain WHOIS | Registrar and contact info | High - Registry mandated |
| Cloud Provider IP Ranges | Hosting detection | Medium - Periodically updated |
| abuse.net | Curated abuse contacts | Medium - Community maintained |
| DNS SOA Records | Technical contact inference | Low - Often outdated |
Current exit codes (post IPv6 / domain-fallback refinements):
-
0Successful run:- Normal IP lookup completed
- Domain fallback succeeded (no public IPv4 extracted, but sender domain contacts produced)
- No primary contacts found, but execution completed (message emitted on stderr if verbosity ≥1)
- Target IPv4 is private or reserved (validation stops early; informational error printed, still exits 0)
- Escalation path generation partially failed (tool still returns best-effort data)
- Network / WHOIS / DNS timeouts or partial failures (degraded output only)
-
1Hard failure (no useful result possible):- Invalid IPv4 address format
- Missing required input (neither an IP nor
--emlprovided) - EML file unreadable / missing
- Extracted non-IPv4 address and no sender domain available for fallback
- No public IPv4 found AND no sender domain could be derived (cannot proceed)
Notes:
- Domain fallback (IPv6-only header chains) is treated as a successful path (exit
0). - Non-fatal issues are surfaced on stderr according to
--verboselevel. - Use the structured output (
--json/--yaml) pluswarnings[]for programmatic quality checks.
# See exactly how the tool parses email headers
abusedetector --eml message.eml --verbose=5 --show-commands# For non-responsive primary contacts, skip straight to escalation
abusedetector --eml persistent-spam.eml --escalation-only
# Combine with external tools
abusedetector --eml campaign.eml --batch | while IFS=: read ip contacts; do
echo "Reporting $ip to: $contacts"
# Add your automated reporting logic here
done#!/bin/bash
# Incident response automation example
EML_FILE="$1"
CASE_ID="$2"
echo "=== Case $CASE_ID: Analyzing $EML_FILE ==="
# Get immediate contacts
echo "Immediate contacts:"
abusedetector --eml "$EML_FILE" --plain
echo -e "\n=== Escalation Matrix ==="
# Get escalation paths for follow-up
abusedetector --eml "$EML_FILE" --escalation-only --plain
echo -e "\n=== Technical Details ==="
# Get full technical analysis
abusedetector --eml "$EML_FILE" --show-escalation --verbose=2| Area | Current State | Potential Improvement |
|---|---|---|
| Caching | Not yet implemented | On-disk WHOIS/DNS TTL-aware cache |
| Blacklist | Not implemented | User-provided patterns to exclude emails |
| IPv6 | Not supported | Full AAAA / IPv6 WHOIS + reverse parsing |
| EML Parsing | Heuristic, IPv4 only | Structured parsing & IPv6 + ARC trust scoring |
| Domain Derivation | Simple suffix heuristic | Public Suffix List integration |
| Output Formats | ✅ JSON, YAML, Plain text, Batch | Enhanced automation support |
| Confidence Scoring | Linear increments | Weighted scoring with source reliability models |
| Cloud Providers | Static IP ranges | Dynamic API-based detection |
| Response Tracking | Not implemented | Success/failure tracking for contacts |
| Schema Validation | ✅ JSON Schema provided | Consumer code generation and validation |
- No data persistence (unless future caching enabled)
- Network lookups required (WHOIS, DNS); ensure outbound query policy compliance
- Text-only processing - no code execution risks
- Privacy-preserving design - queries only technical infrastructure data
- Recipient data protection - tool focuses on sender/infrastructure, not recipients
- Avoid running against sensitive/internal addresses unless specifically intended
| Module | Responsibility |
|---|---|
cli.rs |
Argument parsing, verbosity helpers |
escalation.rs |
Dual escalation path generation, cloud detection, ASN lookup |
netutil.rs |
IP classification, reverse DNS, domain heuristics |
whois.rs |
WHOIS + abuse.net lookups, Team Cymru ASN queries |
emails.rs |
Email candidate collection, normalization, heuristics |
eml.rs |
Originating IP extraction, sender domain parsing |
styled_output.rs |
Rich terminal formatting for escalation paths |
main.rs |
Orchestration pipeline, dual-path coordination |
abusedetector 1.2.3.4
# Output: Primary abuse contacts for the IPabusedetector --eml suspicious.eml --show-escalation
# Output: Primary contacts + structured escalation pathsabusedetector --verbose=5 --show-commands 8.8.8.8 --show-escalation
# Output: Complete analysis trace with shell command equivalentsabusedetector --batch --eml message.eml
# Output: ip:contact1,contact2,contact3abusedetector --eml persistent-spam.eml --escalation-only
# Output: Only escalation paths (useful for non-responsive primary contacts)abusedetector --eml message.eml --json --show-escalation > analysis.json
# Output: Complete structured data for integration with other toolsabusedetector --eml message.eml --yaml --show-escalation > report.yaml
# Output: Human-readable structured format for reports and documentation| Symptom | Possible Cause | Action |
|---|---|---|
| No escalation paths shown | Missing --show-escalation flag |
Add --show-escalation or --escalation-only |
| "No sender domain detected" | Complex From header parsing | Use --verbose=5 to see extraction attempts |
| Incorrect registrar | Subdomain vs. parent domain | Tool automatically handles this; check with --verbose=5 |
| No cloud provider detected | IP not in known ranges | This is normal; tool falls back to ASN/registrar |
| No public IPv4 found in EML | Pure IPv6 path / masked headers | Domain fallback triggered; contacts derived from sender domain |
| Empty escalation path | Network lookup failures | Check connectivity; retry with --verbose=5 |
| Only registry addresses | Heuristics filtered direct contacts | Use --verbose=5 to see raw findings |
| Slow responses | WHOIS timeouts or rate limits | Retry; consider future caching implementation |
| Incorrect sender IP in EML | Header injection / atypical routing | Share anonymized sample for improvement |
- Fork & branch: Use descriptive names (feature/escalation-improvements, fix/domain-parsing)
- Write focused commits: Add tests for new escalation logic where possible
- Code quality: Run
cargo fmt && cargo clippy -- -D warningsbefore submitting - Documentation: Update this README for new escalation features
- Testing: Verify against real-world samples (with privacy protection)
- Open PR: Include context, test cases, and edge case considerations
The project uses GitHub Actions CI with a focused test matrix covering:
- Operating Systems: Linux (Ubuntu), macOS, and Windows
- Rust Toolchain: Stable (current release) on all platforms
- MSRV Support: Minimum Supported Rust Version (1.75.0) verification
- Features: All tests run with
--all-featuresfor complete coverage
Platform-Specific Notes:
- Windows: Uses vendored OpenSSL and native-tls for HTTP client compatibility
- macOS: Standard build with system dependencies
- Linux: Full testing including coverage analysis
All pull requests automatically trigger the full matrix, ensuring cross-platform compatibility before merge.
- Cloud provider IP ranges: Keep detection current with provider updates
- Registrar mapping: Add support for more international registrars
- Regional registry contacts: Verify and update contact information
- EML parsing: Improve header extraction for edge cases
- Output formats: JSON/YAML support for automation
- Performance: Caching implementation for repeated lookups
Download the latest release from the GitHub Releases page. Choose the appropriate binary for your platform:
- Linux x86_64:
abusedetector-linux-x86_64(glibc) orabusedetector-linux-x86_64-musl(static) - Linux ARM64:
abusedetector-linux-aarch64 - macOS x86_64:
abusedetector-macos-x86_64(Intel) - macOS ARM64:
abusedetector-macos-aarch64(Apple Silicon) - Windows x86_64:
abusedetector-windows-x86_64.exe
Installation:
# Linux/macOS
curl -L -o abusedetector https://github.com/your-org/abusedetector/releases/latest/download/abusedetector-linux-x86_64
chmod +x abusedetector
sudo mv abusedetector /usr/local/bin/
# Windows (PowerShell)
Invoke-WebRequest -Uri "https://github.com/your-org/abusedetector/releases/latest/download/abusedetector-windows-x86_64.exe" -OutFile "abusedetector.exe"Verify checksums (recommended for security):
# Download checksum file and verify
curl -L -o abusedetector.sha256 https://github.com/your-org/abusedetector/releases/latest/download/abusedetector-linux-x86_64.sha256
shasum -c abusedetector.sha256The project uses automated GitHub Actions workflows to build and publish releases for all supported platforms.
Release Process:
-
Test locally using the provided script:
./scripts/test-release.sh
-
Update version in
Cargo.tomland commit changes -
Create and push a git tag:
git tag v0.2.0 git push origin v0.2.0
-
GitHub Actions automatically:
- Builds binaries for all platforms (Linux, macOS, Windows)
- Generates SHA256 checksums for security verification
- Creates a GitHub release with all artifacts
- Uploads binaries and checksums as release assets
Supported Build Targets:
x86_64-unknown-linux-gnu(Linux x86_64 with glibc)x86_64-unknown-linux-musl(Linux x86_64 static binary)aarch64-unknown-linux-gnu(Linux ARM64)x86_64-apple-darwin(macOS Intel)aarch64-apple-darwin(macOS Apple Silicon)x86_64-pc-windows-msvc(Windows x86_64)
Manual Release Testing:
# Test specific target
./scripts/test-release.sh --target x86_64-unknown-linux-musl
# Test multiple targets
./scripts/test-release.sh --target x86_64-apple-darwin --target aarch64-apple-darwin
# Skip tests for faster builds
./scripts/test-release.sh --skip-tests
# Clean build
./scripts/test-release.sh --cleanThe release workflow ensures consistent, reproducible builds across all platforms with proper security checksums.
The project includes automated coverage reporting using cargo-tarpaulin.
Artifacts produced:
lcov.info(LCOV format)cobertura.xml(Cobertura XML)
cargo install cargo-tarpaulin --locked
cargo tarpaulin --timeout 120 --out Html --out Lcov --workspace
# HTML report: ./tarpaulin-report
# LCOV file: lcov.infomacOS users: Use Docker for best results:
docker run --rm -v "$PWD":/work -w /work rust:latest bash -lc \
"cargo install cargo-tarpaulin --locked && cargo tarpaulin --timeout 120 --out Lcov"Current test coverage emphasizes:
- Escalation logic: Path generation, dual-path coordination
- EML parsing: IP extraction, domain parsing, header priority
- Domain handling: Subdomain detection, registrable domain extraction
- Normalization: Contact filtering, deduplication
- Error handling: Network timeouts, malformed data
Network-dependent tests are limited to maintain deterministic runs.
- JSON output mode for better automation integration
- Efficient on-disk cache with TTL respect
- Configuration file support for custom escalation preferences
- IPv6 support for modern infrastructure
- Public Suffix List integration for accurate domain parsing
- Response tracking to learn effective escalation paths
- Enhanced cloud detection with API-based verification
- Confidence scoring improvements with weighted reliability
- Machine learning models for contact effectiveness prediction
- Integration APIs for threat intelligence platforms
- Real-time abuse feed integration for proactive blocking
- Multi-language support for international registrars
(Choose and state a license here — e.g. MIT / Apache-2.0. Add a LICENSE file to formalize.)
This tool provides best‑effort discovery of abuse contacts and escalation paths. While thoroughly tested for accuracy, always validate chosen contacts via authoritative sources (RIR portals, provider abuse pages) before escalation, especially for legal or urgent incident reporting.
The dual escalation paths are designed to maximize reporting effectiveness, but response times and effectiveness vary by provider, region, and abuse type. Use escalation paths when primary contacts are unresponsive, but allow appropriate time for initial responses (typically 2-3 business days).
- Team Cymru for providing the ASN lookup service
- Regional Internet Registries (ARIN, RIPE, APNIC) for maintaining accessible WHOIS data
- Cloud providers for maintaining clear abuse reporting channels
- Open source community for DNS and WHOIS infrastructure libraries
# Basic operations
abusedetector 1.2.3.4 # Simple IP lookup
abusedetector --eml mail.eml # Email analysis
abusedetector --batch 1.2.3.4 # Script-friendly output
# Structured output formats
abusedetector --eml mail.eml --json # JSON output
abusedetector --eml mail.eml --yaml # YAML output
abusedetector --generate-schema # Generate JSON schema
# Escalation paths
abusedetector --eml mail.eml --show-escalation # Primary + escalation
abusedetector --eml mail.eml --escalation-only # Escalation only
abusedetector --eml mail.eml --json --show-escalation # JSON with escalation
abusedetector --eml ipv6_only.eml # Falls back to domain contacts (no IPv4)
# Debugging
abusedetector --verbose=5 1.2.3.4 # Full trace
abusedetector --show-commands 1.2.3.4 # Show shell equivalents
# Disable features
abusedetector --no-use-whois-ip 1.2.3.4 # Skip IP WHOIS
abusedetector --no-use-abusenet 1.2.3.4 # Skip abuse.net
abusedetector --no-color 1.2.3.4 # Plain outputThe examples/ directory contains practical integration examples:
Python script for validating and processing abusedetector JSON output:
# Validate output against schema
python validate_json.py analysis.json
# Generate formatted abuse report
python validate_json.py --report analysis.json
# Extract contact emails for automation
python validate_json.py --contacts-only analysis.jsonBash script for integrating into incident response workflows:
# Process suspicious emails automatically
./automated_reporting.sh --output-dir /tmp/reports *.eml
# Dry run with verbose output
./automated_reporting.sh --dry-run --verbose suspicious/*.emlSOC/Incident Response:
# Generate comprehensive analysis for case management
abusedetector --eml incident.eml --json --show-escalation > case_analysis.json
python validate_json.py --report case_analysis.json > case_summary.txtThreat Intelligence:
# Extract IOCs for threat intelligence platforms
contacts=$(python validate_json.py --contacts-only analysis.json)
echo "Threat indicators: IP, domain, contacts: $contacts"Compliance Reporting:
# Generate audit-ready documentation
abusedetector --eml evidence.eml --yaml --show-escalation > compliance_report.yamlSee examples/README.md for detailed integration guides, configuration examples, and best practices.
Ready to report abuse effectively? The tool provides both immediate contacts and comprehensive escalation strategies for maximum impact.
Feel free to open issues for edge cases, false positives, or enhancement ideas.