CdtDelta/4n6time-go

GitHub: CdtDelta/4n6time-go

基于 Go 重写的数字取证时间线分析桌面应用,支持大规模多源日志导入、可视化过滤与团队协作,帮助调查人员高效梳理事件时间线。

Stars: 5 | Forks: 0

4n6time-go

# 4n6time-go 电子取证时间线分析工具,从 Python 重写为 Go。这是一款用于分析大规模取证数据集的桌面应用程序,特别适用于处理来自 log2timeline (L2T) 格式文件的时间线数据。 ## 功能特性 - 导入 L2T CSV、Plaso JSONL、TLN、L2TTLN、动态 CSV 和 **EZ Tools CSV** 文件(已通过 2GB+ 文件及数百万事件的测试) - **EZ Tools CSV 导入**:自动检测并导入 Eric Zimmerman 工具(EvtxECmd、PECmd、LECmd、JLECmd、AmcacheParser、SrumECmd、MFTECmd、SBECmd)的输出,支持多时间戳扩展 - **导入 EZ Tools 文件夹**:批量导入工具输出目录中的所有 CSV 文件 - **SQLite 和 PostgreSQL** 数据库后端(SQLite 用于本地工作,PostgreSQL 用于团队/服务器部署) - **调查员备注**:直接在时间线网格中与证据事件一起添加带时间戳的调查备注 - **高级搜索**:在关键字搜索和 SQL WHERE 子句模式之间切换,支持完整的查询语法 - **批量选择与编辑**:按住 shift 点击或 ctrl 点击选择多行,然后一次性为所有行应用颜色、标签或书签 - **多重导入**:将额外的时间线文件导入到已打开的数据库中,以合并证据来源 - 服务器端分页,提供首页、末页、跳转至指定页以及“第 X 页,共 Y 页”控制 - 对所有关键事件字段进行全文搜索并高亮显示关键字 - 带有 AND/OR 逻辑、日期范围和多字段过滤器的过滤面板 - 时间线直方图,支持点击过滤和拖拽选择范围 - 可调整大小的事件详情面板,带有可编辑的标签、颜色和备注 - 使用星标切换为事件添加书签(可过滤为仅显示已加书签的事件) - 颜色编码的行,用于标记感兴趣的事件 - 将 SQLite 数据推送到 PostgreSQL 服务器以便与团队共享 - 保存查询(存储在数据库文件中) - 列可见性切换(显示/隐藏 24+ 列中的任意一列) - 将过滤后的结果导出为 CSV - 11 种 UI 主题(取证深色、经典深色、高对比度、浅色、Solarized、Monokai、Dracula、Nord、Gruvbox、Matrix、取证蓝色) - 内置日志系统,用于故障排除(帮助 > 日志) - 内置用户指南(无需联网) - 带有键盘快捷键的原生桌面菜单 - 通过 GitHub Actions 进行多平台构建(Linux、Windows、macOS) ## 截图 ![主视图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/05007117c0231534.png) ![过滤面板](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/c0ec466e95231536.png) ![事件详情](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/6ff7ea80fa231537.png) ![时间线直方图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/fdbac1efa5231538.png) ![高级搜索](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/506aef8c62231540.png) ![调查员备注](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/ed0ad15c16231541.png) ![添加备注对话框](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/43833dc8af231542.png) ![批量选择](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/487e453703231544.png) ![PostgreSQL 连接](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/b8cdb73061231545.png) ![分页](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/e5b2353a2e231546.png) ![日志对话框](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/e0cd0fc6a1231547.png) ![主题](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/6992fa54be231549.png) ## 技术栈 - **后端:** Go、SQLite (modernc.org/sqlite,纯 Go)、PostgreSQL (pgx) - **前端:** React、AG Grid、Recharts - **框架:** Wails v2(原生桌面应用,无 Electron) ## 构建 ### 前置条件 - Go 1.26+ - Node.js 22 LTS - Wails CLI:`go install github.com/wailsapp/wails/v2/cmd/wails@latest` - Linux:`libgtk-3-dev libwebkit2gtk-4.1-dev pkg-config` - Windows:WebView2 运行时(Windows 10/11 中已包含) - macOS:无额外依赖 ### 构建 ``` cd frontend && npm install && npm run build && cd .. wails build -tags webkit2_41 # Linux wails build # Windows / macOS ``` 编译后的二进制文件将输出到 `build/bin/` 目录。 ### 开发环境(Docker) ``` docker compose up -d docker compose exec dev bash cd /workspace/frontend && npm run build cd /workspace && wails build -tags webkit2_41 ``` 在主机上运行二进制文件:`~/source/4n6time-go/build/bin/4n6time` ## 使用说明 1. 启动应用程序 2. 点击 **Import Timeline** 导入时间线文件(L2T CSV、JSONL、TLN、L2TTLN、动态 CSV 或 EZ Tools CSV),或点击 **Open** 加载现有数据库 3. 使用 **Filters** 面板按来源、主机、类型、用户或日期范围缩小结果范围 4. 点击 **Timeline** 以可视化随时间变化的事件分布 5. 点击任意行以查看完整的事件详情,并添加标签/备注/颜色 6. 使用 **Saved Queries** 存储和调用常用的过滤器集 7. 使用 **Columns** 在网格中显示或隐藏字段 8. 使用 **Export CSV** 保存过滤后的结果 9. 通过 **View > Theme**(Ctrl+T)更改 UI 主题 ### 调查员备注 直接在时间线中与证据事件一起添加带时间戳的调查备注。点击工具栏中的 **+** 按钮打开添加备注对话框。输入日期/时间(或点击“Now”)、描述和可选标签。备注将以来源“EXAMINER”显示在网格中,并且可以设置颜色和添加书签。备注创建后不可变;要更改备注,请从详情面板中将其删除并重新输入。 ### 高级搜索 使用搜索栏旁边的 **Aa/SQL** 按钮,在简单的关键字搜索和 SQL WHERE 子句模式之间切换。在 SQL 模式下,使用字段名和 SQL 运算符输入任何有效的 WHERE 子句: ``` source = 'FILE' desc LIKE '%malware%' AND host = 'WORKSTATION1' datetime BETWEEN '2025-01-01' AND '2025-06-01' ``` 点击 **?** 按钮查看所有可用的字段名和运算符。高级查询可以保存并从已保存查询面板中加载。在 PostgreSQL 上,保留字 `desc`、`user` 和 `offset` 会被自动加引号。 ### 批量编辑 使用 shift 点击(范围选择)或 ctrl/cmd 点击(切换单个选择)来选择多行。选中多行后,会出现一个批量操作栏,其中包含色板、标签输入框、书签按钮和一个“Apply Changes”按钮。选择一种颜色和/或输入标签,然后点击 Apply Changes 以一次性更新所有选中的事件。调查员备注的标签受保护,不会被批量标签更改。 ### 多重导入 当 SQLite 或 PostgreSQL 数据库已经打开时,导入时间线文件会将数据附加到现有数据库中,而不是创建新数据库。这使您能够将多个证据来源(例如,多个硬盘镜像)合并到一个单一的调查数据库中。 ### EZ Tools 导入 4n6time 可以导入 Eric Zimmerman 的取证痕迹解析器生成的 CSV 输出,它能从列标题自动检测所使用的工具,并将多个时间戳列扩展为带有适当 MACB 标记的单个时间线事件。 **单个文件:** 使用 **Import Timeline** 按钮或 File > Import Timeline。EZ Tool CSV 文件可与其他支持的格式一起被自动检测。 **目录:** 使用欢迎屏幕上的 **Import EZ Tools Folder** 按钮或 File > Import EZ Tools Folder,批量导入工具输出目录中的所有 CSV 文件。 支持的工具:EvtxECmd (Windows Event Logs)、PECmd (Prefetch)、LECmd (LNK files)、JLECmd (Jump Lists)、AmcacheParser (Amcache hive,6 种子类型)、SrumECmd (SRUM database,6 种子类型)、MFTECmd (NTFS MFT)、SBECmd (ShellBags)。 ### PostgreSQL 支持 4n6time 可以连接到 PostgreSQL 服务器,作为本地 SQLite 数据库的替代方案: 1. 在欢迎屏幕上点击 **PostgreSQL** 打开连接对话框 2. 输入连接详细信息:主机、端口、数据库名称、用户名、密码和 SSL 模式 3. 点击 **Connect** 连接到现有数据库,或点击 **Create & Connect** 在空数据库上创建模式 4. 连接到 PostgreSQL 时,导入时间线文件会直接写入服务器(无需本地文件) 5. 要将现有 SQLite 数据库推送到 PostgreSQL,请先打开 SQLite 数据库,然后点击工具栏中的 **Push to PostgreSQL** 按钮 ## 致谢 特别感谢 David Nides 创建了最初的 4n6time 应用程序,它是本项目的灵感来源。 ## 许可证 MIT 许可证。有关详细信息,请参见 [LICENSE](LICENSE)。
标签:Active Directory, AD CS, Eric Zimmerman工具, EVTX分析, EZ Tools, Golang, Go语言, L2T, log2timeline, Plaso, PostgreSQL, SQLite, 事件关联, 事件响应分析, 全文本搜索, 取证时间线, 域渗透, 大数据分析, 子域名变形, 安全编程, 库, 应急响应, 应急响应工具, 开源取证, 数字取证, 日志审计, 时间轴直方图, 桌面应用, 测试用例, 电子数据取证, 电子物证, 程序破解, 端点安全分析, 自动化脚本