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 报告。 ## 📸 概览 ### 主界面 您将看到如下的应用程序主界面。 ![主界面](https://static.pigsec.cn/wp-content/uploads/repos/cas/b9/b95406e918767a1586606920cddbba1f4c41c0ce522195299448da1b45b52cc1.png) ### 创建新实验室 点击左下角的 **Import VM** 按钮,将弹出一个工作实验室的创建表单。 ![创建实验室](https://static.pigsec.cn/wp-content/uploads/repos/cas/9d/9d858f5b4ca41b6058eb6776a73bc08cf38c4bd2acf2171ec540b8e26bb75a1b.png) 以下是一个用于演示的已填写示例。 ![创建实验室-demo](https://static.pigsec.cn/wp-content/uploads/repos/cas/b4/b43d01803538a295ebcd4482df3df6be7df3ce8114369eb771797e29f25ed0fc.png) 随后会出现一条确认消息,提供立即导入 VM 的选项。 ![创建实验室-确认](https://static.pigsec.cn/wp-content/uploads/repos/cas/9f/9f14d114dda42252cb9035fcd017e14941542ffe27acf95b89a364355e26c98c.png) ### 导入虚拟机 如果您要导入一台虚拟机,应用程序会检测到您的 VM 并提供选择。在我们的示例中,由于只有一台机器,所以我们直接选中了它。 ![导入 VM](https://static.pigsec.cn/wp-content/uploads/repos/cas/ef/ef07fcc5d32924dbaf9f6bd3d79b2f994af26188e0b7d5691a84575b2a27ff3e.png) 返回主界面后,您就可以看到刚刚导入的 VM。 ![主界面 VM](https://static.pigsec.cn/wp-content/uploads/repos/cas/2f/2f007f410644ebd755bb4d77df2edde57f33b7910b071e4c559d9e3eb301dead.png) ### 管理虚拟机 现在您可以管理这台机器了。点击它,选项会像这样显示出来。 ![管理 VM](https://static.pigsec.cn/wp-content/uploads/repos/cas/42/4206d1b137562f24cd47d9f12cd3c55ebcfad7b18ffc1b9f8952845fa7fc643b.png) 现在点击右侧绿色的 **Start** 按钮,机器将在后台启动,并且您会看到按钮发生变化以提示此状态。 ![VM 已启动](https://static.pigsec.cn/wp-content/uploads/repos/cas/59/5920c1ce00290b09156c7f46b01de6068e51373fa3e5c9684890a513d873ae07.png) 您可以像我们在示例中做的那样,实时检查运行状态。 ![检查 VM 已启动](https://static.pigsec.cn/wp-content/uploads/repos/cas/e4/e4863470871ecf4edb752fd820d76ff0da1c10e40f779eb9c66bd65daae3e1f9.png) 完成工作后,您可以通过点击现已变为红色的 **Stop** 按钮来关闭机器。 ![VM 已关闭](https://static.pigsec.cn/wp-content/uploads/repos/cas/78/780566019c94f814446538d184d7482fdcbe8e31f63e71a725f85e308648952c.png) ![导出 PDF](https://static.pigsec.cn/wp-content/uploads/repos/cas/7b/7b149db543c1c4110494b83b0b357f4d82e7a8107ad695293f8cbcb9f27946a3.png) 这是一个您可以生成的 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, 域名枚举, 安全实验室, 桌面应用, 笔记记录, 虚拟机管理