koensmink/ncsc-advisory-watcher
GitHub: koensmink/ncsc-advisory-watcher
自动监控NCSC安全公告并通过Telegram推送高风险告警的Python工具。
Stars: 0 | Forks: 1
# 🔎 NCSC Advisory Watcher
## 🚀 功能
### ✔ Harvester (CSAF + HTML)
`harvest_ncsc.py` 通过官方 CSAF feed 和 HTML 回退机制获取 advisories。
- 提取 ID、标题、日期、概率/损害、分类、URL
- 每日 CSV 输出至 `output/daily/`
- Metadata 跟踪于 `output/last_run.json`
### ✔ 去重
`dedupe.py` 通过 `output/seen.json` 防止重复通知。
在以下情况下,advisory 将被忽略:
- ID 之前已见过
- 日期之前已处理
- 不符合 severity 过滤条件
### ✔ Severity 过滤
默认情况下,仅发送风险较高的通知:
| 概率 | 损害 | 通知 |
|------|--------|------------|
| H | H | 是 |
| M | H | 是 |
| H | M | 是 |
### ✔ Telegram 通知
`notify_ncsc.py` 通过 Telegram Bot API 发送 HTML 格式的通知。
## 📁 文件结构
```
.
├── scraper.py
├── harvest_ncsc.py
├── notify_ncsc.py
├── dedupe.py
├── output/
│ ├── daily/
│ │ └── YYYY-MM-DD.csv
│ ├── last_run.json
│ └── seen.json
├── .github/
│ └── workflows/
│ └── ncsc.yaml
└── readme.md
```
## 🛠 安装
### 前置条件
- Python **3.11+**
- Dependencies:
```
pip install requests beautifulsoup4 python-dateutil
```
## ⚙ 配置
### Telegram Secrets
| 变量 | 描述 |
|-----------|--------------|
| `TELEGRAM_BOT_TOKEN` | bot 的 API token |
| `TELEGRAM_CHAT_ID` | 通知的目标 chat |
## ▶ 使用
### Harvester + 通知
```
python3 scraper.py
```
### 单独功能
```
python3 harvest_ncsc.py
python3 notify_ncsc.py
```
## 🕒 GitHub Actions Workflow
Workflow: `.github/workflows/ncsc.yaml`
- 在工作日每小时运行
- 周末和晚间运行
- Self-hosted runner
- 提交 CSV/JSON 输出
- Telegram 通知
## 📤 输出
### CSV
`output/daily/.csv`
### Metadata
`output/last_run.json`
### 去重
`output/seen.json`
## 📄 许可证
MIT License.
## 👤 维护者
**Koen Smink**
https://github.com/koensmink
标签:BeautifulSoup, CSAF, CSV, DevSecOps, ESC4, GitHub Actions, GPT, HTTP工具, JSON, NCSC, OSINT, Python, Scheduled Tasks, Self-hosted Runner, Splunk, Telegram 机器人, URL抓取, 上游代理, 威胁情报, 安全监测, 开发者工具, 数据去重, 数据抓取, 无后门, 消息推送, 漏洞告警, 漏洞管理, 网络安全, 自动化运维, 自动笔记, 荷兰国家网络安全中心, 逆向工具, 隐私保护, 风险过滤