steffenfritz/FileTrove

GitHub: steffenfritz/FileTrove

FileTrove 是一款用 Go 编写的文件索引与元数据提取工具,整合了文件格式识别、哈希计算、YARA 规则匹配和 NSRL 数据库校验功能,适用于数字取证和安全审计场景。

Stars: 56 | Forks: 6

![构建状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/4b0bf17fd5174918.svg) [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) [![Go 参考](https://pkg.go.dev/badge/github.com/steffenfritz/FileTrove.svg)](https://pkg.go.dev/github.com/steffenfritz/FileTrove) [![OpenSSF 记分卡](https://api.scorecard.dev/projects/github.com/steffenfritz/FileTrove/badge)](https://scorecard.dev/viewer/?uri=github.com/steffenfritz/FileTrove) [![OpenSSF 最佳实践](https://www.bestpractices.dev/projects/8952/badge)](https://www.bestpractices.dev/projects/8952) 版本:v1.0.0-BETA.4 注意:由于 BETA.1 引入了 YARA-X 且构建尚未自动化,您必须使用版本 v1.0.0-DEV-16(不支持 YARA)或自行构建,说明见下文。发布页面提供了适用于 Debian/Ubuntu 的最新版本 deb 安装包! ## 关于 FileTrove 用于索引文件并从中创建元数据。 该应用程序遍历目录树,并使用 [siegfried](https://github.com/richardlehane/siegfried) 按类型识别所有常规文件,为您提供 * MIME 类型 * [PRONOM](https://www.nationalarchives.gov.uk/PRONOM/) 标识符 * 格式版本 * 识别证明和备注 * 文件名扩展名 os.Stat() 为您提供 * 文件大小 * 文件创建时间 * 文件修改时间 * 文件访问时间 * 以及目录的相同信息 FileTrove 还从 ext3/ext4、btrfs、APFS 等文件系统读取并索引扩展属性 (xattr)。 此外,它创建并计算 * UUIDv4 作为唯一标识符(在会话间不稳定) * 哈希值(md5, sha1, sha256, sha512 和 blake2b-512) * 每个文件的熵值(最大 1GB) * 并提取一些 EXIF 元数据 * 您可以向扫描添加自己的 [DublinCore Elements](https://www.dublincore.org/specifications/dublin-core/usageguide/elements/) 元数据。 * FileTrove 的一个非常强大的功能是能够使用 [YARA-X](https://virustotal.github.io/yara-x/) 规则文件。 * FileTrove 还会检查文件是否在 [NSRL](https://www.nist.gov/itl/ssd/software-quality-group/national-software-reference-library-nsrl) 中。 对于此检查,需要一个 4.0GB 的 BoltDB,可以在安装过程中使用 FileTrove 下载。 您也可以创建自己的 NSRL 检查数据库。您只需要一个每行一个 SHA1 哈希值的文本文件以及此仓库中的 admftrove 工具。使用此工具,您还可以将自己的哈希值添加到现有数据库中。 所有结果都写入 SQLite 数据库,并可以导出为 TSV 文件。 ## 如何安装 1. 从 https://github.com/steffenfritz/FileTrove/releases 下载发布版本或从源代码编译(在 cmd/ftrove 中使用 _task build_ (https://taskfile.dev))。 2. 将文件复制到您想安装 ftrove 的位置(下载的文件带有后缀,在以下文档中已省略) 3. 运行 `./ftrove --install .` (注意那个点) a) 如果您还没有 NSRL 数据库,则必须下载它。请耐心等待。 b) 如果您有 NSRL 数据库,请将其复制/移动到 ftrove 刚刚创建的 "db" 目录中。 4. 准备就绪! ### 关于 YARA YARA 模块需要一个不属于 FileTrove 的 C 库,并且在安装过程中尚未安装。 它必须为您的平台安装或构建。更多信息可以在这里找到:https://virustotal.github.io/yara-x/docs/api/c/c-/#building-the-c-library 一个 YARA 示例规则文件可以在本仓库的 testdata/yara 目录中找到。 如果规则匹配文件,则规则名称、会话 UUID 和文件 UUID 将写入 *yara* 表中。 YARA 规则文件本身不存储在 FileTrove 的数据库中。 ### 编译带有 YARA-X 支持的 FileTrove 1. 安装 Golang:https://go.dev/doc/install 2. 安装 Task 构建工具:https://taskfile.dev 3. 安装 YARA-X C 库:https://virustotal.github.io/yara-x/docs/api/c/c-/#building-the-c-library 4. 将此仓库检出到您的 go 工作区(例如 /home/user/go/src):_git clone https://github.com/steffenfritz/FileTrove.git_ 5. 进入目录:例如 _cd /home/user/go/src/steffenfritz/FileTrove/cmd/ftrove_ 6. 开始构建:_task build_ ## 如何运行 `./ftrove -h` 向您展示 ftrove 理解的所有标志。 仅使用必要标志的运行如下所示: `./ftrove -i $DIRECTORY` 其中 $DIRECTORY 是您要用作起点的目录。FileTrove 将递归向下遍历此目录。 ## 如何查看结果 您可以通过 `./ftrove -t $UUID` 导出结果,其中 $UUID 是会话 ID。 每次索引运行都有自己的会话 ID。使用 `./ftrove -l` 获取所有会话的列表。 示例: 1. `./ftrove -l` 2. `./ftrove -t 926be141-ab75-4106-8236-34edfcf102f2` 这将创建几个 TSV 文件,可以使用 Excel、Numbers 和您喜欢的文本编辑器读取。 您也可以在数据库上使用 SQL,在控制台使用 sqlite 或像 sqlitebrowser (https://sqlitebrowser.org/) 这样的 GUI。Sqliteviz 也是一个用于可视化数据的灵巧工具 (https://sqliteviz.com/app/#/)。 ## 背景 FileTrove 是 [filedriller](https://github.com/steffenfritz/filedriller) 的继任者,基于我的 iPres 2021 论文 [Marrying siegfried and the National Software Reference Library](https://phaidra.univie.ac.at/detail/o:1424904)
标签:Debian包, DNS信息、DNS暴力破解, EVTX分析, EXIF提取, Golang, MIME类型识别, PRONOM, Siegfried, YARA规则, 二进制发布, 元数据提取, 哈希计算, 安全编程, 开源工具, 扩展属性, 数字保存, 数字取证, 数据归档, 文件分析, 文件管理, 文件系统遍历, 文件索引, 日志审计, 熵值计算, 自动化脚本, 进程保护