Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ffs — 去他妈的 文件系统 - 命令行文件搜索工具,绕过操作系统内核直接读取你的磁盘 | Kitploit
工具/GitHubGitHub/dmtrkovalenko/ffs
磁盘取证通用工具脚本与自动化取证分析数据恢复数字取证
GitHubdmtrkovalenko/ffs

ffs

去他妈的 文件系统 - 命令行文件搜索工具,绕过操作系统内核直接读取你的磁盘

查看仓库
174782个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

FFS - F* 文件系统

这是一个用于搜索文件(类似grep)的CLI工具,它不使用操作系统内核来读取文件,而是直接读取你的磁盘。它几乎没什么实际用途,但非常酷。

这只是大约1500行C代码,它:

  • 仅在读取原始设备节点(例如 /dev/rdisk*)时需要sudo;搜索镜像文件无需提升权限
  • 需要在macOS主磁盘上运行时禁用SIP保护
  • 可能会错过部分最近写入的文件(需要手动执行 sync 调用)
  • 在文件系统高度活跃且其他系统组件同时写入文件时,可能无法搜索目录树
  • 仅能用于本项目手动实现的文件系统

但同时:

  • 直接从磁盘读取块
  • 绕过VFS/缓冲 read() 路径,而是直接 pread 块设备
  • 比ripgrep渐进更快(需要搜索的文件越多,相比ripgrep越快)
  • 可以搜索未挂载的卷——它只解析二进制块
  • 检测并跳过二进制文件
  • 通过openmp将负载分散到所有核心

对于真正快速的文件搜索,请查看我的项目 fff——它显著超越ripgrep且无需sudo。

支持的文件系统

在Linux上,大多数字文件系统都容易实现

Ext4

./fs/ext4.c

这是最容易支持的文件系统:它是一个原地写入的日志型文件系统(非写时复制),因此大多数情况下是ffs的最佳选择。有时你可能会注意到ffs无法看到某些文件的最近更新,这可能是由于内核将最近的更新缓存在内存中并延迟写入磁盘。你可以使用以下命令强制同步:

root@kitploit:~
sync

Btrfs

./fs/btrfs.c

B树文件系统复杂得多,是一种更高效的存储方式,并且附带一个额外的限制:

当文件系统中的任何文件被更新时,整个超级块也需要更新,这意味着如果ffs读取了超级块(高层B树),随后内核更新了树,那么整个读取就会失效。

可以通过 fsfreeze 或创建一个单独的分离卷来绕过这个问题。

APFS(macOS)

./fs/apfs.c

APFS是苹果实现的专有文件系统,已被逆向工程并在本项目中支持,但苹果显著增强了其安全策略。

如果不禁用SIP,你将无法在主磁盘上运行ffs

SIP——系统完整性保护——是一项特殊的安全功能,即使作为root用户也禁止对主磁盘超级块的任何访问。即使使用sudo也无法绕过;你必须禁用该功能(如果你使用了像yabai这样的项目,可能已经禁用了)。

有一种方法可以在不接触主磁盘的情况下测试苹果文件系统上的ffs——你可以直接搜索原始的 .dmg 文件而无需任何提升权限(是的,应用安装程序就是分离卷)。使用ffs,你不需要挂载任何东西,只需提供卷的原始字节路径以及文件系统类型:

root@kitploit:~
ffs "<查询>" /path/to/volume.dmg apfs

在分离卷中搜索

由于ffs直接读取字节,你可以用它搜索任何分离卷而无需将其挂载到文件系统。例如读取 .iso 或 .dmg 文件。

速度

这是最有趣的部分——ffs无法访问VFS/内核文件系统缓存。这就是为什么它在较小(或已缓存)目录上会更慢,但一旦缓存耗尽,内核不得不去读取实际磁盘状态时,它会逐渐变快。

为什么?恰好是为了证明在某个点上内核VFS会成为开销。

以下是在btrfs挂载驱动器上比较 ffs 和 ripgrep 的搜索结果。注意 ripgrep 使用了更先进的基于SIMD的匹配器和文件遍历器,而ffs只是大约1800行C代码。

root@kitploit:~
[repos — 631k个文件]
  ffs |####                                              | 5.505s
  rg  |###                                               | 4.813s

[dev — 1.50M个文件]
  ffs |############                                      | 18.413s
  rg  |#################                                 | 25.673s

[home — 3.25M个文件]
  ffs |########################                          | 36.205s
  rg  |##################################################| 74.690s

用于ripgrep的标志为 -F --no-heading -H -n --no-ignore --hidden --one-file-system --no-messages——这使其输出与ffs相同的结果。

构建项目

编译项目只需要 libzstd(用于btrfs)、openmp(在你的pkg-config中),然后只需:

root@kitploit:~
make ffs
ffs --help
下载工具