
Strumento per estrarre il $UsnJrnl da un volume NTFS
Il journal delle modifiche su NTFS è un file situato in $Extend$UsnJrnl. Si tratta di un metafile di sistema che non è possibile trovare in un normale elenco di directory, né tantomeno con mezzi ordinari. I dati rilevanti si trovano nel flusso di dati alternativo chiamato $J. Esiste anche un altro ADS chiamato $Max, piuttosto irrilevante. $J può essere sparso, il che significa che parti dei dati sono solo 00. Questa porzione può rappresentare una parte significativa del totale, e la maggior parte degli strumenti estrae questo flusso di dati nella sua dimensione completa (cosa fastidiosa e un enorme spreco di spazio su disco). È qui che entra in gioco questo strumento, poiché estrae solo i dati effettivi del journal delle modifiche. In questo modo l'estrazione è ovviamente anche più veloce. Perché estrarre 20 GB quando potrebbero bastare 200 MB?
Spiegazione dei parametri /ImageFile: Percorso completo e nome file di un'immagine disco da cui estrarre. Se si usa questo parametro, è obbligatorio impostare /ImageVolume:. Opzionale. /ImageVolume: Numero del volume da cui estrarre. Se il volume non è NTFS, non verrà estratto nulla. Utilizzato solo con /ImageFile:. /DevicePath: Percorso completo del dispositivo da cui estrarre. Opzionale. /OutputPath: Percorso di output in cui estrarre il file. Opzionale. Se omesso, il percorso di estrazione predefinito è la directory del programma. /OutputName: Nome del file di output. Opzionale. Se omesso, il nome file sarà $UsnJrnl_$J.bin.
L'input può quindi essere /ImageFile: o /DevicePath:. Le immagini disco devono essere immagini raw come dd, e devono essere immagini di disco o partizione. Quando si specificano percorsi di dispositivo in /DevicePath, è possibile accedere a dispositivi collegati che non hanno volumi montati. Esempi sono HarddiskVolume1, Harddisk0Partition2, HarddiskVolumeShadowCopy1, PhysicalDrive1. Per PhysicalDriveN è necessario specificare il parametro /ImageVolume. L'impostazione predefinita è estrarre UsnJrnl in $UsnJrnl_$J.bin nella directory del programma. Se il file di output esiste già, quello esistente verrà rinominato con l'aggiunta di "renamed_[timestamp]", dove [timestamp] è l'ora corrente all'esecuzione del programma.
Esempi di utilizzo:
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