从 Mac 上的索引节点获取文件块

Get file's block from inode on Mac

在终端中,我可以使用 stat 命令获取特定文件的索引节点:

>> stat /some/file.txt
41307547

但我不知道如何从中获取有关文件数据块的信息(比如它们的地址)。

不确定是否有办法使用本机命令执行此操作,但我确实很幸运地使用了 SleuthKit。安装后...

加载磁盘映像并获取包含实际文件的分区:

>> mls DiskImage.dd  

      Slot      Start        End          Length       Description  
000:  Meta      0000000000   0000000000   0000000001   Primary Table (#0)  
001:  -------   0000000000   0000000001   0000000002   Unallocated  
002:  000:000   0000000002   0003913663   0003913662   Win95 FAT32 (0x0b)  

数字0000000002是文件的偏移量。使用该偏移量,我们可以读取所有文件的列表及其 inode 值,如有必要:

>> fls -o 2 DiskImage.dd  

r/r 5:  ._.Trashes  
d/d * 6:    _RASHE~1.NRV  
d/d 8:  .Trashes
d/d 10: .fseventsd
d/d 13: .Spotlight-V100
r/r 16: SomeFile.txt

最后,使用我们的分区偏移量和 inode 编号,使用 istat 获取文件所有扇区的列表:

>> istat -o 2 DiskImage.dd 16

Directory Entry: 16
Allocated
File Attributes: File, Archive
Size: 158184
Name: SomeFile.txt

Directory Entry Times:
Written:    2015-10-26 15:57:04 (EDT)
Accessed:   2015-11-01 00:00:00 (EDT)
Created:    2015-10-20 20:37:17 (EDT)

Sectors:
1282198 1282199 1282200 1282201 1282202 1282203 1282204 1282205 
1282206 1282207 1282208 1282209 1282210 1282211 1282212 1282213 
1282214 1282215 1282216 1282217 1282218 1282219 1282220 1282221 
1282222 1282223 1282224 1282225 1282226 1282227 1282228 1282229 
1282230 1282231 1282232 1282233 1282234 1282235 1282236 1282237 
1282238 1282239 1282240 1282241 1282242 1282243 1282244 1282245 
1282246 1282247 1282248 1282249 1282250 1282251 1282252 1282253 
1282254 1282255 1282256 1282257 1282258 1282259 1282260 1282261 
1282262 1282263 1282264 1282265 1282266 1282267 1282268 1282269
...