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
```