适用于 Linux、Android、iOS 和 macOS 的底层文件系统监控工具。
设计目标用户:
在 macOS 上,现在可以通过 brew 安装,命令如下:
brew tap nowsecure/fsmon https://github.com/nowsecure/fsmon
brew install nowsecure/fsmon/fsmon
或者直接运行 make,也可以从发布页面下载构建好的二进制文件。
make
make install PREFIX=/usr
该工具从指定目录获取文件系统事件,并以彩色格式或 JSON 格式显示。
可以按指定程序名称或进程 ID (PID) 过滤事件。
$ ./fsmon -h
Usage: ./fsmon-macos [-Jjc] [-a sec] [-b dir] [-B name] [-p pid] [-P proc] [path]
-a [sec] 在 N 秒后停止监控(闹钟)
-b [dir] 将文件备份到 DIR 文件夹(实验性)
-B [name] 指定替代后端
-c 跟踪 -p PID 的子进程
-f 仅显示文件名(不显示路径)
-h 显示此帮助信息
-j 以 JSON 格式输出
-J 以 JSON 流格式输出
-n 不使用颜色
-L 列出所有文件监控后端
-p [pid] 仅显示来自此 PID 的事件
-P [proc] 仅显示来自此进程名称的事件
-v 显示版本
[path] 仅获取来自此路径的事件
示例:
fsmon /data
fsmon -J / | jq -r .filename
fsmon -B fanotify /home
$
fsmon 是一款为开发人员、取证分析师和逆向工程师设计的底层跨平台文件系统监控工具。它通过钩入操作系统内核的跟踪设施或文件通知 API 来工作。
inotify(fanotify 并非始终支持)inotify 和 fanotifykdebug、FSEvents、kqueue 和 /dev/fsevents实时文件监控 实时检测并报告文件操作,如创建、删除、修改、属性更改和重命名。
多后端支持
自动选择可用的最佳监控后端,也允许用户自行选择:
inotify、fanotify(Linux)fsevapi、kdebug、devfsev、kqueue(iOS / macOS)可以使用 fsmon -L 列出所有可用的后端。
进程级洞察 尽可能将文件事件与进程名称、PID 和 UID 关联起来。
递归监控 递归监控整个目录树,并动态添加新创建的目录。
JSON 输出格式
支持 JSON 或 JSON 流模式的格式化日志输出,便于与其他工具集成(例如 jq、ELK 等)。
文件名过滤与格式化 可选择去除完整路径、仅显示文件名,并根据事件类型对输出进行着色。
选择性监控 可按以下条件过滤事件:
-P)-p)-c)fsmon 可检测的事件示例:
CREATE_FILE、DELETE、RENAMEOPEN、CLOSE、STAT_CHANGEDCHOWN、CHMOD、XATTR_MODIFIEDCONTENT_MODIFIED、EXCHANGE、FINDER_INFO_CHANGEDfsmon 是一个可移植工具,可运行在 iOS、OSX、Linux 和 Android(x86、arm、arm64、mips)上。
$ make
通过运行 make ios 或 make android 可以轻松进行交叉编译:
$ make android NDK_ARCH=<ARCH> ANDROID_API=<API>
本工具是由 NowSecure 开发的自由软件,遵循 MIT 许可证发布。
您可以通过邮件 [email protected] 联系 Sergi Alvarez。
事件触发备份
检测到文件变更时,自动将受影响的文件复制到备份目录(-b)。
时间戳 为每个事件添加时间戳,便于取证分析。
最小依赖 使用可移植 C 语言编写,除标准库外无运行时依赖。
优雅关闭与信号处理
处理 SIGINT、SIGTERM 和 SIGALRM 信号,支持干净退出和定时监控会话。