NTFS 上的变更日志位于 $Extend$UsnJrnl 文件中。它是一个系统元文件,无法通过普通的目录列出找到,甚至常规手段也无法访问。相关数据位于名为 $J 的备用数据流中。还有一个名为 $Max 的 ADS,但它不太重要。$J 可能是稀疏的,这意味着数据的一部分只是 00。这可能占总数据的很大一部分,大多数工具会以完整大小提取这个数据流(这很烦人且严重浪费磁盘空间)。这就是这个工具发挥作用的地方,因为它只提取变更日志的实际数据。这样提取速度显然也更快。为什么要提取 20 GB,而你可能只需要 200 MB?
参数说明 /ImageFile: 要提取的镜像文件的完整路径和文件名。如果使用此参数,则必须同时设置 /ImageVolume:。可选。 /ImageVolume: 要提取的卷编号。如果卷不是 NTFS,则不会提取任何内容。仅与 /ImageFile: 一起使用。 /DevicePath: 要提取的完整设备路径。可选。 /OutputPath: 文件提取的输出路径。可选。如果省略,则提取路径默认为程序目录。 /OutputName: 输出文件名。可选。如果省略,则文件名为 $UsnJrnl_$J.bin。
因此输入可以是 /ImageFile: 或 /DevicePath:。镜像文件必须是原始 dd 类型的镜像,并且是磁盘或分区类型的镜像。当在 /DevicePath 中指定设备路径时,可以访问没有挂载任何卷的已连接设备。例如 HarddiskVolume1、Harddisk0Partition2、HarddiskVolumeShadowCopy1、PhysicalDrive1。对于 PhysicalDriveN,必须指定 /ImageVolume 参数。默认情况下,UsnJrnl 会被提取到程序目录下的 $UsnJrnl_$J.bin。如果输出文件名已存在,现有文件会被重命名,并附加 "renamed_[timestamp]",其中 [timestamp] 是程序运行时的当前时间。
使用示例:
ExtractUsnJrnl /ImageFile:e:\images\disk.dd /ImageVolume:1 /OutputPath:e:\temp /OutputName:UsnJrnl_vol1.bin ExtractUsnJrnl /DevicePath:c: ExtractUsnJrnl /DevicePath:\.\HarddiskVolumeShadowCopy1 /OutputPath:e:\temp /OutputName:UsnJrnl_SC1.bin ExtractUsnJrnl /DevicePath:\.\Harddisk0Partition2 /OutputPath:e:\temp ExtractUsnJrnl /DevicePath:\.\PhysicalDrive0 /ImageVolume:3 /OutputPath:e:\temp