samitkoya/Agentic-Honey-Pot
GitHub: samitkoya/Agentic-Honey-Pot
一个基于 FastAPI 和 Google Gemini 构建的 AI 蜜罐 API,通过模拟轻信受害者与诈骗分子持续对话,自动检测诈骗类型并提取威胁情报。
Stars: 0 | Forks: 0
# Agentic Honey-Pot
一个 AI 驱动的蜜罐,当诈骗分子主动联系时,它会伪装成一个轻信的受害者。它能让对方一直聊下去,提取有用的情报(如电话号码、UPI ID、银行账户和网络钓鱼链接),并记录所有内容以供分析。
基于 FastAPI 和 Google Gemini 构建。
## 工作原理
当诈骗分子的消息发送至 API 时,会依次发生以下三件事:
1. **诈骗检测** - Gemini 会分析消息和对话历史,判断其是否为诈骗、诈骗类型以及置信度。
2. **情报提取** - 基于 Regex 的提取器会从原始文本中提取银行账号、UPI ID、电话号码、可疑 URL 和已知的诈骗关键词。
3. **回复生成** - Gemini 会生成一条简短且可信的回复,听起来就像一个困惑且轻信他人的人。其目的是让诈骗分子保持参与度,从而透露更多信息。
如果 Gemini 不可用或 API key 配额已耗尽,系统将回退到一组轮换的硬编码 prompt,用于询问付款详情、电话号码和链接。
## 安装说明
**前置条件:** Python 3.10 或更高版本以及 Google Gemini API key。
```
git clone https://github.com/samitkoya/Agentic-Honey-Pot.git
cd Agentic-Honey-Pot
```
根据模板创建一个 `.env` 文件并填入你的密钥:
```
cp .env.example .env
```
```
API_KEY=your-api-key-here
GEMINI_API_KEY=your-gemini-api-key-here
```
安装依赖并启动服务器:
```
pip install -r requirements.txt
python main.py
```
服务器将在 `http://localhost:8000` 启动。
## API 参考
除了 `/` 和 `/health` 之外,每个 endpoint 都需要提供 `X-API-Key` header。
### GET /
返回服务状态和信息。无需身份验证。
**响应:**
```
{
"service": "Agentic Honey-Pot API",
"version": "1.0.0",
"status": "active"
}
```
### POST /api/honeypot
主要 endpoint。发送诈骗分子的消息并获取令人信服的受害者回复。
**请求:**
```
{
"sessionId": "session-abc-123",
"message": {
"sender": "scammer",
"text": "Your account is blocked. Send OTP to reactivate.",
"timestamp": "2026-07-27T12:00:00Z"
},
"conversationHistory": [],
"metadata": {
"channel": "SMS",
"language": "English",
"locale": "IN"
}
}
```
- `sessionId` -- 任意唯一的字符串,用于将同一对话中的消息关联起来。
- `message.sender` -- `"scammer"` 或 `"user"`。
- `message.timestamp` -- ISO-8601 字符串或 epoch 毫秒数。
- `conversationHistory` -- 可选,用于在首次请求时提供上下文的过往消息。
- `metadata` -- 可选的键值对字典,用于提供上下文(例如渠道、语言、区域设置)。
**响应:**
```
{
"status": "success",
"reply": "Oh no, what do I do? Which number should I call to fix this?"
}
```
### GET /api/session/{sessionId}
返回完整的 session 状态,包括提取的情报、诈骗检测结果以及内部 agent 备注。这对于调试和审查系统捕获的内容非常有用。
**响应:**
```
{
"session_id": "session-abc-123",
"message_count": 4,
"scam_detected": true,
"scam_type": "bank_fraud",
"confidence": 0.92,
"callback_sent": false,
"intelligence": {
"bankAccounts": ["1234567890123"],
"upiIds": ["fraud@ybl"],
"phishingLinks": ["https://fake-bank.xyz/verify"],
"phoneNumbers": ["+919876543210"],
"suspiciousKeywords": ["blocked", "otp", "verify"]
},
"agent_notes": [
"Scam detected: bank_fraud (confidence: 0.92)",
"Extracted: 1 accounts, 1 UPIs, 1 links, 1 phones"
]
}
```
### GET /api/rate-limit
检查您的剩余请求数。
**响应:**
```
{
"limits": {
"requests_per_minute": 10,
"requests_per_day": 100
},
"remaining": {
"remaining_per_minute": 9,
"remaining_per_day": 98
}
}
```
### GET /health
如果服务器正在运行,则返回 `{"status": "healthy"}`。无需身份验证。
## 项目结构
```
Agentic-Honey-Pot/
├── main.py # FastAPI app, routes, rate limiter
├── app/
│ ├── agent.py # Gemini-powered response generation
│ ├── config.py # Environment variable loading
│ ├── intelligence_extractor.py # Regex-based intel extraction
│ ├── models.py # Pydantic request/response models
│ ├── scam_detector.py # Gemini-powered scam classification
│ └── session_manager.py # In-memory session state
├── requirements.txt
├── .env.example
├── .gitignore
└── README.md
```
## 速率限制
请求按每个 API key 进行限流:
- 每分钟 10 个请求
- 每天 100 个请求
超出任一限制将返回 `429` 状态码及提示需等待多久的消息。
## 错误
| 状态码 | 含义 |
|--------|---------|
| 401 | 无效或缺失的 `X-API-Key` header |
| 422 | 格式错误的请求体 |
| 429 | 超出速率限制 |
## 许可证
MIT
标签:AV绕过, DLL 劫持, FastAPI, Web API, 大语言模型, 威胁情报, 实时处理, 开发者工具, 蜜罐, 证书利用, 逆向工具