eliainnocenti/cover-your-tracks
GitHub: eliainnocenti/cover-your-tracks
一款基于浏览器的互动严肃游戏,旨在教授数字取证中反取证技术的识别与分析。
Stars: 0 | Forks: 0
# 掩盖行踪 — 反取证检测实验室

## 概述
**掩盖行踪**是一款基于浏览器的交互式严肃游戏,旨在教导学生如何识别攻击者使用的反取证技术。玩家将扮演数字取证分析师的角色,通过模拟的取证工作站调查真实的犯罪场景。
每个场景都遵循一个结构化的学习循环:
1. **课前测验** — 评估对相关技术的基础知识
2. **调查** — 使用取证工具探索证据(文件系统、内存转储、网络日志)
3. **提交标志** — 识别并提交发现(篡改的文件、隐藏的进程、隐蔽信道)
4. **课后测验** — 在动手调查后确认理解程度
5. **总结回顾** — 回顾技术、现实世界工具和学习指标
### 核心特性
- **基于场景的学习**:游玩涵盖文件系统、内存、网络和隐写术领域的 6 个不同场景。
- **精细化评估**:每个场景都包含 4 个问题的课前测验和课后测验,以准确衡量动手调查前后的知识差异(学习增益)。
- **取证实用工具**:使用模拟终端命令(`grep`、`file`、`stat`、`strings`、`xxd`)、十六进制查看器、内存进程分析器和网络数据包检查器来调查证据。
- **监管链**:每个操作(查看文件、运行命令、使用提示)都会记录在游戏结束时可见的不可更改的会话日志中。
- **交叉参考连接**:玩家可以将多个证据关联起来,以发现隐藏的叙事联系并获得奖励积分。
- **持久性排行榜**:已完成的场景会保存到本地存储,让玩家可以跟踪自己的进度、花费的时间,并争取更高的调查等级。
### 场景
| # | 标题 | 领域 | 技术 | 难度 |
|---|-------|--------|-----------|------------|
| 01 | 时间戳篡改者 | 文件系统 | MAC 时间操作 (\$SI 与 \$FN) | ★★☆☆☆ |
| 02 | 扇区里的幽灵 | 文件系统 | 松弛空间利用 | ★★☆☆☆ |
| 03 | 机器中的幽灵 | RAM | DKOM rootkit / 进程隐藏 | ★★★☆☆ |
| 04 | 低语的 DNS | 网络 | 用于数据泄露的 DNS 隧道 | ★★★☆☆ |
| 05 | 隐藏于视线中 | 隐写术 | PNG 图像中的 LSB 隐写术 | ★★★★☆ |
| 06 | 最后的抵抗 | 综合 | 多向量反取证(Boss 关卡) | ★★★★★ |
## 技术栈
- **React 18** — 基于组件的 UI
- **Vite** — 快速开发服务器和构建工具
- **Tailwind CSS** — 实用工具优先的 CSS(布局层)
- **自定义 CSS 设计系统** — 受 CRT 启发的取证终端美学
- **Lucide React** — 图标库
## 快速开始
### 前置条件
- [Node.js](https://nodejs.org/) ≥ 18
- npm ≥ 9
### 安装
```
# :
git clone https://github.com/eliainnocenti/cover-your-tracks.git
cd cover-your-tracks/app
# - "Clone the repository" -> "克隆仓库" or "克隆代码库"
npm install
# - "Install dependencies" -> "安装依赖" or "安装依赖项"
npm run dev
```
应用程序将在 `http://localhost:5173/cover-your-tracks/`(或 `http://localhost:5173/`,取决于本地开发服务器绑定)可用。
### 生产环境构建
```
cd app
npm run build
npm run preview # Preview the production build locally
```
### GitHub Pages 部署
仓库已预配置为自动部署到 GitHub Pages。要部署应用程序:
```
cd app
npm run deploy
```
这将自动触发构建流水线(`npm run build`)并将 `dist/` 下的生产包直接推送到你的 `gh-pages` 分支。
## 项目结构
```
app/
├── index.html # Entry point
├── package.json # Dependencies and scripts
├── vite.config.js # Vite configuration
├── tailwind.config.js # Tailwind CSS configuration
├── postcss.config.js # PostCSS configuration
└── src/
├── main.jsx # React root
├── App.jsx # Game shell and phase router
├── styles/
│ └── index.css # Design system (CSS variables, CRT theme)
├── components/
│ └── game/
│ ├── ScenarioEngine.jsx # State machine (useReducer + Context)
│ ├── Landing.jsx # Scenario selection screen
│ ├── Leaderboard.jsx # Local storage high scores
│ ├── EvidenceNavigator.jsx # File Explorer / Terminal / HEX / RAM / Network
│ ├── InvestigatorNotebook.jsx # Evidence tagging and flag submission
│ ├── CrossReference.jsx # Evidence connection linking mechanic
│ ├── Quiz.jsx # Pre/Post quiz with explanations
│ ├── ChainOfCustody.jsx # Investigation audit trail log
│ └── Debrief.jsx # Learning assessment dashboard
└── data/
└── scenarios/
├── scenario_01_timestomper.json
├── scenario_02_slackspace.json
├── scenario_03_ram_injection.json
├── scenario_04_dns_tunnel.json
├── scenario_05_steganography.json
└── scenario_06_boss_level.json
```
## 游戏架构
游戏使用由 React 的 `useReducer` + Context API 驱动的**有限状态机**:
```
[Landing] → [Pre-Quiz] → [Investigation] → [Post-Quiz] → [Debrief] → [Complete]
```
### 关键指标(供教师审查)
| 指标 | 描述 |
|--------|-------------|
| `preQuizScore` | 基础知识 (%) |
| `postQuizScore` | 游戏后的知识 (%) |
| `knowledgeDelta` | 学习增益(后测 - 前测) |
| `finalScore` | 调查质量(基础 100 + 标志奖励 - 惩罚) |
| `hintsUsedCount` | 自主性指标 |
| `wrongAttempts` | 有条理 vs. 猜测行为 |
| `totalTimeSeconds` | 效率 |
| `completionRate` | 彻底性(找到的标志 / 总数) |
| `connectionsFound` | 跨领域关联发现的能力 |
| `sessionLog` | 玩家操作的监管链审计跟踪 |
## 许可证
该项目作为都灵理工大学计算机取证与网络犯罪分析课程的一部分,为教育目的而开发。
## 作者
| 姓名 | GitHub | LinkedIn | 邮箱 |
| ---- | ------ | -------- | ----- |
| Elia Innocenti | [](https://github.com/eliainnocenti) | [](https://www.linkedin.com/in/eliainnocenti/) | [](mailto:elia.innocenti@studenti.polito.it) |
*作为都灵理工大学计算机取证与网络犯罪分析课程的一部分而开发。*
标签:自定义脚本