如何在已挂载的FAT格式卷中根据LBA地址查询对应文件名
FAT分区LBA转文件名解决方案(支持已挂载卷)
前置准备:LBA转簇号
首先将你采集到的绝对LBA转换为FAT卷内的簇号,可通过fsutil fsinfo volumeinfo <盘符>:(Windows)或blkid+fatinfo(Linux)获取目标卷的扇区大小、保留扇区数、FAT表总大小、每簇扇区数等参数,转换公式如下:
卷内相对扇区号 = 绝对LBA - 分区起始LBA
数据区起始扇区号 = 保留扇区数 + FAT表总大小
簇号 = 2 + (卷内相对扇区号 - 数据区起始扇区号) / 每簇扇区数
Windows平台方案
- 推荐使用开源命令行工具
Cluster2File,直接执行Cluster2File <盘符>: <簇号>即可返回对应簇所属的完整文件名,支持FAT12/16/32、exFAT全系列FAT格式,可直接操作在线已挂载卷,无需卸卷或生成镜像。 - 有二次开发需求的场景可调用Win32 API
FSCTL_GET_RETRIEVAL_POINTERS遍历卷内所有文件的簇映射表,反向匹配目标簇对应的文件。
注:所有操作需要管理员权限执行
Linux平台方案
- 使用
fatcat工具,执行fatcat /dev/<分区块设备名> -c <簇号>即可直接输出对应文件名,工具支持直接读写已挂载的FAT卷,不需要离线操作。 - 也可使用
fatdebug工具,进入交互模式后依次执行icheck <簇号>获取对应inode,再执行ncheck <inode>即可得到完整文件路径。
注:所有操作需要root权限执行
特殊情况说明
如果查询的簇属于FAT表、目录项保留区域或未分配空间,工具会返回无匹配文件的结果,属于正常情况,UEFI层采集的日志通常会包含部分这类系统区域的访问记录。
内容的提问来源于stack exchange,提问作者Radical Ed
相关产品推荐
相关产品推荐

