68xx/Smart-Contract-Vulnerability-Scanner
GitHub: 68xx/Smart-Contract-Vulnerability-Scanner
一个基于 Web 的以太坊智能合约漏洞扫描器,整合 Slither 静态分析与 Gemini AI 解释,帮助开发者快速发现并理解 Solidity 合约中的安全隐患。
Stars: 0 | Forks: 0
# 智能合约漏洞扫描器
一个基于 Web 的 Ethereum 智能合约漏洞扫描器,作为毕业设计项目 (FYP2) 构建。
## 概述
将 [Slither](https://github.com/crytic/slither) 静态分析器封装在 Web 界面中,添加了 OWASP 智能合约 Top 10 2026 分类、按比例的风险评分系统,以及通过 Google Gemini 提供的 AI 漏洞解释功能。
## 技术栈
| 层级 | 技术 |
|-------|-----------|
| 前端 | React |
| 后端 | Python / Flask |
| 数据库 | MySQL |
| 分析引擎 | Slither |
| AI 解释 | Google Gemini API |
## 功能
- 上传 `.sol` 文件或直接粘贴 Solidity 代码
- 基于 Slither 的静态漏洞检测
- OWASP 智能合约 Top 10 2026 映射
- 按比例的风险评分(初始为 100 分,根据严重程度扣分)
- 针对每个检测结果的 AI 生成通俗语言解释
- 扫描历史记录与并排比较
- PDF 报告下载
- 用户认证(通过 httpOnly cookies 实现 JWT)
- 扫描 endpoint 的速率限制
## 项目结构
```
smart-contract-scanner/
├── backend/
│ ├── app.py # Flask app entry point
│ ├── requirements.txt # Python dependencies
│ ├── pytest.ini # Test config
│ ├── dashboard_metrics.sql # SQL for dashboard stats
│ ├── routes/
│ │ ├── auth.py # Register / login / logout
│ │ ├── scanner.py # Scan endpoint + risk scoring
│ │ └── gemini.py # Gemini AI explanation
│ └── tests/
│ ├── conftest.py
│ ├── test_auth.py
│ ├── test_scanner.py
│ ├── test_ai.py
│ └── test_report.py
└── frontend/
├── package.json
├── public/
└── src/
├── App.js
├── ScanContext.js # Global scan state
└── pages/
├── Login.jsx
├── Register.jsx
├── Scanner.jsx
├── History.jsx
└── Dashboard.jsx
```
## 设置说明
### 后端
```
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
pip install slither-analyzer
```
在 `backend/` 目录下创建一个 `.env` 文件:
```
DB_HOST=localhost
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_NAME=smart_contract_scanner
GEMINI_API_KEY=your_gemini_api_key
JWT_SECRET_KEY=your_jwt_secret
```
运行:
```
python app.py
```
### 前端
```
cd frontend
npm install
npm start
```
### 运行测试
```
cd backend
pytest --cov=. --cov-report=term-missing
```
## 环境变量
| 变量 | 描述 |
|----------|-------------|
| `DB_HOST` | MySQL 主机 |
| `DB_USER` | MySQL 用户名 |
| `DB_PASSWORD` | MySQL 密码 |
| `DB_NAME` | 数据库名称 |
| `GEMINI_API_KEY` | Google Gemini API 密钥 |
| `JWT_SECRET_KEY` | 用于 JWT 签名的密钥 |
标签:Ethereum, Flask, React, Syscalls, Web安全, 云安全监控, 实时处理, 密码管理, 智能合约, 自定义脚本, 蓝队分析, 逆向工具, 配置审计, 静态分析