juice094/macro-virus-classroom-demo
GitHub: juice094/macro-virus-classroom-demo
一个基于 WebUI 与 oletools 的宏病毒教学演示项目,解决在离线环境中直观展示宏病毒原理、检测与清除的问题。
Stars: 0 | Forks: 0
# 宏病毒演示项目 · 翻转课堂
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://github.com/decalage2/oletools)
[]()
## 🚀 快速开始
### 方式一:离线演示(推荐 · 无需任何环境)
# 直接用浏览器打开
open webui/index.html # macOS
start webui/index.html # Windows
- 所有场景、动画、预置检测数据均已**内嵌**
- 支持 **PWA 离线安装**(Chrome/Edge 地址栏点击 ➕ 安装到桌面)
- 适配教室断网、无管理员权限环境
**操作快捷键**:
- `→` / `←` :切换场景
- `F11` :全屏演示
- `Tab` :键盘焦点导航
### 方式二:实时检测演示(需 Python)
cd backend
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
pip install -r requirements.txt
python app.py
浏览器访问 `http://127.0.0.1:5000`,可上传 `.doc/.docm/.xls/.xlsm` 等文件查看 **oletools** 实时分析结果。
## 📁 项目结构
macro-virus-classroom-demo/
├── 📂 webui/ # 前端 · 纯 HTML/CSS/JS(零构建)
│ ├── index.html # 单页应用:9 场景交互演示
│ ├── style.css # 设计令牌 + 情绪曲线 + SVG 动画
│ ├── app.js # State Machine + 粒子流 + API 连接
│ ├── manifest.json # PWA 安装配置
│ └── sw.js # Service Worker 离线缓存
│
├── 📂 backend/ # 后端 · Flask + oletools
│ ├── app.py # 文件上传 + olevba/mraptor/oleid 封装
│ └── requirements.txt # Python 依赖
│
├── 📂 docs/
│ └── script.md # 课堂讲解逐字稿(7 分钟精确到秒)
│
├── 📄 DESIGN.md # 完整设计方案(6 步骤论证)
├── 📄 ASSESSMENT.md # 美学 + 工程学评估与不足映射
├── 📄 LICENSE # MIT
└── 📄 .gitignore
## 🎬 场景导览
| 场景 | 内容 | 交互亮点 | 情绪色彩 |
|------|------|---------|---------|
| S0 | 开场:财务小李收到钓鱼邮件 | 邮件 UI 模拟 | 🔵 中性 |
| S1 | 定义:宏病毒 80 字定义 | 3D 翻转卡片 | 🔵 中性 |
| S2 | 传播:四大途径 | SVG 脉冲节点网络 | 🟠 警示 |
| S3 | 原理:AutoOpen → 感染模板 | **渐进披露**(点击展开代码) | 🔴 危机 |
| **S4** | **感染链路(重点)** | **SVG 粒子流动画** | 🔴 危机 |
| S5 | 检测:oletools 实时分析 | 标签页 + MacroRaptor 评级 | 🟣 分析 |
| S6 | 清除:四步法 | **步骤聚焦**(单步高亮) | 🟢 安全 |
| S7 | 延伸:变异与 AI 钓鱼 | 可展开 QA | 🔵 中性 |
| S8 | 总结:安全意识口诀 | 打字机 + 护盾徽章 | 🟢 安全 |
## 🧠 设计理论
本项目基于以下成熟理论构建:
- **格式塔原理**(Wertheimer, 1912):接近律分组、连续律过渡、共同命运律粒子流
- **认知负荷理论**(Sweller, 1988):渐进披露降低外在认知负荷
- **情感化设计三层模型**(Norman, 2004):本能/行为/反思层情绪曲线
- **离线优先架构**(Local-first):Service Worker + Cache API
- **可访问性 WCAG 2.1**:ARIA、键盘导航、减少动画媒体查询
详见 [`ASSESSMENT.md`](./ASSESSMENT.md)。
## 🛡️ 安全声明
- 本项目**不包含任何可执行的恶意代码**。
- `S3` 中展示的 VBA 代码为**无害化教学片段**,仅说明逻辑,不具备实际感染能力。
- `S5` 中的"预置样本分析结果"为模拟数据,用于课堂无网络环境下的流畅演示。
- 如需分析真实可疑文档,请在**隔离环境**中使用 `backend/app.py`,且**不要启用文档中的宏**。
## 📋 课堂部署建议
1. **课前**:将 `webui/` 文件夹复制到教室电脑桌面。
2. **演示**:双击 `index.html` → `F11` 全屏 → 按 `→` 键切换场景。
3. **备用**:若教室有 Python 环境,提前启动 `backend/app.py`,可演示实时文件分析。
4. **讲解**:参照 [`docs/script.md`](./docs/script.md) 逐字稿,严格控制在 **5-8 分钟** 内。
## 📄 License
[MIT](LICENSE) © 2026 juice094
标签:Flask, Office宏, Oletools, PWA, Python教学, Service Worker, TCP SYN 扫描, Web UI, 交互式演示, 关键词:宏病毒, 关键词:教学工具, 关键词:网络安全演示, 前端纯HTML, 多模态安全, 安全教育, 宏病毒, 实时检测, 恶意文档分析, 搜索引擎优化, 教学演示, 数据可视化, 文件上传分析, 病毒演示, 离线支持, 网络安全教育, 翻转课堂, 自定义脚本, 逆向工具