Krow-zy/ReksaFel-Lab-Exam

GitHub: Krow-zy/ReksaFel-Lab-Exam

ReksaFel 是一个基于零信任网络的本地计算机实验室考试监考平台,用于实时监控学生 PC 活动、自动检测作弊并截取屏幕证据。

Stars: 0 | Forks: 0

# 🛡️ ReksaFel — 防作弊与监考监控系统 **ReksaFel** 是一个高性能的监考监控平台,旨在维护本地计算机实验室考试的学术诚信。它采用去中心化架构,允许监考人员通过安全加密的点对点网络网格同时监督多达 40 台客户端工作站。 **ReksaFel** 是专为维护计算机实验室学术诚信而设计的本地考试监考平台。通过加密的封闭网络(*peer-to-peer mesh*),监考人员可以通过一个主控仪表板,实时监控活动、检测作弊行为,并从 40 台学生电脑上收集屏幕截图证据。 本仓库是 ReksaFel 系统的公共文档、核心 API 规范和技术预览中心。 ## 🌌 核心理念与架构 ReksaFel 针对无服务器的本地网络进行了优化,可将标准实验室环境转化为安全、受控的测试区域。 ``` +-------------------------------+ +-----------------------------------+ | Student Client (Agent) | | Proctor Dashboard (Admin) | | - Silent telemetry service | | - Go-based API Controller | | - Screen monitoring agent | | - Wails OS Desktop Wrapper | +---------------+---------------+ +-----------------+-----------------+ | | | Encrypted Telemetry Logs & Screenshots | +-------------------------------------------------->| [HTTP API :8080] | (Real-time cheat alerts, process state) | | | | AES-256-GCM Key Verification & Rotation | |<--------------------------------------------------+ [Push Service :8081] | | | Controlled Network Stress Commands | |<--------------------------------------------------+ [Load Simulator :8082] ``` ### 1. 零信任网络网格 所有通信均通过安全的点对点覆盖网络进行。只有使用动态轮换验证密钥并通过验证的客户端节点才能与仪表板通信,从而防止外部欺骗。 ### 2. 实时座位网格图 (8x5) 映射物理实验室座位安排的动态布局。监考人员可以即时查看客户端状态: * ⚪ **离线**:Agent 未激活。 * 🟢 **在线(安全)**:Agent 已激活,并处于安全的考试运行状态。 * 🟡 **警告(活动中)**:正在发生实时违规行为。 * 🔴 **已违规(历史)**:该节点在本次会话早期记录过规则违规。 ### 3. 主动证据记录 一旦检测到被禁止的网络活动或违规进程,客户端 Agent 会自动捕获屏幕证据。截图将被安全发送、解密并存档在管理端的本地设备上,无需依赖任何云端服务。 ### 4. 网络压力模拟器 内置压力测试器,用于验证仪表板的 I/O 吞吐量。监考人员可以触发来自客户端的模拟并发数据 payload,以验证系统在高负载下的网络容量和 UI 响应能力。 ## 🎓 学术概述与系统流程 ReksaFel 采用 **混合集中式网格** 模型来实现隔离监考: * **非侵入式 Agent:** Agent 作为轻量级的 *background service* 在学生 PC 上运行,不会增加系统性能负担。 * **异步并发:** Go 后端利用 *Goroutines* 并行处理屏幕截图证据上传,且不会阻碍输入/输出 (I/O) 队列。 ### 系统流程图 ``` flowchart TD subgraph Klien [PC Siswa / Agent Client] A[Agent Background Service] -->|1. Register & Handshake| B(Kanal Komunikasi Terenkripsi) A -->|2. Loop Deteksi Proaktif| C{Deteksi Pelanggaran?} C -->|Ya| D[Ambil Bukti Layar Screenshot] D -->|3. POST Log & Image| B C -->|Tidak| A end subgraph Server [PC Pengawas / Admin Dashboard] B -->|4. Terima Data Telemetri :8080| E[API Listener & State Manager] E -->|Simpan Bukti Lokal| F[(Penyimpanan Lokal / Disk)] E -->|Update Cache| G[Wails Binding Controller] subgraph UI [Frontend Dashboard] G -->|Status Update| H[8x5 Seating Map Grid] G -->|Alert Trigger| I[Live Alerts Sidebar] end end subgraph Stress [Modul Simulasi & Stress Test] K[Dashboard Admin] -->|5. Trigger Stress Test :8082| L[PC Siswa / Agent Client] L -->|6. Kirim Paket Data Paralel| K K -->|7. Hitung Throughput / RTT| M[Metrik Grafik & SVG Animasi] end ``` ## 💻 开发与公开规范 本仓库包含开源 API 规范、遥测 schema 以及代表 ReksaFel 系统的本地加密概念: * **`pkg/telemetry/`** — 定义客户端系统信息(`sysinfo.go`)和事件日志的数据结构、验证规则及序列化 schema。 * **`pkg/net/`** — 网络接口检测(`interface.go`)以及利用 Goroutines 和 Context 超时实现的并发 TCP 延迟探测例程。 * **`pkg/api/`** — 标准 API 路由规范、请求日志 middleware 以及授权 middleware 表示。 * **`pkg/config/`** — 配置 schema 验证器(`validation.go`)以及演示安全 GCM 初始化向量生成的本地配置封装概念实现。 ### 🧪 验证与测试 您可以在本地编译并运行整个测试套件,以验证代码逻辑和安全参数: ``` # 运行所有 unit tests go test -v ./... ``` ## 🛠️ 技术栈 * **后端引擎:** Go (Golang) — 用于高并发网络例程和 Windows 二进制文件编译。 * **前端外壳:** Vanilla JS, CSS3, & HTML5 — 通过 **Wails v2** 编译为原生应用程序。 * **安全层:** 使用原生 Windows 机器标识符进行配置封装的 AES-256-GCM 加密。 ## 📋 仓库状态与开发日志 以下是关于导航地图、界面布局、后台系统机制以及 **ReksaFel** 仪表板功能更新日志历史的完整详细信息:
🛠️ 点击展开功能状态板与开发日志 (Click to Expand)
# 🛡️ ReksaFel 功能与开发状态板 **ReksaFel 管理员仪表板** 的中央控制和功能开发状态跟踪中心。此页面采用 Markdown 标准设计,可支持在 **IDE (VS Code)** 本地环境或 **GitHub** 中进行直观的视觉与交互式渲染。 ## 1. 导航地图与选项卡结构 (IDE 可视化视图) 以下图表可以在普通的文本编辑器或 IDE 中直接进行直观查看,无需渲染: ``` +-------------------------------------------------+ | 🖥️ DASHBOARD UTAMA ADMIN (ReksaFel) | +-------------------------------------------------+ | +--------------------+------------+------------+--------------------+ | | | | v v v v +---------------+ +---------------+ +---------------+ +---------------+ | 1. MONITOR | | 2. LOG AKTIV. | | 3. RESOURCE T.| | 4. SETTINGS | +---------------+ +---------------+ +---------------+ +---------------+ | | | | +--> Seat Grid +--> Log Table +--> Load Config +--> Key Mgmt +--> Live Alerts +--> Accordion Details +--> Net Metrics +--> System Info +--> Metrics Cards +--> Lightbox Gallery +--> CPU/RAM/TCP +--> Export ZIP ``` ## 2. 仪表板模块布局图 (IDE 网格可视化视图) 以下图表在文本编辑器中以直观的方式映射了各选项卡下子功能的健康状况和更新频率: ``` +---------------------------+---------------------------+---------------------------+---------------------------+ | 1. TAB MONITOR | 2. TAB LOG AKTIVITAS | 3. TAB RESOURCE TESTING | 4. TAB SETTINGS | +---------------------------+---------------------------+---------------------------+---------------------------+ | [Seating Map Grid] | [Tabel Log Utama] | [Konfigurasi Beban] | [Auth Key Management] | | Status : STABIL [OK] | Status : STABIL [OK] | Status : STABIL [OK] | Status : STABIL [OK] | | Update : 2x | Update : 3x | Update : 2x | Update : 1x | +---------------------------+---------------------------+---------------------------+---------------------------+ | [Live Alerts Sidebar] | [Accordion Detail Log] | [Metrik Trafik Jaringan] | [System Information] | | Status : STABIL [OK] | Status : STABIL [OK] | Status : STABIL [OK] | Status : STABIL [OK] | | Update : 3x | Update : 2x | Update : 4x | Update : 1x | +---------------------------+---------------------------+---------------------------+---------------------------+ | [Cards Ringkasan] | [Galeri Bukti] | [Monitor Resource PC] | | | Status : STABIL [OK] | Status : STABIL [OK] | Status : STABIL [OK] | | | Update : 1x | Update : 2x | Update : 2x | | +---------------------------+---------------------------+---------------------------+---------------------------+ | | [Ekspor Laporan (ZIP)] | | | | | Status : STABIL [OK] | | | | | Update : 2x | | | +---------------------------+---------------------------+---------------------------+---------------------------+ ``` ## 3. 功能详情与后台工作流程 ### 座位图网格 (8x5)
🟢 状态:稳定 — [🔄 2 次更新] — 点击查看详情
* **功能描述:** 直观展示计算机实验室的布局(8 行 × 5 列网格 = 40 个座位)。每个座位单元通过颜色指示器动态展示当前学生 PC 的状态:灰色(离线),绿色(安全在线),闪烁黄色(违规/活动中),以及红色(曾发生过违规)。 * **后台机制(系统):** * 前端系统在初始化时渲染包含 40 个座位的静态网格。 * 每隔几秒运行一次 `GetClientsStatus()` 函数,从管理端 RAM 中获取状态映射。 * 处于在线状态的客户端数据通过 `c.Seat` 属性进行映射,为相应的座位单元格着色。 * **更新日志历史:** * `v1.1.0` (2026-05-25):优化客户端座位数据同步,使座位号能够根据 IP 响应和注册的主机名进行动态映射。 * `v1.0.0` (2026-05-15):初步创建 8x5 网格布局以及状态颜色的视觉样式设计。
### 实时警报侧边栏
🟢 状态:稳定 — [🔄 3 次更新] — 点击查看详情
* **功能描述:** 右侧侧边栏,显示当前正在发生的违规行为的即时警报(例如,学生正在打开 AI 网站 ChatGPT)。鼠标悬停时会显示屏幕截图的浮动缩略图。 * **后台机制(系统):** * `renderAlerts()` 函数处理倒序排列的日志数组(最新日志在上方)。 * 采用去重过滤器:对日志进行扫描,仅为每个学生座位记录第一条/最新的警报。 * 自动忽略该座位的旧日志信息,防止侧边栏被填满。 * **更新日志历史:** * `v1.1.2` (2026-06-12):修复文本换行布局问题:过长的学生姓名或日志文本不会再导致 HTML 元素水平向外拉伸。 * `v1.1.1` (2026-06-08):修复覆盖逻辑:确保最新日志不会被 GAP 状态日志或过时日志所覆盖。 * `v1.0.0` (2026-05-15):初步实现在仪表板侧边的实时违规检测面板。
### 指标摘要卡片
🟢 状态:稳定 — [🔄 1 次更新] — 点击查看详情
* **功能描述:** 监控页面顶部的四个指标卡片,用于提供实验室状态的汇总摘要:总注册数、活跃数(在线)、活跃警报数,以及 VPN 隧道状态。 * **后台机制(系统):** * `Total Registered`:计算管理端内存中 `c.clients` 对象的数量。 * `Active`:计算具有 `c.online = true` 标志的客户端数量。 * `Active Alerts`:计算具有 `c.alert = true` 标志的客户端数量。 * `VPN Tunnel Status`:对 100.x.x.x mesh 网关执行内部 ping 操作,以确保 VPN 连接稳定。 * **更新日志历史:** * `v1.0.0` (2026-05-15):初始化与 Wails 绑定集成的性能摘要指标卡片。
### 主日志表格
🟢 状态:稳定 — [🔄 3 次更新] — 点击查看详情
* **功能描述:** 活动日志页面的核心表格,记录考试期间所有重要事件的历史(学生登录、GAP 开始/结束、尝试访问 AI 以及状态恢复)。 * **后台机制(系统):** * 采用固定表格布局(`table-layout: fixed`)和断词处理(`word-wrap: break-word`)以确保列宽稳定。 * 动态读取来自管理端后端(`a.logs`)的日志数组。 * **更新日志历史:** * `v1.1.2` (2026-06-12):修复列位移 bug:过长的 URL 文本现在会被强制换行,确保“屏幕证据”按钮不会被挤出屏幕。 * `v1.1.0` (2026-05-25):集成了客户端经过验证的名称列(最多 5 个单词)。 * `v1.0.0` (2026-05-15):监考活动日志表格的初始结构。
### 日志详情折叠面板
🟢 状态:稳定 — [🔄 2 次更新] — 点击查看详情
* **功能描述:** 主日志每一行上的折叠菜单。当点击某一行时,菜单会向下滑动展开,显示该特定学生的详细日志记录。 * **后台机制(系统):** * 折叠行内的详细日志表采用倒序排列(*newest-first*),以便在顶部直接看到最新的可疑行为。 * 表格被包裹在一个带有高度限制(`max-height: 250px`)和自动垂直滚动条的容器元素中。 * **更新日志历史:** * `v1.1.2` (2026-06-12):优化日志顺序为最新置顶(*newest-first*),并添加了可滚动容器,防止折叠面板过度拉长页面高度。 * `v1.0.0` (2026-05-15):初步创建用于单独监控每位学生的详情折叠面板。
### 证据画廊 (Lightbox)
🟢 状态:稳定 — [🔄 2 次更新] — 点击查看详情
* **功能描述:** 当监考人员点击屏幕截图证据时,弹出全尺寸的图像画廊。包含上一个/下一个导航按钮和直接下载按钮。 * **后台机制(系统):** * 图像从 Base64 数据包中解码,并保存到管理端的本地硬盘(`web/static/screenshots/`)中。 * 仪表板通过 Wails 自定义 asset handler 使用路径 `/static/screenshots/file_name.jpg` 调用图像。 * **更新日志历史:** * `v1.1.2` (2026-06-12):重新加载基于静态 JPG 的本地画廊,消除了由于直接加载原始 Base64 导致的图像为空/损坏的 bug。 * `v1.0.0` (2026-05-15):初始化带有键盘导航的截图证据查看弹窗。
### 导出报告 (ZIP)
🟢 状态:稳定 — [🔄 2 次更新] — 点击查看详情
* **功能描述:** 用于导出所有考试活动数据的按钮。生成一个 ZIP 压缩包文件,其中包含文本日志(.txt)以及装有所有成功抓拍的作弊证据截图的文件夹。 * **后台机制(系统):** * 将 RAM 内存中的所有历史日志合并到一个考试日志文本文件中。 * 从本地 screenshots 目录读取截图文件。 * 使用 Go 归档库(`archive/zip`)将它们打包成一个单一的 ZIP 文件。 * **更新日志历史:** * `v1.1.1` (2026-06-08):简化导出格式,将其合并为包含 txt 日志和 screenshot 文件夹的单一 ZIP 文件,不再使用单独的 CSV 格式。 * `v1.0.0` (2026-05-15):初步创建考试结果数据归档打包模块。
### 负载配置 (Load Test)
🟢 状态:稳定 — [🔄 2 次更新] — 点击查看详情
* **功能描述:** 网络压力测试模拟控制面板。监考人员可以指定要发送的模拟请求包数量(1-100)、延迟时间(10-5000ms)以及是否附带虚拟图像的选项。 * **后台机制(系统):** * 系统利用outine 向客户端 PC 的 8082 端口发送并行信号。 * 在客户端,触发模拟之前会检查管理端的 IP 白名单。 * 客户端对输入参数进行严格限制(客户端 PC 的内部安全机制)。 * **更新日志历史:** * `v1.1.0` (2026-05-25):实现 8082 端口安全的 IP 白名单机制,并在客户端限制延迟/请求范围。 * `v1.0.0` (2026-05-20):初步创建压力测试配置的输入表单。
### 网络流量指标
🟢 状态:稳定 — [🔄 3 次更新] — 点击查看详情
* **功能描述:** 压力测试期间的网络流量实时统计数据。展示总发送数据包、成功/失败包数、平均响应时间、总数据吞吐量 (MB),以及展示管理端 PC 与客户端 PC 之间数据流动动画的可视化面板。 * **后台机制(系统):** * 在服务器端(`/api/test-load-receiver`)以微秒级精度计算数据包接收时间。 * 写入磁盘时使用唯一的临时文件名(`temp_load_test__.jpg`)。 * 文件写入后立即删除,以模拟无冲突的真实磁盘 I/O 过程。 * 使用 JS 状态机(`setAnimationState()`)动态跟踪负载测试循环。 * 在选项卡切换和窗口大小调整时,实时(`updateVizLines()`)绘制连接管理端 PC 和客户端 PC 的平滑 SVG 贝塞尔曲线。 * 利用 SVG `` 元素并绑定 SMIL 事件(`begin="..."`),触发有序的数据包往返流动动画:蓝色的请求包从管理端滑向客户端,经过短暂延迟后,绿色的响应包再从客户端返回管理端。 * **更新日志历史:** * `v1.3.0` (2026-06-13):**[UI 重构与顺序流]** * 将可视化布局重构为并排的 Flex 布局(左侧为交互式实时可视化,右侧为紧凑的侧边栏,包含设置表单与实时指标)。 * 实现顺序数据包发送流(蓝色请求包先从管理端发送到客户端,延迟后接着滑回从客户端到管理端的绿色响应包)。 * 从可视化面板中移除 API 路径信息字符串(`POST /api/...`),使界面更加简洁、现代。 * `v1.2.0` (2026-06-12):**[全新可视化]** 添加基于 SVG/CSS 数据流动画的实时可视化面板(发送 -> 处理 -> 收到响应),将管理端 PC 与 05 座、12 座和 28 座客户端连接起来。 * `v1.1.2` (2026-06-12):**[重大修复]** 通过为每个客户端请求使用唯一的文件名,消除了 Windows 中的 *sharing violation* 错误。 * `v1.0.0` (2026-05-20):初始化网络数据吞吐量性能记录面板。
### 管理端 PC 资源监控
🟢 状态:稳定 — [🔄 2 次更新] — 点击查看详情
* **功能描述:** 管理端 PC 的实时硬件性能指标,包括:CPU 负载百分比、Go 应用程序的 RAM 内存使用量,以及 8080 端口上的活跃 TCP 连接 socket 数量。 * **后台机制(系统):** * CPU:通过执行 `wmic cpu get LoadPercentage` 命令周期性获取,并具有 PowerShell cmdlet 后备方案。 * RAM:通过 `runtime.ReadMemStats()` 读取 Go 内部的堆内存分配。 * TCP Socket:通过执行 shell 命令 `cmd /c netstat -ano | findstr :8080 | find /c /v ""` 进行计数。 * **更新日志历史:** * `v1.1.1` (2026-06-08):为读取 CPU 百分比添加了 PowerShell 后备方案,以应对 wmic 受到系统限制的情况。 * `v1.0.0` (2026-05-20):创建了获取本地硬件利用率信息的模块。
### 认证密钥管理
🟢 状态:稳定 — [🔄 1 次更新] — 点击查看详情
* **功能描述:** ReksaFel 零信任身份验证密钥管理。监考人员可以输入新密钥、监控更新日期、计算密钥的剩余有效天数,并将其无线发送给所有客户端。 * **后台机制(系统):** * 使用基于 Windows `MachineGuid` 的 AES-256-GCM 解密本地 `config.json` 密钥。 * PUSH 按钮将新密钥安全地发送到每个活动客户端 PC 的 8081 端口。 * **更新日志历史:** * `v1.0.0` (2026-05-15):初始化密钥轮换加密管理和无线推送系统。
### 系统信息
🟢 状态:稳定 — [🔄 1 次更新] — 点击查看详情
* **功能描述:** 关于本地配置文件位置(`C:\ProgramData\ZeroGap\config.json`)和主监听端口(8080)的静态系统信息。 * **后台机制(系统):** * 显示用于系统安装指南的应用程序配置信息。 * **更新日志历史:** * `v1.0.0` (2026-05-15):创建了服务器参数详情页面。
## 💡 好奇心与联系 如需咨询有关架构审查、零信任网络网格层的商业集成或技术合作等事宜,请随时与我们取得联系!
标签:EVTX分析, Go语言, Wails, 在线考试监考, 屏幕监控, 桌面客户端, 点对点网络, 程序破解, 防作弊