Summary
Create the aggregator script that combines signatures from all fetcher scripts, normalizes, deduplicates, and outputs the final combined signature database with manifest.
Depends On: Step 14b (ClamAV fetcher), Step 14c (MalwareBazaar fetcher)
Parent Issue: #12 (Integrate Real-World Malware Signatures)
Context
Individual fetcher scripts produce per-source signature files. The aggregator combines them into a single database that the Rust application can consume.
Key Changes
- Create/update `python_scripts/generate_real_signatures.py`:
- Import output from all fetcher scripts (ClamAV, MalwareBazaar, PhishTank if approved)
- Normalize all entries to unified schema
- Deduplicate on `hash_type + hash + signature_type`
- Always include EICAR test signature (SHA-256, public domain)
- Generate `signatures.db` in the format expected by `DatabaseManager`
- Generate `manifest.json`: version (YYYY.MM.DD), SHA-256 checksum, signature count, sources list
- Add `--output-dir` flag for output directory
- Print summary: per-source counts, total unique signatures, duplicates removed
- Validate output: fail if combined DB has zero signatures
Acceptance Criteria
Summary
Create the aggregator script that combines signatures from all fetcher scripts, normalizes, deduplicates, and outputs the final combined signature database with manifest.
Depends On: Step 14b (ClamAV fetcher), Step 14c (MalwareBazaar fetcher)
Parent Issue: #12 (Integrate Real-World Malware Signatures)
Context
Individual fetcher scripts produce per-source signature files. The aggregator combines them into a single database that the Rust application can consume.
Key Changes
Acceptance Criteria