Share
## https://sploitus.com/exploit?id=52B9C6F3-9E80-5D8F-86BE-8EF64B223D43
# VulnFeed โ CVE-to-ExploitDB Mapper
Queries the [NVD API](https://services.nvd.nist.gov/rest/json/cves/2.0) for recent CVEs, cross-references against a local ExploitDB CSV, and outputs matched pairs.
```mermaid
flowchart LR
NVD["NVD API\nservices.nvd.nist.gov"]
Cache["Local JSON Cache\n~/.vulnfeed_cache/\n(24h TTL)"]
EDB["ExploitDB CSV\nlocal file"]
Report["Markdown Report\nvulnfeed_report.md"]
CLI["VulnFeed CLI"]
NVD -- "fetch / search" --> Cache
Cache --> CLI
EDB -- "match" --> CLI
CLI --> Report
```
## Quick start
```bash
pip install -r requirements.txt
# Fetch recent CVEs (last 7 days)
python vulnfeed.py fetch
# Search for a specific CVE
python vulnfeed.py search --cve CVE-2024-12345
# Cross-reference against ExploitDB
python vulnfeed.py match --exploitdb /path/to/exploitdb.csv
# Generate a Markdown report
python vulnfeed.py report
```
## API key (optional)
Set `NVD_API_KEY` in your environment to raise the rate limit from 5 โ 50 requests per 30 seconds:
```bash
export NVD_API_KEY=your-key-here
python vulnfeed.py fetch
```
## Commands
| Command | Description |
|---------|-------------|
| `fetch` | Fetch recent CVEs from NVD API (last 7 days by default) |
| `search --cve CVE-XXXX-XXXXX` | Look up a specific CVE |
| `match --exploitdb ` | Cross-reference cached CVEs against ExploitDB |
| `report` | Generate a Markdown report of matched pairs |
## Caching
NVD responses are cached locally as JSON in `~/.vulnfeed_cache/`. Cache entries expire after 24 hours. Use `--force` to skip the cache and re-fetch.
## Project structure
```
โโโ vulnfeed.py # Main CLI tool
โโโ requirements.txt # Python dependencies
โโโ LICENSE # MIT
โโโ README.md # This file
โโโ docs/
โ โโโ engineering-report.md
โโโ tests/
โโโ test_vulnfeed.py
```