4rthur-Root/CyberLab
GitHub: 4rthur-Root/CyberLab
CyberLab Manager 是一款基于 JavaFX 的桌面应用,帮助网络安全分析师在 VirtualBox 之上按主题组织虚拟机、管理快照、记录分析日志并导出 PDF 报告。
Stars: 1 | Forks: 0
# 🖥️ CyberLab Manager
**用于管理 VirtualBox 虚拟机实验室的桌面应用程序**,面向网络安全分析师(学生、渗透测试人员、研究人员)。
CyberLab Manager 不是一种 hypervisor —— 它是构建于 VirtualBox 之上的**管理层**。它允许将 VM 组织到主题实验室(恶意软件、渗透测试、网络等)中,对其进行控制,管理它们的快照,记录带有时间戳的分析日志,并将所有所需内容导出为完整的 PDF 报告。
## 📸 概览
### 主界面
您将看到如下的应用程序主界面。

### 创建新实验室
点击左下角的 **Import VM** 按钮,将弹出一个工作实验室的创建表单。

以下是一个用于演示的已填写示例。

随后会出现一条确认消息,提供立即导入 VM 的选项。

### 导入虚拟机
如果您要导入一台虚拟机,应用程序会检测到您的 VM 并提供选择。在我们的示例中,由于只有一台机器,所以我们直接选中了它。

返回主界面后,您就可以看到刚刚导入的 VM。

### 管理虚拟机
现在您可以管理这台机器了。点击它,选项会像这样显示出来。

现在点击右侧绿色的 **Start** 按钮,机器将在后台启动,并且您会看到按钮发生变化以提示此状态。

您可以像我们在示例中做的那样,实时检查运行状态。

完成工作后,您可以通过点击现已变为红色的 **Stop** 按钮来关闭机器。


这是一个您可以生成的 PDF 示例。
## ✨ 功能
- **实验室管理** — 创建、修改、删除主题实验室
- **VM 导入** — 自动检测现有的 VirtualBox VM,附加到实验室(或作为独立 VM)
- **全面控制** — 启动、停止、保存状态
- **快照** — 创建和恢复 VirtualBox 快照
- **分析日志** — 为每个 VM 记录带有时间戳的笔记,并持久化存储到数据库中
- **PDF 导出** — 按实验室生成汇总报告(包含 VM、状态、快照、笔记)
- **配置** — 可自定义 VBoxManage 路径和导出文件夹
## 🏗️ 架构
该项目采用分层架构,并严格分离职责:
```
tg.cyberlabmanager
├── model → Entités métier (Lab, VirtualMachine, Snapshot, JournalEntry, AuditEntry, VMStatus, AppConfig)
├── hypervisor → Intégration VirtualBox (IHypervisor, VBoxOrchestrator, exceptions)
├── data → Persistance SQLite (DatabaseManager)
├── pdf → Génération de rapports (PdfExporter, Apache PDFBox)
├── controller → Orchestration (LabController)
└── ui → Interface JavaFX
```
每一层都围绕**严格的接口契约**独立开发,允许团队并行开发而不会产生集成冲突。
## 🛠️ 技术栈
| 组件 | 技术 |
|---|---|
| 编程语言 | Java 17 |
| 图形界面 | JavaFX 21.0.6 |
| 构建 | Maven (JPMS / 模块 `tg.cyberlabmanager`) |
| 持久化 | SQLite (sqlite-jdbc) |
| PDF 导出 | Apache PDFBox |
| 测试 | JUnit 5, Mockito |
| CI | GitHub Actions |
| Hypervisor 集成 | 通过 `VBoxManage` 集成 VirtualBox (ProcessBuilder) |
## 🚀 安装与运行
### 前置条件
- Java 17 (JDK)
- Maven(或使用包含的 `./mvnw` wrapper)
- 已安装 [VirtualBox](https://www.virtualbox.org/),且 `VBoxManage` 可正常访问
### 运行应用程序
```
git clone https://github.com/4rthur-Root/CyberLab.git
cd CyberLab
./mvnw javafx:run
```
### 运行测试
```
./mvnw test
```
## 👥 团队与角色分工
本项目由三人小组完成,在项目启动之初即通过接口契约明确划分了职责。
| 角色 | 职责 | 模块 |
|---|---|---|
| **角色 1(GAHOUNZO)** — 前端负责人 / UX | JavaFX 图形界面,通过 `LabController` 进行协调 | `ui`, `controller` |
| **角色 2(AKAKPO)** — 后端 / 数据 | SQLite 持久化,PDF 导出,配置 | `data`, `pdf` |
| **角色 3(KPODONOU)** — VirtualBox 工程师 / 集成 | 业务模型,VirtualBox 集成 | `model`, `hypervisor` |
这种契约式开发方法 —— 每个角色在具体实现之前先确定精确的方法签名 —— 实现了并行开发,且未出现重大的集成阻碍。
## 🔒 质量与 CI/CD
- 针对业务逻辑和解析逻辑进行系统的**单元测试**(全面覆盖 `model` 和 `hypervisor` 层)
- 每次提交和 pull request 时通过 GitHub Actions 进行**持续集成**
- 合并到受保护分支(`develop`, `main`)之前必须进行**强制代码审查**
- **分支约定**:`feature/**` → `develop` → `main`
- 使用法语的**约定式提交** (Commits conventionnels),以确保历史记录清晰易读
## 🗺️ 路线图
该应用程序符合学术规范的要求。为了让其成为可在课程之外使用的工具,我们正在考虑以下方向:
- [ ] 支持 Multi-hypervisor (KVM/libvirt),以便在原生 Linux 环境中使用
- [ ] 完整的审计跟踪(记录对 VM 的每一次操作)
- [ ] 导出和导入实验室配置(跨机器便携性)
- [ ] 通过 jpackage 进行跨平台原生打包(`.exe`, `.deb`, `.rpm`, `.AppImage`, `.dmg`)
- [ ] 用于自动化的命令行界面 (CLI)
## 📄 许可证
## 🙏 致谢
本项目是在软件开发课程框架内完成的。感谢我们的老师给予的指导,同时也感谢 VirtualBox / Apache PDFBox 提供的开源工具。
标签:JavaFX, SQLite, VirtualBox, 域名枚举, 安全实验室, 桌面应用, 笔记记录, 虚拟机管理