piotrmaliga-git/graduate-work
GitHub: piotrmaliga-git/graduate-work
一个用于钓鱼邮件检测的大语言模型对比分析平台,包含 FastAPI 后端、Angular 前端及硕士论文文档。
Stars: 0 | Forks: 0
# 网络钓鱼邮件分析器 + 硕士论文
本仓库包含一个关于检测电子邮件网络钓鱼的完整工程项目。
其中包括应用程序部分(FastAPI 后端 + Angular 前端),用于分析邮件内容并比较多个 LLM 模型的预测结果,以及用 LaTeX 准备的硕士论文科学部分。
该项目既支持实际的安全场景测试(分析单个邮件),也支持数据集上的比较实验以及模型结果报告的生成。
## 目录
- [网络钓鱼邮件分析器 + 硕士论文](#phishing-email-analyzer--praca-magisterska)
- [目录](#spis-treści)
- [仓库内容](#zawartość-repozytorium)
- [环境要求](#wymagania)
- [快速开始 (Windows / PowerShell)](#szybki-start-windows--powershell)
- [1) 后端](#1-backend)
- [2) 前端](#2-frontend)
- [配置 `.env` (后端)](#konfiguracja-env-backend)
- [应用架构](#architektura-aplikacji)
- [后端 API](#api-backendu)
- [`GET /`](#get-)
- [`POST /analyze`](#post-analyze)
- [项目中使用的模型](#modele-użyte-w-projekcie)
- [当前状态与限制](#aktualny-status-i-ograniczenia)
- [测试与脚本](#testowanie-i-skrypty)
- [后端:模型比较](#backend-porównanie-modeli)
- [后端:数据准备](#backend-przygotowanie-danych)
- [前端:测试与质量](#frontend-testy-i-jakość)
- [前端:E2E Playwright](#frontend-e2e-playwright)
- [输入数据格式 (`data/data.json`)](#format-danych-wejściowych-datadatajson)
- [报告](#raporty)
- [应用截图](#zrzuty-ekranu-aplikacji)
- [主界面](#ekran-główny)
- [分析结果](#wynik-analizy)
- [移动端视图(可选)](#widok-mobilny-opcjonalnie)
- [硕士论文部分](#część-pracy-magisterskiej)
- [操作提示](#wskazówki-operacyjne)
## 仓库内容
```
.
|-- phishing-email-analyzer/
| |-- backend/ # API FastAPI, integracje modeli, skrypty testowe
| `-- frontend/ # aplikacja Angular (UI + testy)
|-- data/
| `-- data.json # zbiór wiadomości do testów
|-- reports/ # raporty JSON z uruchomień modeli
`-- forma_pisemna/ # LaTeX: treść pracy, bibliografia, grafiki
```
## 环境要求
- Python 3.13+
- Node.js 20+
- npm 11+
- (可选)用于本地 HF/Bielik 模型的 CUDA GPU
## 快速开始 (Windows / PowerShell)
### 1) 后端
```
cd "phishing-email-analyzer/backend"
py -3.13 -m pip install -r requirements.txt
uvicorn main:app --reload --host 127.0.0.1 --port 8000
```
后端将运行在 `http://localhost:8000`。
### 2) 前端
在新的终端中:
```
cd "phishing-email-analyzer/frontend"
npm install
npm start
```
前端默认运行在 `http://localhost:4200`,并与运行在 `http://localhost:8000` 的后端通信。
## 配置 `.env` (后端)
在 `phishing-email-analyzer/backend` 目录下创建一个 `.env` 文件,仅包含您想使用的模型的密钥。
```
OPENAI_API_KEY=...
GOOGLE_API_KEY=...
LLAMA_API_KEY=...
HF_TOKEN=...
# 可选
MISTRAL_7B_MODEL_ID=mistralai/Mistral-7B-Instruct-v0.3
LLAMA_CLASSIFY_TIMEOUT_SEC=30
LLAMA_CLASSIFY_MAX_RETRIES=0
LLAMA_CLASSIFY_RETRY_SLEEP_SEC=1.5
```
密钥映射:
| 变量 | 用途 |
|---|---|
| `OPENAI_API_KEY` | `gpt-4.1` |
| `GOOGLE_API_KEY` | `gemini-2.5-pro` |
| `LLAMA_API_KEY` | `llama-cloud` |
| `HF_TOKEN` | `mistral-7b` 以及来自 Hugging Face 的本地模型 |
## 应用架构
- 后端(`backend/main.py`)提供 `POST /analyze` endpoint。
- 后端从 `backend/models` 动态加载模型适配器。
- 前端(`frontend/src/app`)通过 `ApiService` 将 payload 发送到后端。
- 测试数据存储在 `data/data.json` 中。
- 模型比较报告存放在 `reports/*.json` 中。
## 后端 API
### `GET /`
返回基本信息和可用模型列表。
### `POST /analyze`
示例请求:
```
{
"email_text": "Treść maila...",
"model_name": "gpt-4.1",
"sender": "Bank ",
"title": "Potwierdź dane"
}
```
示例响应:
```
{
"model": "gpt-4.1",
"prediction": "phishing",
"reason": "...",
"timestamp": "2026-03-11T22:17:38.123456",
"response_time_ms": 842.31,
"sender": "Bank ",
"title": "Potwierdź dane"
}
```
允许的分类标签:`phishing` 和 `legit`。
## 项目中使用的模型
| 模型 ID | 简介 |
|---|---|
| `gpt-4.1` | OpenAI 模型,用作强有力的质量基准;通常能提供最详尽的决策理由。 |
| `gemini-2.5-pro` | Google 模型,用于分类和决策解释;适合在类似的提示场景下与 GPT 进行对比。 |
| `mistral-7b` | 通过 `transformers` 本地运行的开放模型;允许测试无云服务的方案,但硬件要求更高。 |
| `llama-cloud` | 通过 Llama Cloud 服务基于 `phishing`/`legit` 规则进行的分类;API 集成便捷,支持超时控制。 |
| `bielik-2-4bit` | 计划中的本地变体(4-bit Bielik 11B v2.2),在波兰语模型背景下具有重要意义;目前该适配器尚未添加到仓库中。 |
## 当前状态与限制
- `backend/main.py` 和 `backend/test_all_models.py` 引用了 `backend/models/bielik2_4bit.py` 文件,但该文件目前不在仓库中。
- 实际上,这意味着运行后端和测试脚本需要:
1. 添加缺失的适配器 `bielik2_4bit.py`,或者
2. 在代码中暂时禁用对 `bielik-2-4bit` 模型的支持。
- 在没有 GPU 的情况下,大型模型(`mistral-7b`, Bielik)的本地 inference 可能会非常慢或不稳定。
## 测试与脚本
### 后端:模型比较
```
cd "phishing-email-analyzer/backend"
# 默认:10 samples,所有 models
py -3.13 test_all_models.py
# 选定的 models
py -3.13 test_all_models.py --models gpt-4.1,gemini-2.5-pro,llama-cloud
# samples 数量 + seed
py -3.13 test_all_models.py --samples 50 --seed 7
```
### 后端:数据准备
```
cd "phishing-email-analyzer/backend"
# 默认:shuffle + renumber
py -3.13 shuffle_data.py
# 仅 shuffle
py -3.13 shuffle_data.py --shuffle
# 仅 renumber
py -3.13 shuffle_data.py --renumber
```
### 前端:测试与质量
```
cd "phishing-email-analyzer/frontend"
npm test
npm run test:ci
npm run test:coverage
npm run lint
npm run format
```
### 前端:E2E Playwright
```
cd "phishing-email-analyzer/frontend"
npx playwright install
npm run e2e
npm run e2e:ui
npm run e2e:headed
npm run e2e:report
```
## 输入数据格式 (`data/data.json`)
每条记录应包含以下字段:
- `id` (int)
- `title` (string)
- `sender` (string)
- `text` (string)
- `ground_truth` (`phishing` 或 `legit`)
- `category` (string)
## 报告
`reports/` 文件夹存储来自模型运行的 JSON 报告(例如 `gpt_4.1_report_*.json`, `mistral_report_*.json`, `bielik2_(4bit)_report_*.json`)。
## 应用截图
在下方插入前端截图,向读者展示应用外观。
最方便的方式是将文件保存在 `forma_pisemna/images/` 或 `phishing-email-analyzer/frontend/public/` 目录中。
### 主界面
简介:邮件分析表单视图(内容字段,模型选择,分析按钮)。

### 分析结果
简介:分类结果示例(`phishing`/`legit`),模型理由及响应时间。

### 移动端视图(可选)
简介:界面在小屏幕上的响应式表现。

## 硕士论文部分
LaTeX 文档位于 `forma_pisemna/`:
- `main.tex` - 文档主文件
- `claims_page.tex`, `title_page.tex`, `settings.tex`
- `bibliografia.bib`
- `images/`
## 操作提示
- 先启动后端,再启动前端。
- 如果前端无法连接 API,请检查后端是否在 `127.0.0.1:8000` 上运行。
- 如果模型返回错误,请先在 `.env` 中验证相应的 API 密钥。
标签:Angular, AV绕过, DLL 劫持, E2E测试, ESC8, FastAPI, Grype, IaC 扫描, LaTeX, LLM, MITM代理, Object Callbacks, Petitpotam, Playwright, Python, TypeScript, Unmanaged PE, 人工智能, 企业安全, 垃圾邮件检测, 大语言模型, 威胁情报, 学术研究, 安全插件, 对比分析, 开发者工具, 文本分类, 无后门, 模型评估, 深度学习, 特征检测, 用户模式Hook绕过, 硕士论文, 社会工程学, 系统调用监控, 网络安全, 网络资产管理, 网络钓鱼, 逆向工具, 邮件安全, 钓鱼检测, 隐私保护