Cross-platform tool to scrape malware domains, IOCs, and C2 IPs from various feeds for easy blacklisting.
Note: The Python and Bash versions have been deprecated. This project now uses Rust exclusively for better performance, security, and distribution.
Windows:
malscraper-x86_64-pc-windows-msvc.exe from Releasesmalscraper.exe and runmacOS:
malscraper-x86_64-apple-darwin or malscraper-aarch64-apple-darwin from Releaseschmod +x malscraper-*./malscraper-*macOS (as a real app):
malscraper-aarch64-apple-darwin.app.tar.gz (Apple Silicon) or malscraper-x86_64-apple-darwin.app.tar.gz (Intel) from Releasestar xzf malscraper-*.app.tar.gzmalScraper.app into /ApplicationsLinux:
malscraper-x86_64-unknown-linux-gnu or malscraper-aarch64-unknown-linux-gnu from Releaseschmod +x malscraper-*./malscraper-*Prerequisites:
Build:
cd rust
cargo build --release
The binary will be at rust/target/release/malscraper (or .exe on Windows).
macOS — build for Apple Silicon (ARM), Intel, or universal:
A helper script is provided for explicit target selection:
cd rust
./build.sh # native build (ARM on Apple Silicon, Intel on x86_64 Macs)
./build.sh --arm # force aarch64-apple-darwin (Apple Silicon)
./build.sh --x86_64 # force x86_64-apple-darwin (Intel)
./build.sh --universal # universal binary (ARM + Intel via lipo)
The script auto-installs the requested rustup target if missing. Output binaries land in
rust/target/<triple>/release/malscraper, and the universal binary at
rust/target/universal-apple-darwin/release/malscraper.
You can also invoke cargo directly:
rustup target add aarch64-apple-darwin
cargo build --release --target aarch64-apple-darwin
macOS — build a .app bundle:
To produce a double-clickable malScraper.app (Finder/Launchpad/Spotlight launchable, opens a Terminal window running the TUI):
cd rust
./build.sh --app # native architecture
./build.sh --app-arm # aarch64-apple-darwin
./build.sh --app-x86_64 # x86_64-apple-darwin
./build.sh --app-universal # universal (ARM + Intel)
The bundle is written to rust/dist/malScraper.app. The build script
ad-hoc codesigns it so it runs on Apple Silicon, but the bundle is not
notarized — first launch from Finder will show “Apple cannot verify…”, which
the user clears by right-click → Open once.
To install:
cp -R rust/dist/malScraper.app /Applications/
To rebuild only the bundle from an already-built binary:
./scripts/bundle-macos.sh target/aarch64-apple-darwin/release/malscraper
The icon is generated from rust/assets/icon.png (the rynmon.ie brand
asterisk on a dark rounded-rect background, 512×512 RGBA). The vector
source lives at rust/assets/icon.svg. To upgrade Retina sharpness, drop
a 1024×1024 RGBA PNG at rust/assets/icon.png and rebuild — the bundler
prefers PNG over the legacy icon.ico.
STATS) - View comprehensive metrics and analytics for all reportsSEARCH, FILTER) - Search across reports with regex supportCOMPARE) - Compare two reports side-by-side to see differencesDIFF, CHANGES) - Track changes over time and identify new indicatorsDEDUPE, UNIQUE) - Remove duplicates across all reports and create unified master listsVALIDATE) - Validate IP addresses and domains, check if domains are still activeWHITELIST) - Whitelist false positives and exclude known-good indicatorsEXPORT) - Export to multiple formats:
FEEDS) - Add, list, and remove your own custom feed URLsmalscraper quick-scan --output-dir ./reports
malscraper export iptables payload
malscraper search malware.com
UPDATE, INSTALL) - Automatically download and install updates with platform detectionmalscraper
Available commands:
Basic Operations:
FULL or FULL-SCAN - Complete scan of all feedsQUICK or QUICK-SCAN - Quick scan (most recent 100 domains)OPEN or REOPEN - Open a previously downloaded reportUPDATE - Check for and install updatesHELP - Show help menuTUTORIAL - Show tutorialQUIT or EXIT - Exit the applicationAnalysis Features:
STATS - View statistics dashboardSEARCH <term> - Search for specific terms across reportsFILTER [feed_type] [pattern] - Filter reports by criteriaCOMPARE <report1> <report2> - Compare two reportsDIFF or CHANGES - Compare current scan with previous scanData Management:
DEDUPE or UNIQUE - Deduplicate all reports into master listVALIDATE <report> - Validate IP addresses and domainsWHITELIST ADD <indicator> [reason] - Add to whitelistWHITELIST LIST - List all whitelisted indicatorsWHITELIST REMOVE <indicator> - Remove from whitelistExport & Integration:
EXPORT <format> <report> - Export to firewall/SIEM formats
iptables, windows, pfsense, json, csv, stix, taxiipayload, amp, c2, hex, haus, phish, top100Customization:
FEEDS ADD <url> [name] [description] - Add custom feedFEEDS LIST - List all custom feedsFEEDS REMOVE <name_or_url> - Remove custom feedTAB for command auto-completion!For automation and scripting, use CLI arguments:
# Quick scan with custom output directory
malscraper quick-scan --output-dir ./reports
# Full scan
malscraper full-scan --output-dir ./reports
# Export to iptables format
malscraper export iptables payload
# Search across reports
malscraper search malware.com
# View statistics
malscraper stats
# See all available commands
malscraper --help
Reports are saved to:
%USERPROFILE%\Documents\malScraper\~/Desktop/malScraper/Some reports (especially PayloadReport.txt) may be flagged by antivirus software because they contain known malware indicators. These files are for research and defensive use only.
If you were using the Python or Bash versions:
# Clone the repository
git clone https://github.com/rynmon/malScraper.git
cd malScraper/rust
# Build
cargo build --release
# Run tests
cargo test
# Format code
cargo fmt
# Lint
cargo clippy
| Metric | Python | Rust |
|---|---|---|
| Startup Time | ~1-2s | <100ms |
| Download Speed | Baseline | 2-3x faster |
| Memory Usage | ~50-100MB | ~10-20MB |
| Binary Size | N/A | ~5-10MB |
| Dependencies | Python + packages | Single binary |
Contributions are welcome! Please feel free to:
Note: Python and Bash versions are deprecated. Please use the Rust version for the best experience and continued support.